From 96a2dc93814be2b0647ee827be6f1c3c9e22ba70 Mon Sep 17 00:00:00 2001 From: ViViDboarder Date: Fri, 23 Oct 2020 11:45:34 -0700 Subject: [PATCH] Improve color detection over ssh --- assets/default/bin/derive_colors.py | 23 +++++++++++++++++- assets/default/fish/init/env.fish | 37 ++++++++++++++++------------- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/assets/default/bin/derive_colors.py b/assets/default/bin/derive_colors.py index 8737aef..587c97b 100755 --- a/assets/default/bin/derive_colors.py +++ b/assets/default/bin/derive_colors.py @@ -1,6 +1,7 @@ #! /usr/bin/env python3 import argparse import os +import sys import textwrap from subprocess import Popen, PIPE, check_output from typing import Tuple @@ -42,6 +43,17 @@ def get_terminal_profile(force=False): if not force and TERM_VAR in os.environ: return os.environ[TERM_VAR] + # If over SSH, quit. Colorschemes should instead be forwarded + if is_ssh(): + print( + ("Warning: Cannot derive colors. " + "SSH sessions won't allow detecting the terminal profile." + f" Instead forward {TERM_VAR} from your source machine."), + file=sys.stderr, + ) + exit(0) + + term_program = os.environ.get("TERM_PROGRAM") if term_program == "Apple_Terminal": tty = check_output(["tty"]).strip() @@ -53,7 +65,10 @@ def get_terminal_profile(force=False): raise SystemError("Could not get results from applescript") return stdout elif term_program == "iTerm.app": - return os.environ["ITERM_PROFILE"] + if "ITERM_PROFILE" in os.environ: + return os.environ["ITERM_PROFILE"] + else: + raise ValueError("Using iTerm but no profile found") elif term_program == "Alacritty": return "Alacritty" @@ -202,6 +217,12 @@ def print_env(var: str, val: str, export=False, fish=False): print(f'set -g {var} "{val}";') +def is_ssh() -> bool: + if os.environ.get("SSH_TTY"): + return True + return False + + if __name__ == "__main__": args = parse_args() if args.print_term: diff --git a/assets/default/fish/init/env.fish b/assets/default/fish/init/env.fish index 47a8d08..5e60db0 100644 --- a/assets/default/fish/init/env.fish +++ b/assets/default/fish/init/env.fish @@ -6,21 +6,24 @@ set -gx XDG_CACHE_HOME "$HOME/.cache" # Increase memory sizes for java using Ant set -gx ANT_OPTS "-Xmx2048m -Xms512m" -# FZF -if type -q rg - set -gx FZF_DEFAULT_COMMAND 'rg --files' - # set -gx FZF_DEFAULT_COMMAND 'rg --files --no-ignore-vcs --hidden' -else if type -q ag - set -gx FZF_DEFAULT_COMMAND 'ag -g ""' -end -if [ -n "$FZF_DEFAULT_COMMAND" ] - set -gx FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND \$dir" -end -set -gx FZF_DEFAULT_OPTS " ---preview-window=:hidden ---preview='__fzf_preview {}' ---bind '?:toggle-preview' -" +# Interractive env variables +if status --is-interactive + # FZF + if type -q rg + set -gx FZF_DEFAULT_COMMAND 'rg --files' + # set -gx FZF_DEFAULT_COMMAND 'rg --files --no-ignore-vcs --hidden' + else if type -q ag + set -gx FZF_DEFAULT_COMMAND 'ag -g ""' + end + if [ -n "$FZF_DEFAULT_COMMAND" ] + set -gx FZF_CTRL_T_COMMAND "$FZF_DEFAULT_COMMAND \$dir" + end + set -gx FZF_DEFAULT_OPTS " + --preview-window=:hidden + --preview='__fzf_preview {}' + --bind '?:toggle-preview' + " -# Export colors -eval ($HOME/bin/derive_colors.py --export --fish) + # Export colors + eval ($HOME/bin/derive_colors.py --export --fish) +end