diff --git a/tabby-local/src/icons/alma.svg b/tabby-local/src/icons/alma.svg
new file mode 100644
index 00000000..19553471
--- /dev/null
+++ b/tabby-local/src/icons/alma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/git-bash.svg b/tabby-local/src/icons/git-bash.svg
index 1e5fe9ce..10047816 100644
--- a/tabby-local/src/icons/git-bash.svg
+++ b/tabby-local/src/icons/git-bash.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/tabby-local/src/icons/kali.svg b/tabby-local/src/icons/kali.svg
new file mode 100644
index 00000000..d73f67e4
--- /dev/null
+++ b/tabby-local/src/icons/kali.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/linux.svg b/tabby-local/src/icons/linux.svg
index e87a111f..ba60f611 100644
--- a/tabby-local/src/icons/linux.svg
+++ b/tabby-local/src/icons/linux.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/tabby-local/src/icons/open-euler.svg b/tabby-local/src/icons/open-euler.svg
new file mode 100644
index 00000000..a0966388
--- /dev/null
+++ b/tabby-local/src/icons/open-euler.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/oracle-linux.svg b/tabby-local/src/icons/oracle-linux.svg
new file mode 100644
index 00000000..0528eb20
--- /dev/null
+++ b/tabby-local/src/icons/oracle-linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/powershell-core.svg b/tabby-local/src/icons/powershell-core.svg
index a25a0f65..044e2821 100644
--- a/tabby-local/src/icons/powershell-core.svg
+++ b/tabby-local/src/icons/powershell-core.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/powershell.svg b/tabby-local/src/icons/powershell.svg
index 91e335e5..5bef6336 100644
--- a/tabby-local/src/icons/powershell.svg
+++ b/tabby-local/src/icons/powershell.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/vs.svg b/tabby-local/src/icons/vs.svg
deleted file mode 100644
index e7ae716d..00000000
--- a/tabby-local/src/icons/vs.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/tabby-local/src/icons/vs2017.svg b/tabby-local/src/icons/vs2017.svg
new file mode 100644
index 00000000..421fe0ff
--- /dev/null
+++ b/tabby-local/src/icons/vs2017.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/vs2019.svg b/tabby-local/src/icons/vs2019.svg
new file mode 100644
index 00000000..3fd566d0
--- /dev/null
+++ b/tabby-local/src/icons/vs2019.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/icons/vs2022.svg b/tabby-local/src/icons/vs2022.svg
new file mode 100644
index 00000000..699f27bb
--- /dev/null
+++ b/tabby-local/src/icons/vs2022.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tabby-local/src/shells/gitBash.ts b/tabby-local/src/shells/gitBash.ts
index 60846fb2..bba50edd 100644
--- a/tabby-local/src/shells/gitBash.ts
+++ b/tabby-local/src/shells/gitBash.ts
@@ -36,7 +36,7 @@ export class GitBashShellProvider extends ShellProvider {
return [{
id: 'git-bash',
- name: 'Git-Bash',
+ name: 'Git Bash',
command: path.join(gitBashPath, 'bin', 'bash.exe'),
args: ['--login', '-i'],
icon: require('../icons/git-bash.svg'),
diff --git a/tabby-local/src/shells/vs.ts b/tabby-local/src/shells/vs.ts
index 78f3b874..d0a399ad 100644
--- a/tabby-local/src/shells/vs.ts
+++ b/tabby-local/src/shells/vs.ts
@@ -5,6 +5,14 @@ import { HostAppService, Platform } from 'tabby-core'
import { ShellProvider, Shell } from '../api'
+/* eslint-disable quote-props */
+const vsIconMap: Record = {
+ '2017': require('../icons/vs2017.svg'),
+ '2019': require('../icons/vs2019.svg'),
+ '2022': require('../icons/vs2022.svg'),
+}
+/* eslint-enable quote-props */
+
/** @hidden */
@Injectable()
export class VSDevToolsProvider extends ShellProvider {
@@ -19,30 +27,32 @@ export class VSDevToolsProvider extends ShellProvider {
return []
}
- const parentPath = path.join(process.env['programfiles(x86)'] ?? 'C:\\Program Files (x86', 'Microsoft Visual Studio')
-
- try {
- await fs.stat(parentPath)
- } catch {
- return []
- }
+ const x86ParentPath = path.join(process.env['programfiles(x86)'] ?? 'C:\\Program Files (x86)', 'Microsoft Visual Studio')
+ const x64ParentPath = path.join(process.env['programfiles'] ?? 'C:\\Program Files', 'Microsoft Visual Studio')
const result: Shell[] = []
- for (const version of await fs.readdir(parentPath)) {
- const bat = path.join(parentPath, version, 'Community\\Common7\\Tools\\VsDevCmd.bat')
+ for (const parentPath of [x86ParentPath, x64ParentPath]) {
try {
- await fs.stat(bat)
- } catch {
- continue
+ await fs.stat(parentPath)
+ for (const version of await fs.readdir(parentPath)) {
+ const bat = path.join(parentPath, version, 'Community\\Common7\\Tools\\VsDevCmd.bat')
+ try {
+ await fs.stat(bat)
+ } catch {
+ continue
+ }
+ result.push({
+ id: `vs-cmd-${version}`,
+ name: `Developer Prompt for VS ${version}`,
+ command: 'cmd.exe',
+ args: ['/k', bat],
+ icon: vsIconMap[version],
+ env: {},
+ })
+ }
+ } catch (_) {
+ // Ignore
}
- result.push({
- id: `vs-cmd-${version}`,
- name: `Developer Prompt for VS ${version}`,
- command: 'cmd.exe',
- args: ['/k', bat],
- icon: require('../icons/vs.svg'),
- env: {},
- })
}
return result
diff --git a/tabby-local/src/shells/wsl.ts b/tabby-local/src/shells/wsl.ts
index 048fed5b..ab8ad985 100644
--- a/tabby-local/src/shells/wsl.ts
+++ b/tabby-local/src/shells/wsl.ts
@@ -18,12 +18,17 @@ try {
const wslIconMap: Record = {
'Alpine': require('../icons/alpine.svg'),
'Debian': require('../icons/debian.svg'),
- 'kali-linux': require('../icons/linux.svg'),
+ 'kali-linux': require('../icons/kali.svg'),
'SLES-12': require('../icons/suse.svg'),
'openSUSE-Leap-15-1': require('../icons/suse.svg'),
'Ubuntu-16.04': require('../icons/ubuntu.svg'),
'Ubuntu-18.04': require('../icons/ubuntu.svg'),
+ 'Ubuntu-22.04': require('../icons/ubuntu.svg'),
'Ubuntu': require('../icons/ubuntu.svg'),
+ 'AlmaLinux-8': require('../icons/alma.svg'),
+ 'OracleLinux_7_9': require('../icons/oracle-linux.svg'),
+ 'OracleLinux_8_5': require('../icons/oracle-linux.svg'),
+ 'openEuler': require('../icons/open-euler.svg'),
'Linux': require('../icons/linux.svg'),
'docker-desktop': require('../icons/docker.svg'),
'docker-desktop-data': require('../icons/docker.svg'),
@@ -62,7 +67,8 @@ export class WSLShellProvider extends ShellProvider {
TERM: 'xterm-color',
COLORTERM: 'truecolor',
},
- icon: wslIconMap[defaultDistKey.DistributionName.value],
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+ icon: wslIconMap[defaultDistKey.DistributionName.value] ?? wslIconMap.Linux,
}
shells.push(shell)
}
@@ -103,7 +109,8 @@ export class WSLShellProvider extends ShellProvider {
TERM: 'xterm-color',
COLORTERM: 'truecolor',
},
- icon: wslIconMap[name],
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+ icon: wslIconMap[name] ?? wslIconMap.Linux,
}
shells.push(shell)
}