From b2769b49630e1cf94ae90829744d2c77616fdfb3 Mon Sep 17 00:00:00 2001 From: Maciej Sypien Date: Mon, 16 Sep 2024 18:36:48 +0200 Subject: [PATCH] feat: add support for dark and light 16-bit color palettes (#34) * feat: add dark 16-bit colors palette * feat: add light 16-bit colors palette * feat: remove unnecessary files * docs: update names * chore: add changelog entry --- CHANGELOG.md | 1 + src/gruvbox-main.sh | 16 ++++++- src/palette_gruvbox_dark.sh | 46 ++++++++++++++++++++ src/palette_gruvbox_dark256.sh | 2 +- src/palette_gruvbox_light.sh | 46 ++++++++++++++++++++ src/palette_gruvbox_light256.sh | 2 +- src/tmux-gruvbox-dark-transparent.conf | 50 ---------------------- src/tmux-gruvbox-dark.conf | 50 ---------------------- src/tmux-gruvbox-light-transparent.conf | 56 ------------------------- src/tmux-gruvbox-light.conf | 56 ------------------------- 10 files changed, 109 insertions(+), 216 deletions(-) create mode 100644 src/palette_gruvbox_dark.sh create mode 100644 src/palette_gruvbox_light.sh delete mode 100644 src/tmux-gruvbox-dark-transparent.conf delete mode 100644 src/tmux-gruvbox-dark.conf delete mode 100644 src/tmux-gruvbox-light-transparent.conf delete mode 100644 src/tmux-gruvbox-light.conf diff --git a/CHANGELOG.md b/CHANGELOG.md index 5540452..0fe8fdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added code linters for shellcheck & shfmt [#33](https://github.com/egel/tmux-gruvbox/issues/33) - Added tests (for linux) [#39](https://github.com/egel/tmux-gruvbox/issues/39) - Added customizable statusbar [#31](https://github.com/egel/tmux-gruvbox/issues/31) +- Added support for 16-bit colors palette light & dark [#34](https://github.com/egel/tmux-gruvbox/issues/34) ### Changed diff --git a/src/gruvbox-main.sh b/src/gruvbox-main.sh index 7bb1c20..dea051a 100755 --- a/src/gruvbox-main.sh +++ b/src/gruvbox-main.sh @@ -39,13 +39,25 @@ main() { _statusbar_alpha=$(tmux_get_option "${TMUX_GRUVBOX_STATUSBAR_ALPHA}" "${DEFAULT_STATUSBAR_ALPHA}") case "$_theme" in - light | light256) + light) + # shellcheck disable=1091 + source "${CURRENT_DIR}/src/palette_gruvbox_light.sh" + # shellcheck disable=1091 + source "${CURRENT_DIR}/src/theme_gruvbox_light.sh" + ;; + light256) # shellcheck disable=1091 source "${CURRENT_DIR}/src/palette_gruvbox_light256.sh" # shellcheck disable=1091 source "${CURRENT_DIR}/src/theme_gruvbox_light.sh" ;; - dark | dark256 | *) + dark) + # shellcheck disable=1091 + source "${CURRENT_DIR}/src/palette_gruvbox_dark.sh" + # shellcheck disable=1091 + source "${CURRENT_DIR}/src/theme_gruvbox_dark.sh" + ;; + dark256 | *) # shellcheck disable=1091 source "${CURRENT_DIR}/src/palette_gruvbox_dark256.sh" # shellcheck disable=1091 diff --git a/src/palette_gruvbox_dark.sh b/src/palette_gruvbox_dark.sh new file mode 100644 index 0000000..58885b2 --- /dev/null +++ b/src/palette_gruvbox_dark.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +########################## +# gruvbox dark pallete +########################## + +#### +# When using 'colour124' you are using the color default in terminal pallete. +# This could be important for people which terminals support only 256 colors +# and does not support HEX values. +# +# The names of colors used from https://github.com/morhetz/gruvbox + +# shellcheck disable=2034 # ignored as this file only contains var definitions +col_bg="#282828" +col_bg0_h="#1d2021" +col_bg0="#282828" +col_bg1="#3c3836" +col_bg2="#504945" +col_bg3="#665c54" +col_bg4="#7c6f64" +col_gray0="#a89984" +col_gray1="#928374" +col_gray2="#928374" +col_bg0_s="#32302f" +col_fg="#ebdbb2" +col_fg4="#a89984" +col_fg3="#bdae93" +col_fg2="#d5c4a1" +col_fg1="#ebdbb2" +col_fg0="#fbf1c7" + +col_red="#cc241d" +col_red2="#fb4934" +col_green="#98971a" +col_green2="#b8bb26" +col_yellow="#d79921" +col_yellow2="#fabd2f" +col_blue="#458588" +col_blue2="#83a598" +col_purple="#b16286" +col_purple2="#d3869b" +col_aqua="#689d6a" +col_aqua2="#8ec07c" +col_orange="#d65d0e" +col_orange2="#fe8019" diff --git a/src/palette_gruvbox_dark256.sh b/src/palette_gruvbox_dark256.sh index 5470ee8..fe6c84d 100644 --- a/src/palette_gruvbox_dark256.sh +++ b/src/palette_gruvbox_dark256.sh @@ -1,7 +1,7 @@ #!/bin/bash ########################## -# gruvbox dark pallete +# gruvbox dark256 pallete ########################## #### diff --git a/src/palette_gruvbox_light.sh b/src/palette_gruvbox_light.sh new file mode 100644 index 0000000..0652c5c --- /dev/null +++ b/src/palette_gruvbox_light.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +########################## +# gruvbox light pallete +########################## + +#### +# When using 'colour124' you are using the color default in terminal pallete. +# This could be important for people which terminals support only 256 colors +# and does not support HEX values. +# +# The names of colors used from https://github.com/morhetz/gruvbox + +# shellcheck disable=2034 # ignored as this file only contains var definitions +col_bg="#fbf1c7" +col_bg0_h="#f9f5d7" +col_bg0="#fbf1c7" +col_bg1="#ebdbb2" +col_bg2="#d5c4a1" +col_bg3="#bdae93" +col_bg4="#a89984" +col_gray0="#7c6f64" +col_gray1="#928374" +col_gray2="#928374" +col_bg0_s="#f2e5bc" +col_fg="#3c3836" +col_fg4="#7c6f64" +col_fg3="#665c54" +col_fg2="#504945" +col_fg1="#3c3836" +col_fg0="#282828" + +col_red="#cc241d" +col_red2="#9d0006" +col_green="#98971a" +col_green2="#79740e" +col_yellow="#d79921" +col_yellow2="#b57614" +col_blue="#458588" +col_blue2="#076678" +col_purple="#b16286" +col_purple2="#8f3f71" +col_aqua="#689d6a" +col_aqua2="#427b58" +col_orange="#d65d0e" +col_orange2="#af3a03" diff --git a/src/palette_gruvbox_light256.sh b/src/palette_gruvbox_light256.sh index 3949472..959e5a6 100644 --- a/src/palette_gruvbox_light256.sh +++ b/src/palette_gruvbox_light256.sh @@ -1,7 +1,7 @@ #!/bin/bash ########################## -# gruvbox dark pallete +# gruvbox light256 pallete ########################## #### diff --git a/src/tmux-gruvbox-dark-transparent.conf b/src/tmux-gruvbox-dark-transparent.conf deleted file mode 100644 index 72cb7dc..0000000 --- a/src/tmux-gruvbox-dark-transparent.conf +++ /dev/null @@ -1,50 +0,0 @@ -## COLORSCHEME: gruvbox dark (medium) -set-option -g status "on" - -# default statusbar color -set-option -g status-style bg=default,fg=colour223 # bg=bg1, fg=fg1 - -# default window title colors -set-window-option -g window-status-style bg=default,fg=colour237 # bg=yellow, fg=bg1 - -# default window with an activity alert -set-window-option -g window-status-activity-style bg=colour237,fg=colour248 # bg=bg1, fg=fg3 - -# active window title colors -set-window-option -g window-status-current-style bg=default,fg=colour237 # fg=bg1 - -# pane border -set-option -g pane-active-border-style fg=colour250 #fg2 -set-option -g pane-border-style fg=colour237 #bg1 - -# message infos -set-option -g message-style bg=colour239,fg=colour223 # bg=bg2, fg=fg1 - -# writing commands inactive -set-option -g message-command-style bg=colour239,fg=colour223 # bg=fg3, fg=bg1 - -# pane number display -set-option -g display-panes-active-colour colour250 #fg2 -set-option -g display-panes-colour colour237 #bg1 - -# clock -set-window-option -g clock-mode-colour colour109 #blue - -# bell -set-window-option -g window-status-bell-style bg=colour167,fg=colour235 # bg=red, fg=bg - -## Theme settings mixed with colors (unfortunately, but there is no cleaner way) -set-option -g status-justify "left" -set-option -g status-left-style none -set-option -g status-left-length "80" -set-option -g status-right-style none -set-option -g status-right-length "80" -set-window-option -g window-status-separator "" - -set-option -g status-left "#[bg=colour241,fg=colour248] #S #[bg=colour237,fg=colour241,nobold,noitalics,nounderscore]" -set-option -g status-right "#[bg=default,fg=colour239 nobold, nounderscore, noitalics]#[bg=colour239,fg=colour246] %Y-%m-%d  %H:%M #[bg=colour239,fg=colour248,nobold,noitalics,nounderscore]#[bg=colour248,fg=colour237] #h " - -set-window-option -g window-status-current-format "#[bg=colour214,fg=colour237,nobold,noitalics,nounderscore]#[bg=colour214,fg=colour239] #I #[bg=colour214,fg=colour239,bold] #W#{?window_zoomed_flag,*Z,} #{?window_end_flag,#[bg=default],#[bg=colour237]}#[fg=colour214,nobold,noitalics,nounderscore]" -set-window-option -g window-status-format "#[bg=colour239,fg=colour237,noitalics]#[bg=colour239,fg=colour223] #I #[bg=colour239,fg=colour223] #W #{?window_end_flag,#[bg=default],#[bg=colour237]}#[fg=colour239,noitalics]" - -# vim: set ft=tmux tw=0 nowrap: diff --git a/src/tmux-gruvbox-dark.conf b/src/tmux-gruvbox-dark.conf deleted file mode 100644 index 93700c5..0000000 --- a/src/tmux-gruvbox-dark.conf +++ /dev/null @@ -1,50 +0,0 @@ -## COLORSCHEME: gruvbox dark (medium) -set-option -g status "on" - -# default statusbar color -set-option -g status-style bg=colour237,fg=colour223 # bg=bg1, fg=fg1 - -# default window title colors -set-window-option -g window-status-style bg=colour214,fg=colour237 # bg=yellow, fg=bg1 - -# default window with an activity alert -set-window-option -g window-status-activity-style bg=colour237,fg=colour248 # bg=bg1, fg=fg3 - -# active window title colors -set-window-option -g window-status-current-style bg=red,fg=colour237 # fg=bg1 - -# pane border -set-option -g pane-active-border-style fg=colour250 #fg2 -set-option -g pane-border-style fg=colour237 #bg1 - -# message infos -set-option -g message-style bg=colour239,fg=colour223 # bg=bg2, fg=fg1 - -# writing commands inactive -set-option -g message-command-style bg=colour239,fg=colour223 # bg=fg3, fg=bg1 - -# pane number display -set-option -g display-panes-active-colour colour250 #fg2 -set-option -g display-panes-colour colour237 #bg1 - -# clock -set-window-option -g clock-mode-colour colour109 #blue - -# bell -set-window-option -g window-status-bell-style bg=colour167,fg=colour235 # bg=red, fg=bg - -## Theme settings mixed with colors (unfortunately, but there is no cleaner way) -set-option -g status-justify "left" -set-option -g status-left-style none -set-option -g status-left-length "80" -set-option -g status-right-style none -set-option -g status-right-length "80" -set-window-option -g window-status-separator "" - -set-option -g status-left "#[bg=colour241,fg=colour248] #S #[bg=colour237,fg=colour241,nobold,noitalics,nounderscore]" -set-option -g status-right "#[bg=colour237,fg=colour239 nobold, nounderscore, noitalics]#[bg=colour239,fg=colour246] %Y-%m-%d  %H:%M #[bg=colour239,fg=colour248,nobold,noitalics,nounderscore]#[bg=colour248,fg=colour237] #h #{tmux_mode_indicator}" - -set-window-option -g window-status-current-format "#[bg=colour214,fg=colour237,nobold,noitalics,nounderscore]#[bg=colour214,fg=colour239] #I #[bg=colour214,fg=colour239,bold] #W#{?window_zoomed_flag,*Z,} #[bg=colour237,fg=colour214,nobold,noitalics,nounderscore]" -set-window-option -g window-status-format "#[bg=colour239,fg=colour237,noitalics]#[bg=colour239,fg=colour223] #I #[bg=colour239,fg=colour223] #W #[bg=colour237,fg=colour239,noitalics]" - -# vim: set ft=tmux tw=0 nowrap: diff --git a/src/tmux-gruvbox-light-transparent.conf b/src/tmux-gruvbox-light-transparent.conf deleted file mode 100644 index db10466..0000000 --- a/src/tmux-gruvbox-light-transparent.conf +++ /dev/null @@ -1,56 +0,0 @@ -## COLORSCHEME: gruvbox light (medium) -# -# Some colors are not used by gruvbox light medium theme. -# The main idea is to find best version of colors that fit -# the spirit of gruvbox light theme with limited numbers of -# 256 color palette. - -set-option -g status "on" - -# default statusbar colors -set-option -g status-style bg=default,fg=colour239 # bg=notInGruvboxPallete, #fg=fg1 - -# default window title colors -set-window-option -g window-status-style bg=default,fg=colour229 # bg=aqua, fg=bg5 - -# default window with an activity alert -set-window-option -g window-status-activity-style bg=colour237,fg=colour241 # bg=bg1, fg=notInGruvboxPallete - -# active window title colors -set-window-option -g window-status-current-style bg=default,fg=colour237 # bg=default, fg=bg1 - -# pane border -set-option -g pane-active-border-style fg=colour241 # fg=notInGruvboxPallete -set-option -g pane-border-style fg=colour252 # bg1=notInGruvboxPallete - -# message infos (visible while writing command) -set-option -g message-style bg=colour252,fg=colour241 # bg=notInGruvboxPallete, fg=notInGruvboxPallete - -# writing commands inactive -set-option -g message-command-style bg=colour124,fg=colour241 # bg=notInGruvboxPallete, fg=notInGruvboxPallete - -# pane number display -set-option -g display-panes-active-colour colour241 # notInGruvboxPallete -set-option -g display-panes-colour colour248 # notInGruvboxPallete - -# clock -set-window-option -g clock-mode-colour colour172 # orange - -# bell -set-window-option -g window-status-bell-style bg=colour124,fg=colour229 # bg=red, fg=bg - -## Theme settings mixed with colors (unfortunately, but there is no cleaner way) -set-option -g status-justify "left" -set-option -g status-left-style none -set-option -g status-left-length "80" -set-option -g status-right-style none -set-option -g status-right-length "80" -set-window-option -g window-status-separator "" - -set-option -g status-left "#[bg=colour243,fg=colour255] #S #[bg=colour252,fg=colour243,nobold,noitalics,nounderscore]" -set-option -g status-right "#[bg=default,fg=colour243,nobold,nounderscore,noitalics]#[bg=colour243,fg=colour255] %Y-%m-%d  %H:%M #[bg=colour243,fg=colour237,nobold,noitalics,nounderscore]#[bg=colour237,fg=colour255] #h " - -set-window-option -g window-status-current-format "#[bg=colour215,fg=colour252,nobold,noitalics,nounderscore]#[bg=colour215,fg=colour239] #I #[bg=colour215,fg=colour239,bold] #W#{?window_zoomed_flag,*Z,} #[bg=colour252,fg=colour215,nobold,noitalics,nounderscore]" -set-window-option -g window-status-format "#[bg=colour249,fg=colour252,noitalics]#[bg=colour249,fg=colour241] #I #[bg=colour249,fg=colour241] #W #[bg=colour252,fg=colour249,noitalics]" - -# vim: set ft=tmux tw=0 nowrap: diff --git a/src/tmux-gruvbox-light.conf b/src/tmux-gruvbox-light.conf deleted file mode 100644 index 8761966..0000000 --- a/src/tmux-gruvbox-light.conf +++ /dev/null @@ -1,56 +0,0 @@ -## COLORSCHEME: gruvbox light (medium) -# -# Some colors are not used by gruvbox light medium theme. -# The main idea is to find best version of colors that fit -# the spirit of gruvbox light theme with limited numbers of -# 256 color palette. - -set-option -g status "on" - -# default statusbar colors -set-option -g status-style bg=colour252,fg=colour239 # bg=notInGruvboxPallete, #fg=fg1 - -# default window title colors -set-window-option -g window-status-style bg=colour66,fg=colour229 # bg=aqua, fg=bg5 - -# default window with an activity alert -set-window-option -g window-status-activity-style bg=colour237,fg=colour241 # bg=bg1, fg=notInGruvboxPallete - -# active window title colors -set-window-option -g window-status-current-style bg=default,fg=colour237 # bg=default, fg=bg1 - -# pane border -set-option -g pane-active-border-style fg=colour241 # fg=notInGruvboxPallete -set-option -g pane-border-style fg=colour252 # bg1=notInGruvboxPallete - -# message infos (visible while writing command) -set-option -g message-style bg=colour252,fg=colour241 # bg=notInGruvboxPallete, fg=notInGruvboxPallete - -# writing commands inactive -set-option -g message-command-style bg=colour124,fg=colour241 # bg=notInGruvboxPallete, fg=notInGruvboxPallete - -# pane number display -set-option -g display-panes-active-colour colour241 # notInGruvboxPallete -set-option -g display-panes-colour colour248 # notInGruvboxPallete - -# clock -set-window-option -g clock-mode-colour colour172 # orange - -# bell -set-window-option -g window-status-bell-style bg=colour124,fg=colour229 # bg=red, fg=bg - -## Theme settings mixed with colors (unfortunately, but there is no cleaner way) -set-option -g status-justify "left" -set-option -g status-left-style none -set-option -g status-left-length "80" -set-option -g status-right-style none -set-option -g status-right-length "80" -set-window-option -g window-status-separator "" - -set-option -g status-left "#[bg=colour243,fg=colour255] #S #[bg=colour252,fg=colour243,nobold,noitalics,nounderscore]" -set-option -g status-right "#[bg=colour252,fg=colour243,nobold,nounderscore,noitalics]#[bg=colour243,fg=colour255] %Y-%m-%d  %H:%M #[bg=colour243,fg=colour237,nobold,noitalics,nounderscore]#[bg=colour237,fg=colour255] #h " - -set-window-option -g window-status-current-format "#[bg=colour215,fg=colour252,nobold,noitalics,nounderscore]#[bg=colour215,fg=colour239] #I #[bg=colour215,fg=colour239,bold] #W#{?window_zoomed_flag,*Z,} #[bg=colour252,fg=colour215,nobold,noitalics,nounderscore]" -set-window-option -g window-status-format "#[bg=colour249,fg=colour252,noitalics]#[bg=colour249,fg=colour241] #I #[bg=colour249,fg=colour241] #W #[bg=colour252,fg=colour249,noitalics]" - -# vim: set ft=tmux tw=0 nowrap: