Compare commits
6 commits
main
...
add-suppor
Author | SHA1 | Date | |
---|---|---|---|
![]() |
da240cd164 | ||
![]() |
41d872882a | ||
![]() |
24061a4cae | ||
![]() |
1199432e88 | ||
![]() |
ff5acf3ea2 | ||
![]() |
044ca063e2 |
16 changed files with 600 additions and 253 deletions
|
@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|||
- Added light and dark transparent themes [#18](https://github.com/egel/tmux-gruvbox/issues/18)
|
||||
- Added editorconfig
|
||||
- Added code linters for shellcheck & shfmt [#33](https://github.com/egel/tmux-gruvbox/issues/33)
|
||||
- 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
|
||||
|
||||
|
|
117
README.md
117
README.md
|
@ -25,60 +25,126 @@ Theme with 'retro groove' flavor for [Tmux][github-tmux], based on Pavel Pertsev
|
|||
|
||||
## Installation
|
||||
|
||||
**Available Themes**
|
||||
### Install via [TPM][github-tpm] (recommended)
|
||||
|
||||
- [`dark`](./docs/assets/img/gruvbox-dark-theme.png)
|
||||
- [`light`](./docs/assets/img/gruvbox-light-theme.png)
|
||||
- `dark-transparent` (experimental)
|
||||
- `light-transparent` (experimental)
|
||||
|
||||
### Install manually
|
||||
|
||||
The simplest way is just:
|
||||
|
||||
> [!TIP]
|
||||
> Always make a backup of your config files before any action.
|
||||
|
||||
```bash
|
||||
cat tmux-gruvbox-dark.conf >> ~/.tmux.conf
|
||||
```
|
||||
|
||||
### Install through [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm)
|
||||
|
||||
Add plugin to the list of TPM plugins in `.tmux.conf` and select desired theme.
|
||||
Add plugin at the top list of TPM plugins in `.tmux.conf` and select desired theme.
|
||||
|
||||
```bash
|
||||
# ~/.tmux.conf
|
||||
set -g @plugin 'egel/tmux-gruvbox'
|
||||
set -g @tmux-gruvbox 'dark' # or 'light', 'dark-transparent', 'light-transparent'
|
||||
# set desired options...
|
||||
set -g @tmux-gruvbox 'dark' # or 'light'
|
||||
```
|
||||
|
||||
Hit `prefix + I` to fetch the plugin and source it. Your Tmux should be updated with the theme at this point.
|
||||
|
||||
### Install manually
|
||||
|
||||
1. Clone the project to desired location
|
||||
|
||||
> ![TIP] If you do not have github account [download](https://github.com/egel/tmux-gruvbox/archive/refs/heads/main.zip) it and unzip.
|
||||
|
||||
```bash
|
||||
cd ~/projects/
|
||||
git clone ...
|
||||
```
|
||||
|
||||
1. Add theme at to top of your `~/.tmux.conf` config.
|
||||
|
||||
```bash
|
||||
# ~/.tmux.conf
|
||||
run ~/projects/tmux-gruvbox/tmux-gruvbox.tmux
|
||||
# set desired options...
|
||||
set -g @tmux-gruvbox 'dark' # or light
|
||||
```
|
||||
|
||||
## Configuration options
|
||||
|
||||
### Theme
|
||||
|
||||
- default value: `dark256`
|
||||
- available themes:
|
||||
- [`dark256`](./docs/assets/img/gruvbox-dark-theme.png)
|
||||
- [`light256`](./docs/assets/img/gruvbox-light-theme.png)
|
||||
|
||||
```bash
|
||||
set -g @tmux-gruvbox 'dark256'
|
||||
```
|
||||
|
||||
### Transparent status-bar
|
||||
|
||||
- default value: `'false'`
|
||||
- tmux >= 3.2 (experimental)
|
||||
|
||||
```bash
|
||||
set -g @tmux-gruvbox-statusbar-alpha 'true'
|
||||
```
|
||||
|
||||
### Left Status (Section A)
|
||||
|
||||
- default value: `'#S'`
|
||||
|
||||
```bash
|
||||
set -g @tmux-gruvbox-left-status-a
|
||||
```
|
||||
|
||||
### Right Status (Section X)
|
||||
|
||||
- default value: `'%Y-%m-%d'`
|
||||
|
||||
This section is customizable for user, and by default contains current date.
|
||||
|
||||
```bash
|
||||
set -g @tmux-gruvbox-right-status-x
|
||||
```
|
||||
|
||||
### Right Status (Section Y)
|
||||
|
||||
- default value: `'%H:%M'`
|
||||
|
||||
This section is customizable for user, and by default contains current time.
|
||||
|
||||
```bash
|
||||
# set different time format
|
||||
set -g @tmux-gruvbox-right-status-y '%H:%M'
|
||||
```
|
||||
|
||||
### Right Status (Section Z)
|
||||
|
||||
- default value: `'#h'`
|
||||
|
||||
This section is customizable for user, and by default contains hostname.
|
||||
|
||||
```bash
|
||||
# enhance this section with other plugin
|
||||
set -g @tmux-gruvbox-right-status-z '#h #{tmux_mode_indicator} '
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
To run project locally:
|
||||
|
||||
1. clone the repo to desired place
|
||||
1. clone the repository to desired place
|
||||
|
||||
```bash
|
||||
cd $HOME/projects/
|
||||
git clone ...
|
||||
```
|
||||
|
||||
1. create symlink in plugin dir to the cloned repo:
|
||||
1. create a symlink to the cloned repository (best in the standard [TPM][github-tpm] plugin directory):
|
||||
|
||||
```bash
|
||||
# cd to tmux plugin directory
|
||||
cd ~/.tmux/plugins/
|
||||
|
||||
# create simlink to cloned repo
|
||||
# create symlink to cloned repo
|
||||
ln -sf $HOME/projects/tmux-gruvbox/ tmux-gruvbox
|
||||
```
|
||||
|
||||
1. and in `~/.tmux.conf` set
|
||||
|
||||
```bash
|
||||
# add plugin
|
||||
# ~/.tmux.conf
|
||||
set -g @plugin 'egel/tmux-gruvbox'
|
||||
# set desired options...
|
||||
set -g @tmux-gruvbox 'dark'
|
||||
|
@ -101,6 +167,7 @@ GPLv3 - Maciej Sypień
|
|||
[github-hack]: https://github.com/chrissimpkins/Hack
|
||||
[github-nerd-fonts]: https://github.com/ryanoasis/nerd-fonts
|
||||
[github-alacritty]: https://github.com/alacritty/alacritty
|
||||
[github-tpm]: https://github.com/tmux-plugins/tpm
|
||||
[tmux-color-solarized]: https://github.com/seebi/tmux-colors-solarized
|
||||
[pexcel-1]: https://www.pexels.com/photo/urban-photo-of-an-alley-2411688/
|
||||
[pexcel-2]: https://www.pexels.com/photo/lights-hanging-above-the-alley-in-a-city-at-night-27044195/
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source "./src/gruvbox-main.sh"
|
||||
|
||||
# vim: ai et ft=bash
|
||||
|
|
|
@ -3,25 +3,93 @@
|
|||
SCRIPT_SRC="$(dirname "${BASH_SOURCE[${#BASH_SOURCE[@]} - 1]}")"
|
||||
readonly SCRIPT_SRC
|
||||
CURRENT_DIR=$(cd "${SCRIPT_SRC}" >/dev/null 2>&1 && pwd) readonly CURRENT_DIR
|
||||
readonly THEME_OPTION="@tmux-gruvbox"
|
||||
readonly DEFAULT_THEME="dark"
|
||||
readonly CURRENT_DIR
|
||||
|
||||
get_theme() {
|
||||
local option="$1"
|
||||
local default_value="$2"
|
||||
local option_value
|
||||
option_value=$(tmux show-option -gqv "$option")
|
||||
if [ -z "$option_value" ]; then
|
||||
echo "$default_value"
|
||||
else
|
||||
echo "$option_value"
|
||||
fi
|
||||
}
|
||||
# hold the array of all command to configure tmux theme
|
||||
declate -a TMUX_CMDS
|
||||
|
||||
# load libraries
|
||||
# shellcheck disable=1091
|
||||
source "${CURRENT_DIR}/src/helper_methods.sh"
|
||||
# shellcheck disable=1091
|
||||
source "${CURRENT_DIR}/src/tmux_utils.sh"
|
||||
|
||||
readonly TMUX_GRUVBOX="@tmux-gruvbox"
|
||||
readonly TMUX_GRUVBOX_STATUSBAR_ALPHA="@tmux-gruvbox-statusbar-alpha"
|
||||
readonly TMUX_GRUVBOX_LEFT_STATUS_A="@tmux-gruvbox-left-status-a"
|
||||
readonly TMUX_GRUVBOX_RIGHT_STAUTS_X="@tmux-gruvbox-right-status-x"
|
||||
readonly TMUX_GRUVBOX_RIGHT_STAUTS_Y="@tmux-gruvbox-right-status-y"
|
||||
readonly TMUX_GRUVBOX_RIGHT_STAUTS_Z="@tmux-gruvbox-right-status-z"
|
||||
|
||||
# define simple theme options (no color interpolation required)
|
||||
DEFAULT_THEME="dark"
|
||||
DEFAULT_STATUSBAR_ALPHA=false
|
||||
# defaults for theme option (with color interpolation)
|
||||
DEFAULT_LEFT_STATUS_A='#S'
|
||||
DEFAULT_RIGHT_STATUS_X='%Y-%m-%d'
|
||||
DEFAULT_RIGHT_STATUS_Y='%H:%M'
|
||||
DEFAULT_RIGHT_STATUS_Z='#h'
|
||||
|
||||
main() {
|
||||
local theme
|
||||
theme=$(get_theme "$THEME_OPTION" "$DEFAULT_THEME")
|
||||
tmux source-file "$CURRENT_DIR/tmux-gruvbox-${theme}.conf"
|
||||
TMUX_CMDS=() # clear
|
||||
|
||||
# load proper palette for the theme asap to avoid additional variable interpolation
|
||||
local _theme
|
||||
_theme=$(tmux_get_option "${TMUX_GRUVBOX}" "${DEFAULT_THEME}")
|
||||
_statusbar_alpha=$(tmux_get_option "${TMUX_GRUVBOX_STATUSBAR_ALPHA}" "${DEFAULT_STATUSBAR_ALPHA}")
|
||||
|
||||
case "$_theme" in
|
||||
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)
|
||||
# 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
|
||||
source "${CURRENT_DIR}/src/theme_gruvbox_dark.sh"
|
||||
;;
|
||||
esac
|
||||
|
||||
local _status_left _status_right _window_status_current_format _window_status_format
|
||||
_status_left_a=$(tmux_get_option "$TMUX_GRUVBOX_LEFT_STATUS_A" "$DEFAULT_LEFT_STATUS_A")
|
||||
_status_right_x=$(tmux_get_option "$TMUX_GRUVBOX_RIGHT_STAUTS_X" "$DEFAULT_RIGHT_STATUS_X")
|
||||
_status_right_y=$(tmux_get_option "$TMUX_GRUVBOX_RIGHT_STAUTS_Y" "$DEFAULT_RIGHT_STATUS_Y")
|
||||
_status_right_z=$(tmux_get_option "$TMUX_GRUVBOX_RIGHT_STAUTS_Z" "$DEFAULT_RIGHT_STATUS_Z")
|
||||
|
||||
theme_args=(
|
||||
"$_status_left_a"
|
||||
"$_status_right_x"
|
||||
"$_status_right_y"
|
||||
"$_status_right_z"
|
||||
"$_statusbar_alpha"
|
||||
)
|
||||
|
||||
case $_theme in
|
||||
light | light256)
|
||||
theme_set_light "${theme_args[@]}"
|
||||
;;
|
||||
dark | dark256 | *)
|
||||
theme_set_dark "${theme_args[@]}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# execute commands with tmux as array of options
|
||||
tmux "${TMUX_CMDS[@]}"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
|
19
src/helper_methods.sh
Normal file
19
src/helper_methods.sh
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
# simply print passed array
|
||||
#
|
||||
# example
|
||||
#
|
||||
# myarray=()
|
||||
# print_array myarray
|
||||
#
|
||||
print_array() {
|
||||
local -n arr # -n available over bash 4.3
|
||||
arr=$1
|
||||
|
||||
echo ""
|
||||
echo "begin >>>"
|
||||
printf "%s\n" "${arr[@]}"
|
||||
echo "<<< end"
|
||||
echo ""
|
||||
}
|
46
src/palette_gruvbox_dark.sh
Normal file
46
src/palette_gruvbox_dark.sh
Normal file
|
@ -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"
|
46
src/palette_gruvbox_dark256.sh
Normal file
46
src/palette_gruvbox_dark256.sh
Normal file
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
##########################
|
||||
# gruvbox dark256 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=colour235
|
||||
col_bg0_h=colour234
|
||||
col_bg0=colour235
|
||||
col_bg1=colour237
|
||||
col_bg2=colour239
|
||||
col_bg3=colour241
|
||||
col_bg4=colour243
|
||||
col_gray0=colour246
|
||||
col_gray1=colour245
|
||||
col_gray2=colour245
|
||||
col_bg0_s=colour236
|
||||
col_fg=colour223
|
||||
col_fg4=colour246
|
||||
col_fg3=colour248
|
||||
col_fg2=colour250
|
||||
col_fg1=colour223
|
||||
col_fg0=colour229
|
||||
|
||||
col_red=colour124
|
||||
col_red2=colour167
|
||||
col_green=colour106
|
||||
col_green2=colour142
|
||||
col_yellow=colour172
|
||||
col_yellow2=colour214
|
||||
col_blue=colour66
|
||||
col_blue2=colour109
|
||||
col_purple=colour132
|
||||
col_purple2=colour175
|
||||
col_aqua=colour72
|
||||
col_aqua2=colour108
|
||||
col_orange=colour166
|
||||
col_orange2=colour208
|
46
src/palette_gruvbox_light.sh
Normal file
46
src/palette_gruvbox_light.sh
Normal file
|
@ -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"
|
46
src/palette_gruvbox_light256.sh
Normal file
46
src/palette_gruvbox_light256.sh
Normal file
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
##########################
|
||||
# gruvbox light256 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=colour229
|
||||
col_bg0_h=colour230
|
||||
col_bg0=colour229
|
||||
col_bg1=colour223
|
||||
col_bg2=colour250
|
||||
col_bg3=colour248
|
||||
col_bg4=colour246
|
||||
col_gray0=colour246
|
||||
col_gray1=colour245
|
||||
col_gray2=colour244
|
||||
col_bg0_s=colour228
|
||||
col_fg=colour223
|
||||
col_fg4=colour243
|
||||
col_fg3=colour241
|
||||
col_fg2=colour239
|
||||
col_fg1=colour237
|
||||
col_fg0=colour235
|
||||
|
||||
col_red=colour124
|
||||
col_red2=colour88
|
||||
col_green=colour106
|
||||
col_green2=colour100
|
||||
col_yellow=colour172
|
||||
col_yellow2=colour136
|
||||
col_blue=colour66
|
||||
col_blue2=colour24
|
||||
col_purple=colour132
|
||||
col_purple2=colour96
|
||||
col_aqua=colour72
|
||||
col_aqua2=colour66
|
||||
col_orange=colour166
|
||||
col_orange2=colour130
|
79
src/theme_gruvbox_dark.sh
Normal file
79
src/theme_gruvbox_dark.sh
Normal file
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Themes may use different colors in sets therefore we setup dark and light
|
||||
# separately.
|
||||
#
|
||||
# shellcheck disable=SC2154
|
||||
theme_set_dark() {
|
||||
local _left_status_a _right_status_x _right_status_y _right_status_z _statusbar_alpha
|
||||
_left_status_a=$1
|
||||
_right_status_x=$2
|
||||
_right_status_y=$3
|
||||
_right_status_z=$4
|
||||
_statusbar_alpha=$5
|
||||
|
||||
tmux_append_seto "status" "on"
|
||||
|
||||
# default statusbar bg color
|
||||
local _statusbar_bg="${col_bg1}"
|
||||
if [[ "$_statusbar_alpha" == "true" ]]; then _statusbar_bg="default"; fi
|
||||
tmux_append_seto "status-style" "bg=${_statusbar_bg},fg=${col_fg1}"
|
||||
|
||||
# default window title colors
|
||||
local _window_title_bg=${col_yellow2}
|
||||
if [[ "$_statusbar_alpha" == "true" ]]; then _window_title_bg="default"; fi
|
||||
tmux_append_setwo "window-status-style" "bg=${_window_title_bg},fg=${col_bg1}"
|
||||
|
||||
# default window with an activity alert
|
||||
tmux_append_setwo "window-status-activity-style" "bg=${col_bg1},fg=${col_fg3}"
|
||||
|
||||
# active window title colors
|
||||
local active_window_title_bg=${col_yellow2}
|
||||
if [[ "$_statusbar_alpha" == "true" ]]; then active_window_title_bg="default"; fi
|
||||
tmux_append_setwo "window-status-current-style" "bg=${active_window_title_bg},fg=${col_bg1}" # TODO cosider removing red!
|
||||
|
||||
# pane border
|
||||
tmux_append_seto "pane-active-border-style" "fg=${col_fg2}"
|
||||
tmux_append_seto "pane-border-style" "fg=${col_bg1}"
|
||||
|
||||
# message infos
|
||||
tmux_append_seto "message-style" "bg=${col_bg2},fg=${col_fg1}"
|
||||
|
||||
# writing commands inactive
|
||||
tmux_append_seto "message-command-style" "bg=${col_fg3},fg=${col_bg1}"
|
||||
|
||||
# pane number display
|
||||
tmux_append_seto "display-panes-active-colour" "${col_fg2}"
|
||||
tmux_append_seto "display-panes-colour" "${col_bg1}"
|
||||
|
||||
# clock
|
||||
tmux_append_setwo "clock-mode-colour" "${col_blue2}"
|
||||
|
||||
# bell
|
||||
tmux_append_setwo "window-status-bell-style" "bg=${col_red2},fg=${col_bg}"
|
||||
|
||||
## Theme settings mixed with colors (unfortunately, but there is no cleaner way)
|
||||
tmux_append_seto "status-justify" "left"
|
||||
tmux_append_seto "status-left-style" none
|
||||
tmux_append_seto "status-left-length" "80"
|
||||
tmux_append_seto "status-right-style" none
|
||||
tmux_append_seto "status-right-length" "80"
|
||||
tmux_append_setwo "window-status-separator" ""
|
||||
|
||||
tmux_append_seto "status-left" "#[bg=${col_bg3},fg=${col_fg3}] ${_left_status_a} #[bg=${col_bg1},fg=${col_bg3},nobold,noitalics,nounderscore]"
|
||||
|
||||
# right status
|
||||
local _status_right_bg=${col_bg1}
|
||||
if [[ "$_statusbar_alpha" == "true" ]]; then _status_right_bg="default"; fi
|
||||
tmux_append_seto "status-right" "#[bg=${_status_right_bg},fg=${col_bg2},nobold,nounderscore,noitalics]#[bg=${col_bg2},fg=${col_fg4}] ${_right_status_x} ${_right_status_y} #[bg=${col_bg2},fg=${col_fg3},nobold,noitalics,nounderscore]#[bg=${col_fg3},fg=${col_bg1}] ${_right_status_z}"
|
||||
|
||||
# current window
|
||||
local _current_window_status_format_bg=${col_bg1}
|
||||
if [[ "$_statusbar_alpha" == "true" ]]; then _current_window_status_format_bg="default"; fi
|
||||
tmux_append_setwo "window-status-current-format" "#[bg=${col_yellow2},fg=${col_bg1},nobold,noitalics,nounderscore]#[bg=${col_yellow2},fg=${col_bg2}] #I #[bg=${col_yellow2},fg=${col_bg2},bold] #W#{?window_zoomed_flag,*Z,} #{?window_end_flag,#[bg=${_current_window_status_format_bg}],#[bg=${col_bg1}]}#[fg=${col_yellow2},nobold,noitalics,nounderscore]"
|
||||
|
||||
# default window
|
||||
local _default_window_status_format_bg=${col_bg1}
|
||||
if [[ "$_statusbar_alpha" == "true" ]]; then _default_window_status_format_bg="default"; fi
|
||||
tmux_append_setwo "window-status-format" "#[bg=${col_bg2},fg=${col_bg1},noitalics]#[bg=${col_bg2},fg=${col_fg1}] #I #[bg=${col_bg2},fg=${col_fg1}] #W #{?window_end_flag,#[bg=${_default_window_status_format_bg}],#[bg=${col_bg1}]}#[fg=${col_bg2},noitalics]"
|
||||
}
|
61
src/theme_gruvbox_light.sh
Normal file
61
src/theme_gruvbox_light.sh
Normal file
|
@ -0,0 +1,61 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Themes may use different colors in sets therefore we setup dark and light
|
||||
# separately.
|
||||
#
|
||||
# shellcheck disable=SC2154
|
||||
theme_set_light() {
|
||||
local _left_status_value _right_status_value _window_status_current_format _window_status_format
|
||||
_left_status_a=$1
|
||||
_right_status_x=$2
|
||||
_right_status_y=$3
|
||||
_right_status_z=$4
|
||||
|
||||
tmux_append_seto "status" "on"
|
||||
|
||||
# default statusbar color
|
||||
tmux_append_seto "status-style" "bg=${col_bg1},fg=${col_fg1}"
|
||||
|
||||
# default window title colors
|
||||
tmux_append_setwo "window-status-style" "bg=${col_yellow2},fg=${col_bg1}"
|
||||
|
||||
# default window with an activity alert
|
||||
tmux_append_setwo "window-status-activity-style" "bg=${col_bg1},fg=${col_fg3}"
|
||||
|
||||
# active window title colors
|
||||
tmux_append_setwo "window-status-current-style" "bg=default,fg=${col_bg1}" # TODO cosider removing red!
|
||||
|
||||
# pane border
|
||||
tmux_append_seto "pane-active-border-style" "fg=${col_fg2}"
|
||||
tmux_append_seto "pane-border-style" "fg=${col_bg1}"
|
||||
|
||||
# message infos
|
||||
tmux_append_seto "message-style" "bg=${col_bg2},fg=${col_fg1}"
|
||||
|
||||
# writing commands inactive
|
||||
tmux_append_seto "message-command-style" "bg=${col_fg3},fg=${col_bg1}"
|
||||
|
||||
# pane number display
|
||||
tmux_append_seto "display-panes-active-colour" "${col_fg2}"
|
||||
tmux_append_seto "display-panes-colour" "${col_bg1}"
|
||||
|
||||
# clock
|
||||
tmux_append_setwo "clock-mode-colour" "${col_blue2}"
|
||||
|
||||
# bell
|
||||
tmux_append_setwo "window-status-bell-style" "bg=${col_red2},fg=${col_bg}"
|
||||
|
||||
## Theme settings mixed with colors (unfortunately, but there is no cleaner way)
|
||||
tmux_append_seto "status-justify" "left"
|
||||
tmux_append_seto "status-left-style" none
|
||||
tmux_append_seto "status-left-length" "80"
|
||||
tmux_append_seto "status-right-style" none
|
||||
tmux_append_seto "status-right-length" "80"
|
||||
tmux_append_setwo "window-status-separator" ""
|
||||
|
||||
tmux_append_seto "status-left" "#[bg=${col_bg3},fg=${col_fg3}] ${_left_status_a} #[bg=${col_bg1},fg=${col_bg3},nobold,noitalics,nounderscore]"
|
||||
tmux_append_seto "status-right" "#[bg=${col_bg1},fg=${col_bg2},nobold,nounderscore,noitalics]#[bg=${col_bg2},fg=${col_fg4}] ${_right_status_x} ${_right_status_y} #[bg=${col_bg2},fg=${col_fg3},nobold,noitalics,nounderscore]#[bg=${col_fg3},fg=${col_bg1}] ${_right_status_z}"
|
||||
|
||||
tmux_append_setwo "window-status-current-format" "#[bg=${col_yellow2},fg=${col_bg1},nobold,noitalics,nounderscore]#[bg=${col_yellow2},fg=${col_bg2}] #I #[bg=${col_yellow2},fg=${col_bg2},bold] #W#{?window_zoomed_flag,*Z,} #[bg=${col_bg1},fg=${col_yellow2},nobold,noitalics,nounderscore]"
|
||||
tmux_append_setwo "window-status-format" "#[bg=${col_bg2},fg=${col_bg1},noitalics]#[bg=${col_bg2},fg=${col_fg1}] #I #[bg=${col_bg2},fg=${col_fg1}] #W #[bg=${col_bg1},fg=${col_bg2},noitalics]"
|
||||
}
|
78
src/tmux_utils.sh
Normal file
78
src/tmux_utils.sh
Normal file
|
@ -0,0 +1,78 @@
|
|||
#!/bin/bash
|
||||
|
||||
# get desired option from tmux or default
|
||||
tmux_get_option_or_default() {
|
||||
local _option_name _default_value
|
||||
_option_name="$1"
|
||||
_default_value="$2"
|
||||
|
||||
local _current_option_value
|
||||
_current_option_value=$(tmux show-option -gqv "$_option_name")
|
||||
if [[ -n "$_current_option_value" ]]; then
|
||||
echo "$_current_option_value"
|
||||
else
|
||||
echo "$_default_value"
|
||||
fi
|
||||
}
|
||||
|
||||
# get desired tmux option or use given default value
|
||||
tmux_get_option() {
|
||||
local _option_name _default_value
|
||||
_option_name="$1"
|
||||
_default_value="$2"
|
||||
|
||||
local _current_option_value
|
||||
_current_option_value=$(tmux show-option -gqv "$_option_name")
|
||||
if [[ -n "$_current_option_value" ]]; then
|
||||
echo "$_current_option_value"
|
||||
else
|
||||
echo "$_default_value"
|
||||
fi
|
||||
}
|
||||
|
||||
# get desired window-option from tmux or default
|
||||
tmux_get_window_option() {
|
||||
local _option_name _default_value
|
||||
_option_name="$1"
|
||||
_default_value="$2"
|
||||
|
||||
local _current_option_value
|
||||
_current_option_value=$(tmux show-window-option -gqv "$_option_name")
|
||||
if [[ -n "$_current_option_value" ]]; then
|
||||
echo "$_current_option_value"
|
||||
else
|
||||
echo "$_default_value"
|
||||
fi
|
||||
}
|
||||
|
||||
# append preconfigured tmux set-option to global array
|
||||
tmux_append_seto() {
|
||||
local _option _value _result
|
||||
_option="$1"
|
||||
_value="$2"
|
||||
TMUX_CMDS+=("set-option" "-gq" "${_option}" "${_value}" ";")
|
||||
}
|
||||
|
||||
# append preconfigured tmux set-window-option to global array
|
||||
tmux_append_setwo() {
|
||||
local _option _value _result
|
||||
_option="$1"
|
||||
_value="$2"
|
||||
TMUX_CMDS+=("set-window-option" "-gq" "${_option}" "${_value}" ";")
|
||||
}
|
||||
|
||||
# imediately execute tmux option
|
||||
tmux_set_option_now() {
|
||||
local _option_name _value
|
||||
_option_name="$1"
|
||||
_value="$2"
|
||||
tmux set-option -gq "$_option_name" "$_value"
|
||||
}
|
||||
|
||||
# imediately execute tmux option
|
||||
tmux_set_window_option_now() {
|
||||
local _option_name _value
|
||||
_option_name="$1"
|
||||
_value="$2"
|
||||
tmux set-window-option -gq "$_option_name" "$_value"
|
||||
}
|
|
@ -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:
|
|
@ -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 "
|
||||
|
||||
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:
|
|
@ -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:
|
|
@ -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:
|
Loading…
Add table
Add a link
Reference in a new issue