diff --git a/src/battery-widget.sh b/src/battery-widget.sh index 305127ad..61250244 100755 --- a/src/battery-widget.sh +++ b/src/battery-widget.sh @@ -3,11 +3,11 @@ # check if not enabled SHOW_BATTERY_WIDGET=$(tmux show-option -gv @tokyo-night-tmux_show_battery_widget 2>/dev/null) if [ "${SHOW_BATTERY_WIDGET}" != "1" ]; then - exit 0 + exit 0 fi # get value from tmux config -BATTERY_NAME=$(tmux show-option -gv @tokyo-night-tmux_battery_name 2>/dev/null) # default 'BAT1' +BATTERY_NAME=$(tmux show-option -gv @tokyo-night-tmux_battery_name 2>/dev/null) # default 'BAT1' BATTERY_LOW=$(tmux show-option -gv @tokyo-night-tmux_battery_low_threshold 2>/dev/null) # default 21 RESET="#[fg=brightwhite,bg=#15161e,nobold,noitalics,nounderscore,nodim]" @@ -49,10 +49,11 @@ case "${BATTERY_STATUS}" in ICONS="${NOT_CHARGING_ICON}" ;; "Full" | "charged") - ICONS="${NOT_CHARGING_ICON}" + ICONS="${NOT_CHARGING_ICON}" ;; -*) ICONS="${NO_BATTERY_ICON}" - BATTERY_PERCENTAGE="0" +*) + ICONS="${NO_BATTERY_ICON}" + BATTERY_PERCENTAGE="0" ;; esac diff --git a/src/datetime-widget.sh b/src/datetime-widget.sh index c35d1fcc..b8cf8874 100755 --- a/src/datetime-widget.sh +++ b/src/datetime-widget.sh @@ -6,6 +6,9 @@ if [[ $SHOW_DATETIME == "0" ]]; then exit 0 fi +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $CURRENT_DIR/themes.sh + # Assign values based on user config date_format=$(tmux show-option -gv @tokyo-night-tmux_date_format 2>/dev/null) time_format=$(tmux show-option -gv @tokyo-night-tmux_time_format 2>/dev/null) @@ -35,4 +38,4 @@ else time_string="%H:%M" fi -echo "#[fg=#a9b1d6,bg=#24283B] $date_string #[]❬ $time_string " +echo "$RESET#[fg=${THEME[foreground]},bg=${THEME[bblack]}] $date_string #[]❬ $time_string " diff --git a/src/git-status.sh b/src/git-status.sh index eb350e14..c7b5bb32 100755 --- a/src/git-status.sh +++ b/src/git-status.sh @@ -1,7 +1,15 @@ #!/usr/bin/env bash +SHOW_NETSPEED=$(tmux show-option -gv @tokyo-night-tmux_show_git) +if [ "$SHOW_NETSPEED" == "0" ]; then + exit 0 +fi + +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $CURRENT_DIR/themes.sh + cd $1 -RESET="#[fg=brightwhite,bg=#15161e,nobold,noitalics,nounderscore,nodim]" +RESET="#[fg=${THEME[foreground]},bg=${THEME[background]},nobold,noitalics,nounderscore,nodim]" BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) STATUS=$(git status --porcelain 2>/dev/null | egrep "^(M| M)" | wc -l) BRANCH_SIZE=${#BRANCH} @@ -30,15 +38,15 @@ fi STATUS_UNTRACKED="$(git ls-files --other --directory --exclude-standard | wc -l | bc)" if [[ $CHANGED_COUNT > 0 ]]; then - STATUS_CHANGED="#[fg=#e0af68,bg=#15161e,bold] ${CHANGED_COUNT} " + STATUS_CHANGED="#[fg=${THEME[yellow]},bg=${THEME[background]},bold] ${CHANGED_COUNT} " fi if [[ $INSERTIONS_COUNT > 0 ]]; then - STATUS_INSERTIONS="#[fg=#73daca,bg=#15161e,bold] ${INSERTIONS_COUNT} " + STATUS_INSERTIONS="#[fg=${THEME[green]},bg=${THEME[background]},bold] ${INSERTIONS_COUNT} " fi if [[ $DELETIONS_COUNT > 0 ]]; then - STATUS_DELETIONS="#[fg=#f7768e,bg=#15161e,bold] ${DELETIONS_COUNT} " + STATUS_DELETIONS="#[fg=${THEME[red]},bg=${THEME[background]},bold] ${DELETIONS_COUNT} " fi if [[ $STATUS_UNTRACKED > 0 ]]; then diff --git a/src/music-tmux-statusbar.sh b/src/music-tmux-statusbar.sh index 1848f5c8..5bf7b1dc 100755 --- a/src/music-tmux-statusbar.sh +++ b/src/music-tmux-statusbar.sh @@ -2,20 +2,24 @@ # Check the global value SHOW_MUSIC=$(tmux show-option -gv @tokyo-night-tmux_show_music) + if [ "$SHOW_MUSIC" != "1" ]; then exit 0 fi +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $CURRENT_DIR/themes.sh + # Value parser for nowplaying-cli parse_npcli_value() { echo "$NPCLI_STATUS" | grep "$1" | awk -F '= ' '{print $2}' | tr -d '";' } -ACCENT_COLOR="#7aa2f7" -SECONDARY_COLOR="#24283B" -BG_COLOR="#1F2335" -BG_BAR="#15161e" -TIME_COLOR="#414868" +ACCENT_COLOR="${THEME[blue]}" +SECONDARY_COLOR="${THEME[background]}" +BG_COLOR="${THEME[background]}" +BG_BAR="${THEME[background]}" +TIME_COLOR="${THEME[black]}" if [[ $1 =~ ^[[:digit:]]+$ ]]; then MAX_TITLE_WIDTH=$1 @@ -96,9 +100,9 @@ else fi if [ -n "$TITLE" ]; then if [ "$STATUS" = "playing" ]; then - PLAY_STATE="$OUTPUT" + PLAY_STATE="░ $OUTPUT" else - PLAY_STATE="󰏤$OUTPUT" + PLAY_STATE=░ "󰏤$OUTPUT" fi OUTPUT="$PLAY_STATE $TITLE" @@ -120,13 +124,13 @@ fi if [ -z "$OUTPUT" ]; then echo "$OUTPUT #[fg=green,bg=default]" else - OUT=" $OUTPUT $TIME " - ONLY_OUT=" $OUTPUT " + OUT="$OUTPUT $TIME " + ONLY_OUT="$OUTPUT " TIME_INDEX=${#ONLY_OUT} OUTPUT_LENGTH=${#OUT} PERCENT=$((POSITION * 100 / DURATION)) PROGRESS=$((OUTPUT_LENGTH * PERCENT / 100)) - O=" $OUTPUT" + O="$OUTPUT" if [ $PROGRESS -le $TIME_INDEX ]; then echo "#[nobold,fg=$BG_COLOR,bg=$ACCENT_COLOR]${O:0:PROGRESS}#[fg=$ACCENT_COLOR,bg=$BG_BAR]${O:PROGRESS:TIME_INDEX} #[fg=$TIME_COLOR,bg=$BG_BAR]$TIME " diff --git a/src/netspeed.sh b/src/netspeed.sh index b2060988..a89edc8b 100755 --- a/src/netspeed.sh +++ b/src/netspeed.sh @@ -10,6 +10,9 @@ if [ "$SHOW_NETSPEED" != "1" ]; then exit 0 fi +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $CURRENT_DIR/themes.sh + # Get network interface INTERFACE=$(tmux show-option -gv @tokyo-night-tmux_netspeed_iface 2>/dev/null) @@ -48,4 +51,11 @@ TIME_DIFF=1 RX_SPEED=$(readable_format "$((RX_DIFF / TIME_DIFF))") TX_SPEED=$(readable_format "$((TX_DIFF / TIME_DIFF))") -echo "  $RX_SPEED  $TX_SPEED " +NETWORK_ICON="󰈀" + +# TODO: Use a more sophisticated method to detect iface type (wifi, ethernet, etc) +if [ ${INTERFACE:0:1} == "w" ]; then + NETWORK_ICON="" +fi + +echo "${RESET}░ #[fg=${THEME[bgreen]}]󰛴${RESET} $RX_SPEED #[fg=${THEME[bblue]}]󰛶${RESET} $TX_SPEED ${NETWORK_ICON} #[dim]$INTERFACE " diff --git a/src/themes.sh b/src/themes.sh new file mode 100644 index 00000000..93ef2898 --- /dev/null +++ b/src/themes.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +SELECTED_THEME="$(tmux show-option -gv @tokyo-night-tmux_theme)" + +case $SELECTED_THEME in +"storm") + declare -A THEME=( + ["background"]="#24283b" + ["foreground"]="#a9b1d6" + ["black"]="#414868" + ["blue"]="#7aa2f7" + ["cyan"]="#7dcfff" + ["green"]="#73daca" + ["magenta"]="#bb9af7" + ["red"]="#f7768e" + ["white"]="#a9b1d6" + ["yellow"]="#e0af68" + + ["bblack"]="#414868" + ["bblue"]="#7aa2f7" + ["bcyan"]="#7dcfff" + ["bgreen"]="#41a6b5" + ["bmagenta"]="#bb9af7" + ["bred"]="#f7768e" + ["bwhite"]="#787c99" + ["byellow"]="#e0af68" + ) + ;; + +"day") + declare -A THEME=( + ["background"]="#d5d6db" + ["foreground"]="#343b58" + ["black"]="#0f0f14" + ["blue"]="#34548a" + ["cyan"]="#0f4b6e" + ["green"]="#33635c" + ["magenta"]="#5a4a78" + ["red"]="#8c4351" + ["white"]="#343b58" + ["yellow"]="#8f5e15" + + ["bblack"]="#9699a3" + ["bblue"]="#34548a" + ["bcyan"]="#0f4b6e" + ["bgreen"]="#33635c" + ["bmagenta"]="#5a4a78" + ["bred"]="#8c4351" + ["bwhite"]="#343b58" + ["byellow"]="#8f5815" + ) + ;; + +\ + *) + # Default to night theme + declare -A THEME=( + ["background"]="#1A1B26" + ["foreground"]="#a9b1d6" + ["black"]="#414868" + ["blue"]="#7aa2f7" + ["cyan"]="#7dcfff" + ["green"]="#73daca" + ["magenta"]="#bb9af7" + ["red"]="#f7768e" + ["white"]="#c0caf5" + ["yellow"]="#e0af68" + + ["bblack"]="#2A2F41" + ["bblue"]="#7aa2f7" + ["bcyan"]="#7dcfff" + ["bgreen"]="#41a6b5" + ["bmagenta"]="#bb9af7" + ["bred"]="#ff9e64" + ["bwhite"]="#787c99" + ["byellow"]="#e0af68" + ) + ;; +esac + +THEME['ghgreen']="#3fb950" +THEME['ghmagenta']="#A371F7" +THEME['ghred']="#d73a4a" +THEME['ghyellow']="#d29922" + +RESET="#[fg=${THEME[foreground]},bg=${THEME[background]},nobold,noitalics,nounderscore,nodim]" diff --git a/src/wb-git-status.sh b/src/wb-git-status.sh index c7ee36de..d1fd3ae4 100755 --- a/src/wb-git-status.sh +++ b/src/wb-git-status.sh @@ -1,7 +1,13 @@ #!/usr/bin/env bash +SHOW_WIDGET=$(tmux show-option -gv @tokyo-night-tmux_show_wbg) +if [ "$SHOW_WIDGET" == "0" ]; then + exit 0 +fi + +CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $CURRENT_DIR/themes.sh cd $1 -RESET="#[fg=brightwhite,bg=#15161e,nobold,noitalics,nounderscore,nodim,nostrikethrough]" BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) PROVIDER=$(git config remote.origin.url | awk -F '@|:' '{print $2}') STATUS=$(git status --porcelain 2>/dev/null | egrep "^(M| M)" | wc -l) @@ -11,12 +17,12 @@ PROVIDER_ICON="" PR_COUNT=0 REVIEW_COUNT=0 ISSUE_COUNT=0 -REMOTE_DIFF=0 +BUG_COUNT=0 PR_STATUS="" REVIEW_STATUS="" ISSUE_STATUS="" -REMOTE_STATUS="" +BUG_STATUS="" if [[ $PROVIDER == "github.com" ]]; then @@ -24,11 +30,14 @@ if [[ $PROVIDER == "github.com" ]]; then exit 1 fi - PROVIDER_ICON="$RESET#[fg=#fafafa] " + PROVIDER_ICON="$RESET#[fg=${THEME[foreground]}] " if test "$BRANCH" != ""; then PR_COUNT=$(gh pr list --json number --jq 'length' | bc) REVIEW_COUNT=$(gh pr status --json reviewRequests --jq '.needsReview | length' | bc) - ISSUE_COUNT=$(gh issue status --json assignees --jq '.assigned | length' | bc) + RES=$(gh issue list --json "assignees,labels" --assignee @me) + ISSUE_COUNT=$(echo $RES | jq 'length' | bc) + BUG_COUNT=$(echo $RES | jq 'map(select(.labels[].name == "bug")) | length' | bc) + ISSUE_COUNT=$((ISSUE_COUNT - BUG_COUNT)) else exit 0 fi @@ -44,19 +53,23 @@ else fi if [[ $PR_COUNT > 0 ]]; then - PR_STATUS="#[fg=#3fb950,bg=#15161e,bold] ${RESET}${PR_COUNT} " + PR_STATUS="#[fg=${THEME[ghgreen]},bg=${THEME[background]},bold] ${RESET}${PR_COUNT} " fi if [[ $REVIEW_COUNT > 0 ]]; then - REVIEW_STATUS="#[fg=#d29922,bg=#15161e,bold] ${RESET}${REVIEW_COUNT} " + REVIEW_STATUS="#[fg=${THEME[ghyellow]},bg=${THEME[background]},bold] ${RESET}${REVIEW_COUNT} " fi if [[ $ISSUE_COUNT > 0 ]]; then - ISSUE_STATUS="#[fg=#3fb950,bg=#15161e,bold] ${RESET}${ISSUE_COUNT} " + ISSUE_STATUS="#[fg=${THEME[ghgreen]},bg=${THEME[background]},bold] ${RESET}${ISSUE_COUNT} " +fi + +if [[ $BUG_COUNT > 0 ]]; then + BUG_STATUS="#[fg=${THEME[ghred]},bg=${THEME[background]},bold] ${RESET}${BUG_COUNT} " fi if [[ $PR_COUNT > 0 || $REVIEW_COUNT > 0 || $ISSUE_COUNT > 0 ]]; then - WB_STATUS="#[fg=#464646,bg=#15161e,bold] $RESET$PROVIDER_ICON $RESET$PR_STATUS$REVIEW_STATUS$ISSUE_STATUS" + WB_STATUS="#[fg=${THEME[black]},bg=${THEME[background]},bold] $RESET$PROVIDER_ICON $RESET$PR_STATUS$REVIEW_STATUS$ISSUE_STATUS$BUG_STATUS" fi echo "$WB_STATUS" diff --git a/tokyo-night.tmux b/tokyo-night.tmux index f7e433de..ccf08af5 100755 --- a/tokyo-night.tmux +++ b/tokyo-night.tmux @@ -7,26 +7,28 @@ # email hi@logico.com.ar + # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -RESET="#[fg=brightwhite,bg=#15161e,nobold,noitalics,nounderscore,nodim]" CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +SCRIPTS_PATH="$CURRENT_DIR/src" + +source $SCRIPTS_PATH/themes.sh tmux set -g status-left-length 80 tmux set -g status-right-length 150 +RESET="#[fg=${THEME[foreground]},bg=${THEME[background]},nobold,noitalics,nounderscore,nodim]" # Highlight colors -tmux set -g mode-style "fg=#a9b1d6,bg=#2A2F41" +tmux set -g mode-style "fg=${THEME[bgreen]},bg=${THEME[bblack]}" -tmux set -g message-style "bg=#7aa2f7,fg=#2A2F41" -tmux set -g message-command-style "fg=#c0caf5,bg=#2A2F41" +tmux set -g message-style "bg=${THEME[blue]},fg=${THEME[background]}" +tmux set -g message-command-style "fg=${THEME[white]},bg=${THEME[black]}" -tmux set -g pane-border-style "fg=#2A2F41" -tmux set -g pane-active-border-style "fg=#7aa2f7" +tmux set -g pane-border-style "fg=${THEME[bblack]}" +tmux set -g pane-active-border-style "fg=${THEME[blue]}" +tmux set -g pane-border-status off -tmux set -g status-style bg="#1A1B26" +tmux set -g status-style bg="${THEME[background]}" -SCRIPTS_PATH="$CURRENT_DIR/src" TMUX_VARS="$(tmux show -g)" -PANE_BASE="$(echo "$TMUX_VARS" | grep pane-base-index | cut -d" " -f2 | bc)" default_window_id_style="digital" default_pane_id_style="hsquare" @@ -52,13 +54,13 @@ battery_status="#($SCRIPTS_PATH/battery-widget.sh)" #+--- Bars LEFT ---+ # Session name -tmux set -g status-left "#[fg=#1F2335,bg=#2D96FA,bold] #{?client_prefix,󰠠 ,#[dim]󰤂 }#[bold,nodim]#S " +tmux set -g status-left "#[fg=${THEME[bblack]},bg=${THEME[blue]},bold] #{?client_prefix,󰠠 ,#[dim]󰤂 }#[bold,nodim]#S " #+--- Windows ---+ # Focus -tmux set -g window-status-current-format "$RESET#[fg=#44dfaf,bg=#1F2335]  $window_number #[fg=#a9b1d6,bold,nodim]#W#[nobold,dim]#{?window_zoomed_flag, $zoom_number, $custom_pane} #{?window_last_flag,,} " +tmux set -g window-status-current-format "$RESET#[fg=${THEME[green]},bg=${THEME[bblack]}] #{?#{==:#{pane_current_command},ssh},󰣀,} #[fg=${THEME[foreground]},bold,nodim]$window_number #W#[nobold]#{?window_zoomed_flag, $zoom_number, $custom_pane} #{?window_last_flag,,} " # Unfocused -tmux set -g window-status-format "$RESET#[fg=#c0caf5,bg=default,none,dim]  $window_number #W#[nobold,dim]#{?window_zoomed_flag, $zoom_number, $custom_pane} #[fg=yellow]#{?window_last_flag,󰁯 , } " +tmux set -g window-status-format "$RESET#[fg=${THEME[foreground]}] #{?#{==:#{pane_current_command},ssh},󰣀,}${RESET} $window_number #W#[nobold,dim]#{?window_zoomed_flag, $zoom_number, $custom_pane} #[fg=${THEME[yellow]}]#{?window_last_flag,󰁯 , } " #+--- Bars RIGHT ---+ tmux set -g status-right "$battery_status$current_path$cmus_status#[fg=#a9b1d6,bg=#24283B]$netspeed$git_status$wb_git_status$date_and_time"