Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/config/config-default.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@ module.exports = {
// set to true to enable screen reading apps (like NVDA) to read the contents of the terminal
screenReaderMode: false,

// set to true to preserve working directory when creating splits or tabs
preserveCWD: true,

// for advanced config flags please refer to https://hyper.is/#cfg
},

Expand Down
2 changes: 1 addition & 1 deletion app/menus/menus/window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default (
execCommand: (command: string, focusedWindow?: BrowserWindow) => void
): MenuItemConstructorOptions => {
// Generating tab:jump array
const tabJump = [];
const tabJump: MenuItemConstructorOptions[] = [];
for (let i = 1; i <= 9; i++) {
// 9 is a special number because it means 'last'
const label = i === 9 ? 'Last' : `${i}`;
Expand Down
1 change: 1 addition & 0 deletions app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"lodash": "4.17.21",
"mkdirp": "1.0.4",
"ms": "2.1.3",
"native-process-working-directory": "^1.0.2",
"node-pty": "0.10.1",
"os-locale": "5.0.0",
"parse-url": "5.0.7",
Expand Down
2 changes: 1 addition & 1 deletion app/plugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ function toDependencies(plugins_: {plugins: string[]}) {

if (match) {
const index = match.index + 1;
const pieces = [];
const pieces: string[] = [];

pieces[0] = plugin.substring(0, index);
pieces[1] = plugin.substring(index + 1, plugin.length);
Expand Down
3 changes: 2 additions & 1 deletion app/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"extends": "../tsconfig.base.json",
"compilerOptions": {
"declarationDir": "../dist/tmp/appdts/",
"outDir": "../target/"
"outDir": "../target/",
"noImplicitAny": false
},
"include": [
"./**/*",
Expand Down
17 changes: 15 additions & 2 deletions app/ui/window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ import {execCommand} from '../commands';
import {setRendererType, unsetRendererType} from '../utils/renderer-utils';
import {decorateSessionOptions, decorateSessionClass} from '../plugins';
import {enable as remoteEnable} from '@electron/remote/main';
import {configOptions} from '../../lib/config';
import {getWorkingDirectoryFromPID} from 'native-process-working-directory';

export function newWindow(
options_: BrowserWindowConstructorOptions,
cfg: any,
cfg: configOptions,
fn?: (win: BrowserWindow) => void
): BrowserWindow {
const classOpts = Object.assign({uid: uuidv4()});
Expand Down Expand Up @@ -128,10 +130,21 @@ export function newWindow(
if (extraOptions[key] !== undefined) extraOptionsFiltered[key] = extraOptions[key];
});

let cwd = '';
if (cfg.preserveCWD === undefined || cfg.preserveCWD) {
const activePID = extraOptionsFiltered.activeUid && sessions.get(extraOptionsFiltered.activeUid)?.pty?.pid;
try {
cwd = activePID && getWorkingDirectoryFromPID(activePID);
} catch (error) {
console.error(error);
}
cwd = cwd && isAbsolute(cwd) ? cwd : '';
}

// remove the rows and cols, the wrong value of them will break layout when init create
const defaultOptions = Object.assign(
{
cwd: workingDirectory,
cwd: cwd || workingDirectory,
splitDirection: undefined,
shell: cfg.shell,
shellArgs: cfg.shellArgs && Array.from(cfg.shellArgs)
Expand Down
12 changes: 12 additions & 0 deletions app/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -441,13 +441,25 @@ nan@^2.14.0:
resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==

native-process-working-directory@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/native-process-working-directory/-/native-process-working-directory-1.0.2.tgz#7843e2fa1490f53cf8d2c7d1913de8b275e8b89a"
integrity sha512-3a67QQV8r3YMUTSOgvtMOCjPDgCpb/8xjv93L8Cqb8bv3hOKsWis4/+8HCu3bgj8ADQV75SCYFSsAGM5G0cXmQ==
dependencies:
node-addon-api "^3.1.0"

[email protected]:
version "1.0.0"
resolved "https://registry.npmjs.org/native-reg/-/native-reg-1.0.0.tgz#77f9acbf59eda02680c00b0b1b9d1e0078b7820d"
integrity sha512-MxukmqY7jOeiS9+b4TAlfG9cvaQ03oLET35nUGYGHDRcLx0NFk7eeoWqX4wAXaFiMW50ZiFalOA6W8q3fprcsw==
dependencies:
node-gyp-build "4"

node-addon-api@^3.1.0:
version "3.2.1"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==

node-gyp-build@4:
version "4.3.0"
resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
Expand Down
4 changes: 2 additions & 2 deletions lib/actions/term-groups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ export function requestTermGroup(activeUid: string) {
dispatch({
type: TERM_GROUP_REQUEST,
effect: () => {
const {ui} = getState();
const {ui, sessions} = getState();
const {cwd} = ui;
rpc.emit('new', {
isNewGroup: true,
cwd,
activeUid
activeUid: activeUid ? activeUid : sessions.activeUid
});
}
});
Expand Down
2 changes: 2 additions & 0 deletions lib/config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export type configOptions = {
cmdIsMeta: boolean;
};
padding: string;
preserveCWD: boolean;
quickEdit: boolean;
screenReaderMode: boolean;
scrollback: number;
Expand All @@ -65,6 +66,7 @@ export type configOptions = {
webGLRenderer: boolean;
webLinksActivationKey: 'ctrl' | 'alt' | 'meta' | 'shift';
windowSize: [number, number];
workingDirectory: string;
};

export type rawConfig = {
Expand Down