From e98ed0d15b6ac4523b9cd61d172b85c4ae2d3404 Mon Sep 17 00:00:00 2001 From: Christian Nieves Date: Fri, 10 Jun 2022 21:14:07 +0000 Subject: [PATCH] Colors --- tmux/.tmux/osiris-theme.conf | 10 +-- zsh/.zshrc | 139 ++++++++++++++++++++++++++++++++++- 2 files changed, 140 insertions(+), 9 deletions(-) diff --git a/tmux/.tmux/osiris-theme.conf b/tmux/.tmux/osiris-theme.conf index 6170478..439c633 100644 --- a/tmux/.tmux/osiris-theme.conf +++ b/tmux/.tmux/osiris-theme.conf @@ -60,9 +60,6 @@ setw -g mode-style bg=colour6,fg=colour0,bold,fg=colour46,bg=colour238 # Panes -set -g pane-border-style bg=colour236,fg=colour237 -set -g pane-active-border-style bg=colour236,fg=colour80 - setw -g clock-mode-colour cyan set -g mode-style bg=brightcyan,fg=black @@ -80,10 +77,9 @@ set -g status-right-length 55 set -g pane-border-style fg=brightblack,bg=black set -g pane-active-border-style fg=colour104,bg=black -set-window-option -g window-status-style bg=default,fg=default -set-window-option -g window-status-current-style bg=default,fg=cyan +set-window-option -g window-status-style fg=colour104,bg=default +set-window-option -g window-status-current-style fg=colour147,bg=default set-window-option -g window-status-activity-style bg=default,fg=yellow -set-window-option -g window-status-separator-style fg=brightblack -set-window-option -g window-status-separator "$left_alt_sep" +set-window-option -g window-status-separator "#[fg=colour104]#[bg=default]$left_alt_sep" # Custom styling, http://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/ diff --git a/zsh/.zshrc b/zsh/.zshrc index f3dc127..a689e42 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -23,13 +23,148 @@ function get_fig_prompt_template() { echo -n ' %F{white}FIG_PROMPT_CL' } +# Put standard ANSI color codes in shell parameters for easy use. +# Note that some terminals do not support all combinations. + +emulate -L zsh + +typeset -Ag color colour + +color=( +# Codes listed in this array are from ECMA-48, Section 8.3.117, p. 61. +# Those that are commented out are not widely supported or aren't closely +# enough related to color manipulation, but are included for completeness. + +# Attribute codes: + 00 none # 20 gothic + 01 bold # 21 double-underline + 02 faint 22 normal + 03 italic 23 no-italic # no-gothic + 04 underline 24 no-underline + 05 blink 25 no-blink +# 06 fast-blink # 26 proportional + 07 reverse 27 no-reverse +# 07 standout 27 no-standout + 08 conceal 28 no-conceal +# 09 strikethrough # 29 no-strikethrough + +# Font selection: +# 10 font-default +# 11 font-first +# 12 font-second +# 13 font-third +# 14 font-fourth +# 15 font-fifth +# 16 font-sixth +# 17 font-seventh +# 18 font-eighth +# 19 font-ninth + +# Text color codes: + 30 black 40 bg-black + 31 red 41 bg-red + 32 green 42 bg-green + 33 yellow 43 bg-yellow + 34 blue 44 bg-blue + 35 magenta 45 bg-magenta + 36 cyan 46 bg-cyan + 37 white 47 bg-white +# 38 iso-8316-6 # 48 bg-iso-8316-6 + 39 default 49 bg-default + +# Other codes: +# 50 no-proportional +# 51 border-rectangle +# 52 border-circle +# 53 overline +# 54 no-border +# 55 no-overline +# 56 through 59 reserved + +# Ideogram markings: +# 60 underline-or-right +# 61 double-underline-or-right +# 62 overline-or-left +# 63 double-overline-or-left +# 64 stress +# 65 no-ideogram-marking + +# Bright color codes (xterm extension) + 90 bright-gray 100 bg-bright-gray + 91 bright-red 101 bg-bright-red + 92 bright-green 102 bg-bright-green + 93 bright-yellow 103 bg-bright-yellow + 94 bright-blue 104 bg-bright-blue + 95 bright-magenta 105 bg-bright-magenta + 96 bright-cyan 106 bg-bright-cyan + 97 bright-white 107 bg-bright-white +) + +# A word about black and white: The "normal" shade of white is really a +# very pale grey on many terminals; to get truly white text, you have to +# use bold white, and to get a truly white background you have to use +# bold reverse white bg-xxx where xxx is your desired foreground color +# (and which means the foreground is also bold). + +# Map in both directions; could do this with e.g. ${(k)colors[(i)normal]}, +# but it's clearer to include them all both ways. + +local k +for k in ${(k)color}; do color[${color[$k]}]=$k; done + +# Add "fg-" keys for all the text colors, for clarity. + +for k in ${color[(I)[39]?]}; do color[fg-${color[$k]}]=$k; done + +# This is inaccurate, but the prompt theme system needs it. + +for k in grey gray; do + color[$k]=${color[black]} + color[fg-$k]=${color[$k]} + color[bg-$k]=${color[bg-black]} +done + +# Assistance for the colo(u)r-blind. + +for k in '' fg- bg-; do + color[${k}bright-grey]=${color[${k}bright-gray]} +done + +colour=(${(kv)color}) # A case where ksh namerefs would be useful ... + +# The following are terminal escape sequences used by colored prompt themes. + +local lc=$'\e[' rc=m # Standard ANSI terminal escape values + +typeset -Hg reset_color bold_color +reset_color="$lc${color[none]}$rc" +bold_color="$lc${color[bold]}$rc" + +# Foreground + +typeset -AHg fg fg_bold fg_no_bold +for k in ${(k)color[(I)fg-*]}; do + fg[${k#fg-}]="$lc${color[$k]}$rc" + fg_bold[${k#fg-}]="$lc${color[bold]};${color[$k]}$rc" + fg_no_bold[${k#fg-}]="$lc${color[normal]};${color[$k]}$rc" +done + +# Background + +typeset -AHg bg bg_bold bg_no_bold +for k in ${(k)color[(I)bg-*]}; do + bg[${k#bg-}]="$lc${color[$k]}$rc" + bg_bold[${k#bg-}]="$lc${color[bold]};${color[$k]}$rc" + bg_no_bold[${k#bg-}]="$lc${color[normal]};${color[$k]}$rc" +done + prompt_google3() { if [[ $PWD =~ '/google/src/cloud/[^/]+/(.+)/google3(.*)' ]]; then GPROMPT=$(print -r -- "%F{white}//${match[2]#/}") else GPROMPT=$(print -r -- "%F{white}$PWD") fi - p10k segment -b blue -t $GPROMPT + p10k segment -b 147 -t $GPROMPT } prompt_workspace() { @@ -38,7 +173,7 @@ prompt_workspace() { print -n "\e]2;${match[1]}\a" >/dev/tty GPROMPT=$(print -r -- "$match[1]") - p10k segment -b magenta -f white -t $GPROMPT + p10k segment -b 104 -f white -t $GPROMPT fi }