Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cf819b8

Browse files
enhance: support tools installed via flatpak
1 parent aec5cab commit cf819b8

File tree

1 file changed

+45
-6
lines changed

1 file changed

+45
-6
lines changed

‎src/Native/Linux.cs

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,14 @@ public string FindTerminal(Models.ShellOrTerminal shell)
4949
public List<Models.ExternalTool> FindExternalTools()
5050
{
5151
var finder = new Models.ExternalToolsFinder();
52-
finder.VSCode(() => FindExecutable("code"));
53-
finder.VSCodeInsiders(() => FindExecutable("code-insiders"));
54-
finder.VSCodium(() => FindExecutable("codium"));
52+
finder.VSCode(() => FindExecutable("code","com.visualstudio.code"));
53+
finder.VSCodeInsiders(() => FindExecutable("code-insiders","com.vscodium.codium-insiders"));
54+
finder.VSCodium(() => FindExecutable("codium","com.vscodium.codium"));
5555
finder.Fleet(FindJetBrainsFleet);
5656
finder.FindJetBrainsFromToolbox(() => $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/JetBrains/Toolbox");
57-
finder.SublimeText(() => FindExecutable("subl"));
58-
finder.Zed(() => FindExecutable("zeditor"));
57+
FindJetBrainsFromFlatpak(finder);
58+
finder.SublimeText(() => FindExecutable("subl", "com.sublimetext.three"));
59+
finder.Zed(() => FindExecutable("zeditor", "dev.zed.Zed"));
5960
return finder.Founded;
6061
}
6162

@@ -117,7 +118,7 @@ public void OpenWithDefaultEditor(string file)
117118
}
118119
}
119120

120-
private string FindExecutable(string filename)
121+
private string FindExecutable(string filename,stringflatpakAppId=null)
121122
{
122123
var pathVariable = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
123124
var paths = pathVariable.Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries);
@@ -128,6 +129,16 @@ private string FindExecutable(string filename)
128129
return test;
129130
}
130131

132+
if (flatpakAppId != null)
133+
{
134+
foreach (var path in new[] { "/var/lib", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) })
135+
{
136+
var test = Path.Combine(path, "flatpak/exports/bin", flatpakAppId);
137+
if (File.Exists(test))
138+
return test;
139+
}
140+
}
141+
131142
return string.Empty;
132143
}
133144

@@ -136,5 +147,33 @@ private string FindJetBrainsFleet()
136147
var path = $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/JetBrains/Toolbox/apps/fleet/bin/Fleet";
137148
return File.Exists(path) ? path : FindExecutable("fleet");
138149
}
150+
151+
private static void FindJetBrainsFromFlatpak(Models.ExternalToolsFinder finder)
152+
{
153+
foreach (var basePath in new[] { "/var/lib", Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) })
154+
{
155+
var binPath = Path.Combine(basePath, "flatpak/exports/bin");
156+
if (Directory.Exists(binPath))
157+
{
158+
foreach (var file in Directory.GetFiles(binPath, "com.jetbrains.*"))
159+
{
160+
var fileName = Path.GetFileName(file);
161+
var appName = fileName[14..].Replace("-", " ");
162+
var icon = new string(Array.FindAll(fileName.ToCharArray(), char.IsUpper));
163+
if (icon.Length > 2)
164+
icon = icon[..2];
165+
icon = icon switch
166+
{
167+
"DG" => "DB", // DataGrip
168+
"GL" => "GO", // GoLand
169+
"IJ" => "JB", // IntelliJ
170+
"R" => "RD", // Rider
171+
_ => icon
172+
};
173+
finder.Founded.Add(new Models.ExternalTool(appName, "JetBrains/" + icon, file));
174+
}
175+
}
176+
}
177+
}
139178
}
140179
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /