Browse Source

Added tmux theme files; fixed sway screenshotting

master
chodak166 3 days ago
parent
commit
a825c6d58a
  1. 12
      .config/sway/config
  2. 37
      .config/sway/scripts/screenshot
  3. 1
      .tmux.d/tmux-gruvbox
  4. 6
      .tmux.d/tmux-gruvbox/gruvbox-tpm.tmux
  5. 98
      .tmux.d/tmux-gruvbox/src/gruvbox-main.sh
  6. 19
      .tmux.d/tmux-gruvbox/src/helper_methods.sh
  7. 46
      .tmux.d/tmux-gruvbox/src/palette_gruvbox_dark.sh
  8. 46
      .tmux.d/tmux-gruvbox/src/palette_gruvbox_dark256.sh
  9. 46
      .tmux.d/tmux-gruvbox/src/palette_gruvbox_light.sh
  10. 46
      .tmux.d/tmux-gruvbox/src/palette_gruvbox_light256.sh
  11. 79
      .tmux.d/tmux-gruvbox/src/theme_gruvbox_dark.sh
  12. 79
      .tmux.d/tmux-gruvbox/src/theme_gruvbox_light.sh
  13. 79
      .tmux.d/tmux-gruvbox/src/theme_gruvbox_light256.sh
  14. 63
      .tmux.d/tmux-gruvbox/src/tmux_utils.sh

12
.config/sway/config

@ -265,14 +265,10 @@ bindsym $mod+r mode "resize"
# Omarchy also uses grim + slurp (+ satty for annotation). # Omarchy also uses grim + slurp (+ satty for annotation).
################################################################# #################################################################
# Fullscreen screenshot → save to ~/Pictures and copy to clipboard # Screenshots — capture once, save to file + copy to clipboard
bindsym Print exec grim -t png ~/Pictures/screenshot_$(date +%Y%m%d_%H%M%S).png && grim -t png - | wl-copy -t image/png bindsym Print exec $scriptsDir/screenshot full
bindsym Shift+Print exec $scriptsDir/screenshot area
# Region screenshot → select area with slurp bindsym Control+Print exec $scriptsDir/screenshot window
bindsym Shift+Print exec grim -t png -g "$(slurp)" ~/Pictures/screenshot_$(date +%Y%m%d_%H%M%S).png && grim -t png -g "$(slurp)" - | wl-copy -t image/png
# Active window screenshot (sway-specific: get focused window geometry)
bindsym Control+Print exec grim -t png -g "$(swaymsg -t get_tree | jq -j '.. | select(.type?) | select(.focused) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')" ~/Pictures/screenshot_$(date +%Y%m%d_%H%M%S).png
################################################################# #################################################################

37
.config/sway/scripts/screenshot

@ -0,0 +1,37 @@
#!/bin/bash
#----------------------------------------------------------------
# screenshot — Capture screen, window, or region
#
# Captures once, saves to ~/Pictures and copies to clipboard.
#
# Usage:
# screenshot full — full screen
# screenshot area — select region with slurp
# screenshot window — focused window
#
# Dependencies: grim, slurp, wl-copy, swaymsg, jq
#----------------------------------------------------------------
dir=~/Pictures
mkdir -p "$dir"
file="$dir/screenshot_$(date +%Y%m%d_%H%M%S).png"
case "$1" in
full)
grim -t png "$file"
;;
area)
geo=$(slurp)
grim -t png -g "$geo" "$file"
;;
window)
geo=$(swaymsg -t get_tree | jq -j '.. | select(.type?) | select(.focused) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')
grim -t png -g "$geo" "$file"
;;
*)
echo "Usage: screenshot {full|area|window}"
exit 1
;;
esac
wl-copy -t image/png < "$file"

1
.tmux.d/tmux-gruvbox

@ -1 +0,0 @@
Subproject commit aeb30c7172a8ed8663409207814cf47d9df10d15

6
.tmux.d/tmux-gruvbox/gruvbox-tpm.tmux

@ -0,0 +1,6 @@
#!/usr/bin/env bash
CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${CURRENT_DIR}/src/gruvbox-main.sh"
# vim: ai et ft=bash

98
.tmux.d/tmux-gruvbox/src/gruvbox-main.sh

