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 @@ - BrandVisualStudioWin2019 \ 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) }