mirror of
https://github.com/ViViDboarder/shoestrap.git
synced 2024-11-24 22:36:33 +00:00
Add setting of fish theme and add wombat theme
This commit is contained in:
parent
a75ef60330
commit
87c1191113
@ -6,13 +6,13 @@ import os
|
||||
import sys
|
||||
import textwrap
|
||||
from subprocess import PIPE, Popen, check_output
|
||||
from typing import Tuple
|
||||
|
||||
from typing import Optional, Tuple
|
||||
|
||||
TERM_VAR = "TERM_PROFILE"
|
||||
VIM_VAR = "VIM_COLOR"
|
||||
NVIM_VAR = "NVIM_COLOR"
|
||||
BAT_VAR = "BAT_THEME"
|
||||
FISH_VAR = "FISH_THEME"
|
||||
TERMINAL_SETTINGS_SCRIPT = """
|
||||
set current_tty to "{}"
|
||||
tell application "Terminal"
|
||||
@ -158,6 +158,33 @@ def get_bat_theme(terminal_profile: str, force_dark=False, force=False) -> str:
|
||||
return bat_theme
|
||||
|
||||
|
||||
def get_fish_theme(
|
||||
terminal_profile: str,
|
||||
force_dark=False,
|
||||
force=False,
|
||||
) -> Optional[str]:
|
||||
"""Returns the best matched fish theme for the terminal"""
|
||||
if not force and FISH_VAR in os.environ:
|
||||
return os.environ[FISH_VAR]
|
||||
|
||||
# Determine if this is a dark theme
|
||||
is_dark = force_dark or "dark" in terminal_profile.lower()
|
||||
|
||||
fish_theme: Optional[str] = None
|
||||
|
||||
if "Wombat" in terminal_profile:
|
||||
fish_theme = "wombat"
|
||||
elif terminal_profile == "Alacritty":
|
||||
fish_theme = "wombat"
|
||||
elif "Solarized" in terminal_profile:
|
||||
if is_dark:
|
||||
fish_theme = "solarized dark"
|
||||
else:
|
||||
fish_theme = "solarized light"
|
||||
|
||||
return fish_theme
|
||||
|
||||
|
||||
def parse_args(**args) -> argparse.Namespace:
|
||||
"""Parse and return args from the terminal"""
|
||||
parser = argparse.ArgumentParser(
|
||||
@ -205,6 +232,11 @@ def parse_args(**args) -> argparse.Namespace:
|
||||
action="store_true",
|
||||
help="Print only the value of the bat theme",
|
||||
)
|
||||
group.add_argument(
|
||||
"--print-fish",
|
||||
action="store_true",
|
||||
help="Print only the value of the fish theme",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--force",
|
||||
action="store_true",
|
||||
@ -250,6 +282,15 @@ def print_all_env(force=False, force_dark=False, export=False, fish=False):
|
||||
bat_theme = get_bat_theme(term_profile, force_dark=force_dark, force=force)
|
||||
print_env(BAT_VAR, bat_theme, export=export, fish=fish)
|
||||
|
||||
# Fish theme is optional, so don't print if None
|
||||
fish_theme = get_fish_theme(
|
||||
term_profile,
|
||||
force_dark=force_dark,
|
||||
force=force,
|
||||
)
|
||||
if fish_theme is not None:
|
||||
print_env(FISH_VAR, fish_theme, export=export, fish=fish)
|
||||
|
||||
|
||||
def print_env(var: str, val: str, export=False, fish=False):
|
||||
"""Print variable in env format"""
|
||||
@ -300,6 +341,14 @@ def main():
|
||||
force=args.force,
|
||||
)
|
||||
print(bat_theme)
|
||||
elif args.print_fish:
|
||||
term_profile = get_terminal_profile(force=args.force)
|
||||
fish_theme = get_fish_theme(
|
||||
term_profile,
|
||||
force_dark=args.dark,
|
||||
force=args.force,
|
||||
)
|
||||
print(fish_theme)
|
||||
else:
|
||||
print_all_env(
|
||||
force=args.force,
|
||||
|
@ -2,6 +2,15 @@ function _set_colorscheme --description "Sets the fish colorscheme"
|
||||
set -l theme "$argv[1]"
|
||||
switch "$theme"
|
||||
case "solarized light"
|
||||
__theme_solarized_light
|
||||
case "solarized dark"
|
||||
__theme_solarized_dark
|
||||
case "wombat"
|
||||
__theme_wombat
|
||||
end
|
||||
end
|
||||
|
||||
function __theme_solarized_light --description "Set fish theme to solarized light"
|
||||
set -g fish_color_autosuggestion 93a1a1
|
||||
set -g fish_color_cancel -r
|
||||
set -g fish_color_command 586e75
|
||||
@ -27,7 +36,9 @@ function _set_colorscheme --description "Sets the fish colorscheme"
|
||||
set -g fish_pager_color_description B3A06D
|
||||
set -g fish_pager_color_prefix cyan --underline
|
||||
set -g fish_pager_color_progress brwhite --background=cyan
|
||||
case "solarized dark"
|
||||
end
|
||||
|
||||
function __theme_solarized_dark --description "Set fish theme to solarized dark"
|
||||
set -g fish_color_autosuggestion 586e75
|
||||
set -g fish_color_cancel -r
|
||||
set -g fish_color_command 93a1a1
|
||||
@ -54,4 +65,31 @@ function _set_colorscheme --description "Sets the fish colorscheme"
|
||||
set -g fish_pager_color_prefix cyan --underline
|
||||
set -g fish_pager_color_progress brwhite --background=cyan
|
||||
end
|
||||
|
||||
function __theme_wombat --description "Set fish theme to wombat"
|
||||
set -g fish_color_autosuggestion black
|
||||
set -g fish_color_cancel -r
|
||||
set -g fish_color_command yellow
|
||||
set -g fish_color_comment normal
|
||||
set -g fish_color_cwd green
|
||||
set -g fish_color_cwd_root red
|
||||
set -g fish_color_end blue
|
||||
set -g fish_color_error red
|
||||
set -g fish_color_escape magenta
|
||||
set -g fish_color_history_current --bold
|
||||
set -g fish_color_host normal
|
||||
set -g fish_color_match --background=brblue
|
||||
set -g fish_color_normal normal
|
||||
set -g fish_color_operator cyan
|
||||
set -g fish_color_param green
|
||||
set -g fish_color_quote brgreen --italics
|
||||
set -g fish_color_redirection magenta
|
||||
set -g fish_color_search_match bryellow --background=green
|
||||
set -g fish_color_selection white --bold --background=green
|
||||
set -g fish_color_user brgreen
|
||||
set -g fish_color_valid_path --underline
|
||||
set -g fish_pager_color_completion blue
|
||||
set -g fish_pager_color_description blue
|
||||
set -g fish_pager_color_prefix cyan --underline
|
||||
set -g fish_pager_color_progress brwhite --background=cyan
|
||||
end
|
||||
|
@ -30,7 +30,8 @@ if status --is-interactive
|
||||
|
||||
# Export colors
|
||||
eval ($HOME/bin/derive_colors.py --export --fish)
|
||||
if [ "$VIM_COLOR" = "solarized" ]
|
||||
_set_colorscheme "solarized light"
|
||||
# Set fish theme based on newly exported colors
|
||||
if set -q FISH_THEME
|
||||
_set_colorscheme "$FISH_THEME"
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user