#!/usr/bin/fish function theme_gruvbox --description 'Apply gruvbox theme' set -l mode 'light' if test (count $argv) -gt 0 set mode $argv[1] end set -g contrast 'medium' if test (count $argv) -gt 1 set contrast $argv[2] end switch $contrast case 'soft' case 'medium' case 'hard' case '*' set_color $fish_color_error echo 'Unknown contrast $contrast, choose soft, medium or hard' set_color $fish_color_normal return 1 end switch $mode case 'light' __theme_gruvbox_base __theme_gruvbox_light case 'dark' __theme_gruvbox_base __theme_gruvbox_dark case '*' set_color $fish_color_error echo 'Unknown mode $mode, choose light or dark' set_color $fish_color_normal return 1 end __theme_gruvbox_palette return 0 end function __theme_gruvbox_base __printf_color 1 'cc/24/1d' __printf_color 2 '98/97/1a' __printf_color 3 'd7/99/21' __printf_color 4 '45/85/88' __printf_color 5 'b1/62/86' __printf_color 6 '68/9d/6a' end function __theme_gruvbox_light set -l bg 'fb/f1/c7' switch $contrast case "soft" set bg 'f2/e5/bc' case "hard" set bg 'f9/f5/d7' end command printf "\033]11;rgb:$bg\007" set -l fg '3c/38/36' command printf "\033]10;rgb:$fg\007" __printf_color 0 $bg __printf_color 7 '7c/6f/64' __printf_color 8 '92/83/74' __printf_color 9 '9d/00/06' __printf_color 10 '79/74/0e' __printf_color 11 'b5/76/14' __printf_color 12 '07/66/78' __printf_color 13 '8f/3f/71' __printf_color 14 '42/7b/58' __printf_color 15 $fg end function __theme_gruvbox_dark set -l bg '28/28/28' switch $contrast case "soft" set bg '32/30/2f' case "hard" set bg '1d/20/21' end command printf "\033]11;rgb:$bg\007" set -l fg 'eb/db/b2' command printf "\033]10;rgb:$fg\007" __printf_color 0 $bg __printf_color 7 'a8/99/84' __printf_color 8 '92/83/74' __printf_color 9 'fb/59/34' __printf_color 10 'b8/bb/26' __printf_color 11 'fa/bd/2f' __printf_color 12 '83/a5/98' __printf_color 13 'd3/86/9b' __printf_color 14 '8e/c0/7c' __printf_color 15 $fg end function __theme_gruvbox_palette __printf_color 236 '32/30/2f' __printf_color 234 '1d/20/21' __printf_color 235 '28/28/28' __printf_color 237 '3c/38/36' __printf_color 239 '50/49/45' __printf_color 241 '66/5c/54' __printf_color 243 '7c/6f/64' __printf_color 244 '92/83/74' __printf_color 245 '92/83/74' __printf_color 228 'f2/e5/bc' __printf_color 230 'f9/f5/d7' __printf_color 229 'fb/f1/c7' __printf_color 223 'eb/db/b2' __printf_color 250 'd5/c4/a1' __printf_color 248 'bd/ae/93' __printf_color 246 'a8/99/84' __printf_color 167 'fb/49/34' __printf_color 142 'b8/bb/26' __printf_color 214 'fa/bd/2f' __printf_color 109 '83/a5/98' __printf_color 175 'd3/86/9b' __printf_color 108 '8e/c0/7c' __printf_color 208 'fe/80/19' __printf_color 88 '9d/00/06' __printf_color 100 '79/74/0e' __printf_color 136 'b5/76/14' __printf_color 24 '07/66/78' __printf_color 96 '8f/3f/71' __printf_color 66 '42/7b/58' __printf_color 130 'af/3a/03' end function __printf_color command printf "\033]4;$argv[1];rgb:$argv[2]\007" end