mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-23 08:47:47 +02:00
Make set of excluded env vars for clone re-useable
This commit is contained in:
@@ -972,6 +972,42 @@ class EditCmd:
|
|||||||
window.write_to_child('KITTY_DATA_END\n')
|
window.write_to_child('KITTY_DATA_END\n')
|
||||||
|
|
||||||
|
|
||||||
|
@run_once
|
||||||
|
def excluded_env_vars() -> frozenset[str]:
|
||||||
|
return frozenset({
|
||||||
|
'HOME', 'LOGNAME', 'USER', 'PWD',
|
||||||
|
# some people export these. We want the shell rc files to recreate them
|
||||||
|
'PS0', 'PS1', 'PS2', 'PS3', 'PS4', 'RPS1', 'PROMPT_COMMAND', 'SHLVL',
|
||||||
|
# conda state env vars
|
||||||
|
'CONDA_SHLVL', 'CONDA_PREFIX', 'CONDA_PROMPT_MODIFIER', 'CONDA_EXE', 'CONDA_PYTHON_EXE', '_CE_CONDA', '_CE_M',
|
||||||
|
# skip SSH environment variables
|
||||||
|
'SSH_CLIENT', 'SSH_CONNECTION', 'SSH_ORIGINAL_COMMAND', 'SSH_TTY', 'SSH2_TTY',
|
||||||
|
'SSH_TUNNEL', 'SSH_USER_AUTH', 'SSH_AUTH_SOCK',
|
||||||
|
# Dont clone KITTY_WINDOW_ID
|
||||||
|
'KITTY_WINDOW_ID',
|
||||||
|
# Bash variables from "bind -x" and "complete -C" (needed not to confuse bash-preexec)
|
||||||
|
'READLINE_ARGUMENT', 'READLINE_LINE', 'READLINE_MARK', 'READLINE_POINT',
|
||||||
|
'COMP_LINE', 'COMP_POINT', 'COMP_TYPE',
|
||||||
|
# GPG gpg-agent
|
||||||
|
'GPG_TTY',
|
||||||
|
# Session variables of XDG
|
||||||
|
'XDG_SESSION_CLASS', 'XDG_SESSION_ID', 'XDG_SESSION_TYPE',
|
||||||
|
# Session variables of GNU Screen
|
||||||
|
'STY', 'WINDOW',
|
||||||
|
# Session variables of interactive shell plugins
|
||||||
|
'ATUIN_SESSION', 'ATUIN_HISTORY_ID',
|
||||||
|
'BLE_SESSION_ID', '_ble_util_fdlist_cloexec', '_ble_util_fdvars_export',
|
||||||
|
'_GITSTATUS_CLIENT_PID', '_GITSTATUS_REQ_FD', '_GITSTATUS_RESP_FD', 'GITSTATUS_DAEMON_PID',
|
||||||
|
'MCFLY_SESSION_ID',
|
||||||
|
'STARSHIP_SESSION_KEY',
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
def is_excluded_env_var(x: str) -> bool:
|
||||||
|
# conda state env vars for multi-level virtual environments CONDA_PREFIX_*
|
||||||
|
return x in excluded_env_vars() or x.startswith('CONDA_PREFIX_')
|
||||||
|
|
||||||
|
|
||||||
class CloneCmd:
|
class CloneCmd:
|
||||||
|
|
||||||
def __init__(self, msg: str) -> None:
|
def __init__(self, msg: str) -> None:
|
||||||
@@ -1002,36 +1038,7 @@ class CloneCmd:
|
|||||||
env = parse_bash_env(v, self.bash_version)
|
env = parse_bash_env(v, self.bash_version)
|
||||||
else:
|
else:
|
||||||
env = parse_null_env(v)
|
env = parse_null_env(v)
|
||||||
self.env = {k: v for k, v in env.items() if k not in {
|
self.env = {k: v for k, v in env.items() if not is_excluded_env_var(k)}
|
||||||
'HOME', 'LOGNAME', 'USER', 'PWD',
|
|
||||||
# some people export these. We want the shell rc files to recreate them
|
|
||||||
'PS0', 'PS1', 'PS2', 'PS3', 'PS4', 'RPS1', 'PROMPT_COMMAND', 'SHLVL',
|
|
||||||
# conda state env vars
|
|
||||||
'CONDA_SHLVL', 'CONDA_PREFIX', 'CONDA_PROMPT_MODIFIER', 'CONDA_EXE', 'CONDA_PYTHON_EXE', '_CE_CONDA', '_CE_M',
|
|
||||||
# skip SSH environment variables
|
|
||||||
'SSH_CLIENT', 'SSH_CONNECTION', 'SSH_ORIGINAL_COMMAND', 'SSH_TTY', 'SSH2_TTY',
|
|
||||||
'SSH_TUNNEL', 'SSH_USER_AUTH', 'SSH_AUTH_SOCK',
|
|
||||||
# Dont clone KITTY_WINDOW_ID
|
|
||||||
'KITTY_WINDOW_ID',
|
|
||||||
# Bash variables from "bind -x" and "complete -C" (needed not to confuse bash-preexec)
|
|
||||||
'READLINE_ARGUMENT', 'READLINE_LINE', 'READLINE_MARK', 'READLINE_POINT',
|
|
||||||
'COMP_LINE', 'COMP_POINT', 'COMP_TYPE',
|
|
||||||
# GPG gpg-agent
|
|
||||||
'GPG_TTY',
|
|
||||||
# Session variables of XDG
|
|
||||||
'XDG_SESSION_CLASS', 'XDG_SESSION_ID', 'XDG_SESSION_TYPE',
|
|
||||||
# Session variables of GNU Screen
|
|
||||||
'STY', 'WINDOW',
|
|
||||||
# Session variables of interactive shell plugins
|
|
||||||
'ATUIN_SESSION', 'ATUIN_HISTORY_ID',
|
|
||||||
'BLE_SESSION_ID', '_ble_util_fdlist_cloexec', '_ble_util_fdvars_export',
|
|
||||||
'_GITSTATUS_CLIENT_PID', '_GITSTATUS_REQ_FD', '_GITSTATUS_RESP_FD', 'GITSTATUS_DAEMON_PID',
|
|
||||||
'MCFLY_SESSION_ID',
|
|
||||||
'STARSHIP_SESSION_KEY',
|
|
||||||
} and not k.startswith((
|
|
||||||
# conda state env vars for multi-level virtual environments
|
|
||||||
'CONDA_PREFIX_',
|
|
||||||
))}
|
|
||||||
elif k == 'cwd':
|
elif k == 'cwd':
|
||||||
self.cwd = v
|
self.cwd = v
|
||||||
elif k == 'history':
|
elif k == 'history':
|
||||||
|
|||||||
Reference in New Issue
Block a user