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 5563305

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

File tree

1 file changed

+46
-6
lines changed

1 file changed

+46
-6
lines changed

‎src/Native/Linux.cs

Lines changed: 46 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,17 @@ private string FindExecutable(string filename)
128129
return test;
129130
}
130131

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

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

0 commit comments

Comments
(0)

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