From 8d12d6a5474b75735d4a6bb25b54bdce55f4ff1b Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Mon, 23 Oct 2017 21:54:40 +0200 Subject: [PATCH] allow specifying a custom startup directory (fixes #223) --- .../terminalSettingsTab.component.pug | 76 +++++++++++-------- terminus-terminal/src/config.ts | 1 + .../src/services/terminal.service.ts | 8 +- terminus-terminal/src/shells/wsl.ts | 5 +- 4 files changed, 54 insertions(+), 36 deletions(-) diff --git a/terminus-terminal/src/components/terminalSettingsTab.component.pug b/terminus-terminal/src/components/terminalSettingsTab.component.pug index 7df122ee..3b702c24 100644 --- a/terminus-terminal/src/components/terminalSettingsTab.component.pug +++ b/terminus-terminal/src/components/terminalSettingsTab.component.pug @@ -247,6 +247,15 @@ (ngModelChange)='config.save()', ) + .form-group + label Working directory + input.form-control( + type='text', + placeholder='Home directory', + '[(ngModel)]'='config.store.terminal.workingDirectory', + (ngModelChange)='config.save()', + ) + .d-flex .form-group.mr-3 label Terminal bell @@ -301,37 +310,38 @@ ) | On - .form-group - label Session persistence - select.form-control( - '[(ngModel)]'='config.store.terminal.persistence', - (ngModelChange)='config.save()', - ) - option([ngValue]='null') Off - option( - *ngFor='let provider of persistenceProviders', - [ngValue]='provider.id' - ) {{provider.displayName}} + .d-flex + .form-group.mr-3(*ngIf='persistenceProviders.length > 0') + label Session persistence + select.form-control( + '[(ngModel)]'='config.store.terminal.persistence', + (ngModelChange)='config.save()', + ) + option([ngValue]='null') Off + option( + *ngFor='let provider of persistenceProviders', + [ngValue]='provider.id' + ) {{provider.displayName}} - .form-group - label Auto-open a terminal on app start - br - .btn-group( - '[(ngModel)]'='config.store.terminal.autoOpen', - (ngModelChange)='config.save()', - ngbRadioGroup - ) - label.btn.btn-secondary(ngbButtonLabel) - input( - type='radio', - ngbButton, - [value]='false' - ) - | Off - label.btn.btn-secondary(ngbButtonLabel) - input( - type='radio', - ngbButton, - [value]='true' - ) - | On + .form-group + label Auto-open a terminal on app start + br + .btn-group( + '[(ngModel)]'='config.store.terminal.autoOpen', + (ngModelChange)='config.save()', + ngbRadioGroup + ) + label.btn.btn-secondary(ngbButtonLabel) + input( + type='radio', + ngbButton, + [value]='false' + ) + | Off + label.btn.btn-secondary(ngbButtonLabel) + input( + type='radio', + ngbButton, + [value]='true' + ) + | On diff --git a/terminus-terminal/src/config.ts b/terminus-terminal/src/config.ts index bde73fe6..b57691f4 100644 --- a/terminus-terminal/src/config.ts +++ b/terminus-terminal/src/config.ts @@ -13,6 +13,7 @@ export class TerminalConfigProvider extends ConfigProvider { cursor: 'block', cursorBlink: true, customShell: '', + workingDirectory: '', colorScheme: { __nonStructural: true, name: 'Material', diff --git a/terminus-terminal/src/services/terminal.service.ts b/terminus-terminal/src/services/terminal.service.ts index 5fd38cf7..8cd09773 100644 --- a/terminus-terminal/src/services/terminal.service.ts +++ b/terminus-terminal/src/services/terminal.service.ts @@ -33,8 +33,12 @@ export class TerminalService { } async openTab (shell?: IShell, cwd?: string): Promise { - if (!cwd && this.app.activeTab instanceof TerminalTabComponent) { - cwd = await this.app.activeTab.session.getWorkingDirectory() + if (!cwd) { + if (this.app.activeTab instanceof TerminalTabComponent) { + cwd = await this.app.activeTab.session.getWorkingDirectory() + } else { + cwd = this.config.store.terminal.workingDirectory || null + } } if (!shell) { let shells = await this.shells$.toPromise() diff --git a/terminus-terminal/src/shells/wsl.ts b/terminus-terminal/src/shells/wsl.ts index 65980f53..bed431e0 100644 --- a/terminus-terminal/src/shells/wsl.ts +++ b/terminus-terminal/src/shells/wsl.ts @@ -25,7 +25,10 @@ export class WSLShellProvider extends ShellProvider { return [{ id: 'wsl', name: 'Bash on Windows', - command: wslPath + command: wslPath, + env: { + TERM: 'xterm-color', + } }] } } -- GitLab