@ -0,0 +1,98 @@
#!/bin/bash
CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly CURRENT_DIR
# hold the array of all command to configure tmux theme
declare -a TMUX_CMDS
# load libraries
# shellcheck disable=1091
source "${CURRENT_DIR}/helper_methods.sh"
# shellcheck disable=1091
source "${CURRENT_DIR}/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)
readonly DEFAULT_THEME="dark256"
readonly DEFAULT_STATUSBAR_ALPHA='false'
# defaults for theme option (with color interpolation)
readonly DEFAULT_LEFT_STATUS_A='#S'
readonly DEFAULT_RIGHT_STATUS_X='%Y-%m-%d'
readonly DEFAULT_RIGHT_STATUS_Y='%H:%M'
readonly DEFAULT_RIGHT_STATUS_Z='#h'
main() {
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}/palette_gruvbox_light.sh"
# shellcheck disable=1091
source "${CURRENT_DIR}/theme_gruvbox_light.sh"
;;
light256)
# shellcheck disable=1091
source "${CURRENT_DIR}/palette_gruvbox_light256.sh"
# shellcheck disable=1091
source "${CURRENT_DIR}/theme_gruvbox_light256.sh"
;;
dark)
# shellcheck disable=1091
source "${CURRENT_DIR}/palette_gruvbox_dark.sh"
# shellcheck disable=1091
source "${CURRENT_DIR}/theme_gruvbox_dark.sh"
;;
dark256 | *)
# shellcheck disable=1091
source "${CURRENT_DIR}/palette_gruvbox_dark256.sh"
# shellcheck disable=1091
source "${CURRENT_DIR}/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")
local _theme_args
_theme_args=(
"$_status_left_a"
"$_status_right_x"
"$_status_right_y"
"$_status_right_z"
"$_statusbar_alpha"
)
case $_theme in
light256)
# light256 have slightly different colors placement then regular light 16-bit
theme_set_light256 "${_theme_args[@]}"
;;
light)
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
.tmux.d/tmux-gruvbox/src/helper_methods.sh

@ -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
.tmux.d/tmux-gruvbox/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"

46
.tmux.d/tmux-gruvbox/src/palette_gruvbox_dark256.sh

@ -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
.tmux.d/tmux-gruvbox/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"

46
.tmux.d/tmux-gruvbox/src/palette_gruvbox_light256.sh

@ -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
.tmux.d/tmux-gruvbox/src/theme_gruvbox_dark.sh

@ -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]"
}

79
.tmux.d/tmux-gruvbox/src/theme_gruvbox_light.sh

@ -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_light() {
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]"
}

79
.tmux.d/tmux-gruvbox/src/theme_gruvbox_light256.sh

@ -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_light256() {
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_bg2}"
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_fg2},fg=${col_bg1}] ${_left_status_a} #[bg=${col_bg2},fg=${col_fg2},nobold,noitalics,nounderscore]"
# right status
local _status_right_bg=${col_bg2}
if [[ "$_statusbar_alpha" == "true" ]]; then _status_right_bg="default"; fi
tmux_append_seto "status-right" "#[bg=${_status_right_bg},fg=${col_fg4},nobold,nounderscore,noitalics]#[bg=${col_fg4},fg=${col_bg1}] ${_right_status_x} ${_right_status_y} #[bg=${col_fg4},fg=${col_fg2},nobold,noitalics,nounderscore]#[bg=${col_fg2},fg=${col_bg1}] ${_right_status_z}"
# current window
local _current_window_status_format_bg=${col_bg2}
if [[ "$_statusbar_alpha" == "true" ]]; then _current_window_status_format_bg="default"; fi
tmux_append_setwo "window-status-current-format" "#[bg=${col_yellow},fg=${col_bg2},nobold,noitalics,nounderscore]#[bg=${col_yellow},fg=${col_fg1}] #I #[bg=${col_yellow},fg=${col_fg1},bold] #W#{?window_zoomed_flag,*Z,} #{?window_end_flag,#[bg=${_current_window_status_format_bg}],#[bg=${col_bg2}]}#[fg=${col_yellow},nobold,noitalics,nounderscore]"
# default window
local _default_window_status_format_bg=${col_bg2}
if [[ "$_statusbar_alpha" == "true" ]]; then _default_window_status_format_bg="default"; fi
tmux_append_setwo "window-status-format" "#[bg=${col_bg3},fg=${col_bg2},noitalics]#[bg=${col_bg3},fg=${col_fg2}] #I #[bg=${col_bg3},fg=${col_fg2}] #W #{?window_end_flag,#[bg=${_default_window_status_format_bg}],#[bg=${col_bg2}]}#[fg=${col_bg3},noitalics]"
}

63
.tmux.d/tmux-gruvbox/src/tmux_utils.sh

@ -0,0 +1,63 @@
#!/bin/bash
# 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"
}
Loading…
Cancel
Save