From 09a96946ff2117a80c4fd1ace248600bf73b19ff Mon Sep 17 00:00:00 2001 From: Janno Tjarks Date: Wed, 22 Dec 2021 22:50:05 +0100 Subject: [PATCH 01/52] Added synchronize-panes plugin --- INSTALL.md | 10 +++++++++- README.md | 1 + scripts/dracula.sh | 6 ++++++ scripts/synchronize_panes.sh | 26 ++++++++++++++++++++++++++ scripts/utils.sh | 11 +++++++++++ 5 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 scripts/synchronize_panes.sh diff --git a/INSTALL.md b/INSTALL.md index f6e915e..c0afd6f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,7 @@ To enable plugins set up the `@dracula-plugins` option in you `.tmux.conf` file, The order that you define the plugins will be the order on the status bar left to right. ```bash -# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, weather, time +# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, weather, time, synchronize-panes set -g @dracula-plugins "cpu-usage gpu-usage ram-usage" ``` @@ -189,3 +189,11 @@ Switch from default fahrenheit to celsius set -g @dracula-show-fahrenheit false ``` + +#### synchronize-panes options + +Customize label + +```bash +set -g @dracula-synchronize-panes-label "Sync" +``` diff --git a/README.md b/README.md index eef0aaa..af093ef 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul * When prefix is enabled smiley face turns from green to yellow * When charging, 'AC' is displayed * If forecast information is available, a ☀, ☁, ☂, or ❄ unicode character corresponding with the forecast is displayed alongside the temperature +* Info if the Panes are synchronized ## Compatibility diff --git a/scripts/dracula.sh b/scripts/dracula.sh index f530187..d82517b 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -23,6 +23,7 @@ main() show_border_contrast=$(get_tmux_option "@dracula-border-contrast" false) show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) + show_synchronize_panes_label=$(get_tmux_option "@dracula-synchronize-panes-label" "Sync") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") # Dracula Color Pallette @@ -185,6 +186,11 @@ main() script="%a %m/%d %I:%M %p ${timezone} " fi fi + + if [ $plugin = "synchronize-panes" ]; then + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-synchronize-panes-colors" "cyan dark_gray") + script="#($current_dir/synchronize_panes.sh $show_synchronize_panes_label)" + fi if $show_powerline; then tmux set-option -ga status-right "#[fg=${!colors[0]},bg=${powerbg},nobold,nounderscore,noitalics]${right_sep}#[fg=${!colors[1]},bg=${!colors[0]}] $script " diff --git a/scripts/synchronize_panes.sh b/scripts/synchronize_panes.sh new file mode 100644 index 0000000..078e8a9 --- /dev/null +++ b/scripts/synchronize_panes.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +label=$1 + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +get_synchronize_panes_status() { + current_synchronize_panes_status=$(get_tmux_window_option "synchronize-panes" "off") + echo $current_synchronize_panes_status +} + +main() +{ + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@dracula-refresh-rate" 5) + synchronize_panes_label=$label + synchronize_panes_status=$(get_synchronize_panes_status) + echo "$synchronize_panes_label $synchronize_panes_status" + sleep $RATE +} + +# run main driver +main diff --git a/scripts/utils.sh b/scripts/utils.sh index a296192..b4402e6 100644 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -11,6 +11,17 @@ get_tmux_option() { fi } +get_tmux_window_option() { + local option=$1 + local default_value=$2 + local option_value=$(tmux show-window-options -v "$option") + if [ -z "$option_value" ]; then + echo $default_value + else + echo $option_value + fi +} + # normalize the percentage string to always have a length of 5 normalize_percent_len() { # the max length that the percent can reach, which happens for a two digit number with a decimal house: "99.9%" From 3e75296b73f483806291f4f1c5ff4bb09a8ad465 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Sat, 18 Jun 2022 05:35:23 -0400 Subject: [PATCH 02/52] Add attached-clients plugin --- scripts/attached_clients.sh | 35 +++++++++++++++++++++++++++++++++++ scripts/dracula.sh | 5 +++++ 2 files changed, 40 insertions(+) create mode 100755 scripts/attached_clients.sh diff --git a/scripts/attached_clients.sh b/scripts/attached_clients.sh new file mode 100755 index 0000000..ca7056d --- /dev/null +++ b/scripts/attached_clients.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +# configuration +# @dracula-clients-minimum 1 +# @dracula-clients-singular client +# @dracula-clients-plural clients + +current_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $current_dir/utils.sh + +count_clients() { + pane=$(tmux list-panes -F "#{session_name}" | head -n 1) + tmux list-clients -t $pane | wc -l | tr -d ' ' +} + +main() { + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@dracula-refresh-rate" 5) + clients_count=$(count_clients) + clients_minimum=$(get_tmux_option "@dracula-clients-minimum" 1) + if (( $clients_count >= $clients_minimum )); then + if (( $clients_count > 1 )); then + clients_label=$(get_tmux_option "@dracula-clients-plural" "clients") + else + clients_label=$(get_tmux_option "@dracula-clients-singular" "client") + fi + echo "$clients_count $clients_label" + fi + sleep $RATE +} + +# run main driver +main diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 2b5e1f4..ebb33d6 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -168,6 +168,11 @@ main() script="#($current_dir/network_ping.sh)" fi + if [ $plugin = "attached-clients" ]; then + IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-attached-clients-colors" "cyan dark_gray") + script="#($current_dir/attached_clients.sh)" + fi + if [ $plugin = "weather" ]; then # wait unit $datafile exists just to avoid errors # this should almost never need to wait unless something unexpected occurs From 07813ac51a50c13db22b8139ae58b0e1cb73c72d Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Sat, 18 Jun 2022 06:28:11 -0400 Subject: [PATCH 03/52] Add documentation for attached_clients.sh --- INSTALL.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index f62a08d..5e8d2a8 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,7 @@ To enable plugins set up the `@dracula-plugins` option in you `.tmux.conf` file, The order that you define the plugins will be the order on the status bar left to right. ```bash -# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, weather, time +# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, attached-clients, weather, time set -g @dracula-plugins "cpu-usage gpu-usage ram-usage" ``` @@ -215,3 +215,19 @@ Switch from default fahrenheit to celsius set -g @dracula-show-fahrenheit false ``` + +#### attached-clients options + +Set the minimum number of clients to show (otherwise, show nothing) + +```bash +set -g @dracula-clients-minimum 1 +``` + +Set the label when there is one client, or more than one client + +```bash +set -g @dracula-clients-singular client +set -g @dracula-clients-plural clients +``` + From 44018dede10404f1c3115f8aa8bacacced47c2d0 Mon Sep 17 00:00:00 2001 From: pataquets Date: Sun, 10 Jul 2022 19:51:32 +0200 Subject: [PATCH 04/52] Add 'custom' status plugin to get status texts from external scripts. --- README.md | 1 + scripts/dracula.sh | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 409e56e..1812ac5 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul - CPU usage (percentage or load average) - RAM usage - GPU usage +- Custom status texts from external scripts - Color code based on if prefix is active or not - List of windows with current window highlighted - When prefix is enabled smiley face turns from green to yellow diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 2b5e1f4..1a33ba7 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -127,9 +127,21 @@ main() for plugin in "${plugins[@]}"; do + if case $plugin in custom:*) true;; *) false;; esac; then + script=${plugin#"custom:"} + if [[ -x "${current_dir}/${script}" ]]; then + IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-custom-plugin-colors" "cyan dark_gray") + script="#($current_dir/${script})" + else + colors[0]="red" + colors[1]="dark_gray" + script="${script} not found!" + fi + fi + if [ $plugin = "git" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-git-colors" "green dark_gray") - script="#($current_dir/git.sh)" + script="#($current_dir/git.sh)" fi if [ $plugin = "battery" ]; then From d9b6d00121255ba5d850341da075e7b54933b80c Mon Sep 17 00:00:00 2001 From: Yusuke Uchida Date: Sat, 18 Sep 2021 21:40:30 +0900 Subject: [PATCH 05/52] dracula.sh: add use_arbitrary_time_format and time_format options --- scripts/dracula.sh | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 2b5e1f4..321a3f1 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -24,6 +24,8 @@ main() show_border_contrast=$(get_tmux_option "@dracula-border-contrast" false) show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) + use_arbitrary_time_format=$(get_tmux_option "@arbitrary_time_format" false) + time_format=$(get_tmux_option "@time_format" "Y-%m-%d(%a) %H:%M:%S") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") # Dracula Color Pallette @@ -181,15 +183,20 @@ main() if [ $plugin = "time" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-time-colors" "dark_purple white") - if $show_day_month && $show_military ; then # military time and dd/mm - script="%a %d/%m %R ${timezone} " - elif $show_military; then # only military time - script="%a %m/%d %R ${timezone} " - elif $show_day_month; then # only dd/mm - script="%a %d/%m %I:%M %p ${timezone} " - else - script="%a %m/%d %I:%M %p ${timezone} " - fi + case $use_arbitrary_time_format in + false) + script=${time_format} + true) + if $show_day_month && $show_military ; then # military time and dd/mm + script="%a %d/%m %R ${timezone} " + elif $show_military; then # only military time + script="%a %m/%d %R ${timezone} " + elif $show_day_month; then # only dd/mm + script="%a %d/%m %I:%M %p ${timezone} " + else + script="%a %m/%d %I:%M %p ${timezone} " + fi + esac fi if $show_powerline; then From bca34814a43f902ca0d2147766e6b43dfb49bdd0 Mon Sep 17 00:00:00 2001 From: Yusuke Uchida Date: Sat, 18 Sep 2021 21:42:09 +0900 Subject: [PATCH 06/52] dracula.sh: add prefix dracula- --- scripts/dracula.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 321a3f1..61853b5 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -24,8 +24,8 @@ main() show_border_contrast=$(get_tmux_option "@dracula-border-contrast" false) show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) - use_arbitrary_time_format=$(get_tmux_option "@arbitrary_time_format" false) - time_format=$(get_tmux_option "@time_format" "Y-%m-%d(%a) %H:%M:%S") + use_arbitrary_time_format=$(get_tmux_option "@dracula-arbitrary-time-format" false) + time_format=$(get_tmux_option "@dracula-time-format" "Y-%m-%d(%a) %H:%M:%S") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") # Dracula Color Pallette From 4b6bdaf9e26a26d1f95aa159c3220b569eae10d1 Mon Sep 17 00:00:00 2001 From: Yusuke Uchida Date: Sat, 18 Sep 2021 21:46:48 +0900 Subject: [PATCH 07/52] dracula.sh: fixed branch --- scripts/dracula.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 61853b5..8845e0c 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -183,10 +183,8 @@ main() if [ $plugin = "time" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-time-colors" "dark_purple white") - case $use_arbitrary_time_format in + case $use_arbitrary_time_format in false) - script=${time_format} - true) if $show_day_month && $show_military ; then # military time and dd/mm script="%a %d/%m %R ${timezone} " elif $show_military; then # only military time @@ -196,6 +194,8 @@ main() else script="%a %m/%d %I:%M %p ${timezone} " fi + true) + script=${time_format} esac fi From d4f3009800c500a3b6d7736b58e3c57958f7ad8b Mon Sep 17 00:00:00 2001 From: Yusuke Uchida Date: Sat, 18 Sep 2021 22:15:41 +0900 Subject: [PATCH 08/52] dracula.sh: changed default value of time_format --- scripts/dracula.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 8845e0c..799538d 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -25,7 +25,7 @@ main() show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) use_arbitrary_time_format=$(get_tmux_option "@dracula-arbitrary-time-format" false) - time_format=$(get_tmux_option "@dracula-time-format" "Y-%m-%d(%a) %H:%M:%S") + time_format=$(get_tmux_option "@dracula-time-format" "%Y-%m-%d(%a) %H:%M") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") # Dracula Color Pallette From c39cc30213d68d6e5cb12e0c0afae76741c0c693 Mon Sep 17 00:00:00 2001 From: Yusuke Uchida Date: Sat, 18 Sep 2021 22:15:54 +0900 Subject: [PATCH 09/52] dracula.sh: debug case statement --- scripts/dracula.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 799538d..5e858f2 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -193,9 +193,9 @@ main() script="%a %d/%m %I:%M %p ${timezone} " else script="%a %m/%d %I:%M %p ${timezone} " - fi + fi;; true) - script=${time_format} + script=${time_format};; esac fi From 597f7bed29310bb9546c83315337e1f89a05f7f4 Mon Sep 17 00:00:00 2001 From: Yusuke Uchida Date: Sat, 16 Oct 2021 00:57:10 +0900 Subject: [PATCH 10/52] dracula.sh: deleted use_arbitrary_time_format option --- scripts/dracula.sh | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 5e858f2..c93aa94 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -24,7 +24,6 @@ main() show_border_contrast=$(get_tmux_option "@dracula-border-contrast" false) show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) - use_arbitrary_time_format=$(get_tmux_option "@dracula-arbitrary-time-format" false) time_format=$(get_tmux_option "@dracula-time-format" "%Y-%m-%d(%a) %H:%M") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") @@ -183,20 +182,19 @@ main() if [ $plugin = "time" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-time-colors" "dark_purple white") - case $use_arbitrary_time_format in - false) - if $show_day_month && $show_military ; then # military time and dd/mm - script="%a %d/%m %R ${timezone} " - elif $show_military; then # only military time - script="%a %m/%d %R ${timezone} " - elif $show_day_month; then # only dd/mm - script="%a %d/%m %I:%M %p ${timezone} " - else - script="%a %m/%d %I:%M %p ${timezone} " - fi;; - true) - script=${time_format};; - esac + if [ -n "$time_format" ]; then + script=${time_format} + else + if $show_day_month && $show_military ; then # military time and dd/mm + script="%a %d/%m %R ${timezone} " + elif $show_military; then # only military time + script="%a %m/%d %R ${timezone} " + elif $show_day_month; then # only dd/mm + script="%a %d/%m %I:%M %p ${timezone} " + else + script="%a %m/%d %I:%M %p ${timezone} " + fi + fi fi if $show_powerline; then From 0850532083a9683e5d7af78c3b7a195ca9f86c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Migone?= Date: Fri, 26 Aug 2022 10:55:12 +0200 Subject: [PATCH 11/52] feat: add network-vpn plugin (only macOS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Migone --- INSTALL.md | 6 +++--- scripts/dracula.sh | 5 +++++ scripts/network_vpn.sh | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100755 scripts/network_vpn.sh diff --git a/INSTALL.md b/INSTALL.md index e1b6587..0cc70b1 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,7 @@ To enable plugins set up the `@dracula-plugins` option in you `.tmux.conf` file, The order that you define the plugins will be the order on the status bar left to right. ```bash -# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, weather, time +# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, network-vpn, weather, time set -g @dracula-plugins "cpu-usage gpu-usage ram-usage" ``` @@ -190,13 +190,13 @@ set -g @dracula-git-disable-status true Set symbol to use for when branch is up to date with HEAD ```bash -# default is ✓. Avoid using non unicode characters that bash uses like $, * and ! +# default is ✓. Avoid using non unicode characters that bash uses like $, * and ! set -g @dracula-git-show-current-symbol ✓ ``` Set symbol to use for when branch diverges from HEAD ```bash -# default is unicode !. Avoid bash special characters +# default is unicode !. Avoid bash special characters set -g @dracula-git-show-diff-symbol ! ``` diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 2b5e1f4..8887f90 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -168,6 +168,11 @@ main() script="#($current_dir/network_ping.sh)" fi + if [ $plugin = "network-vpn" ]; then + IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-network-vpn-colors" "cyan dark_gray") + script="#($current_dir/network_vpn.sh)" + fi + if [ $plugin = "weather" ]; then # wait unit $datafile exists just to avoid errors # this should almost never need to wait unless something unexpected occurs diff --git a/scripts/network_vpn.sh b/scripts/network_vpn.sh new file mode 100755 index 0000000..468445e --- /dev/null +++ b/scripts/network_vpn.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +current_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $current_dir/utils.sh + +vpn_function() { + case $(uname -s) in + Linux | Darwin) + vpn=$(scutil --nc list | grep Connected) + + if [ -z $vpn ]; then + echo "" + else + echo "VPN" + fi + ;; + + CYGWIN* | MINGW32* | MSYS* | MINGW*) + # TODO - windows compatability + ;; + esac +} + +main() { + + echo $(vpn_function) +} + +# run main driver +main From 731114654d4471606d7c5dfa16b473a1594300f8 Mon Sep 17 00:00:00 2001 From: tarantila <5209092+tarantila@users.noreply.github.com> Date: Wed, 31 Aug 2022 14:12:26 +0200 Subject: [PATCH 12/52] Display CPU label on CPU load configuration Change to display the defined value of "dracula-cpu-usage-label" (e.g. CPU) when load average is used instead percentage. Before this change the label was not displayed if CPU load average is used. --- scripts/cpu_info.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/cpu_info.sh b/scripts/cpu_info.sh index 41b49c1..b73db09 100755 --- a/scripts/cpu_info.sh +++ b/scripts/cpu_info.sh @@ -44,10 +44,10 @@ main() { # storing the refresh rate in the variable RATE, default is 5 RATE=$(get_tmux_option "@dracula-refresh-rate" 5) cpu_load=$(get_tmux_option "@dracula-cpu-display-load" false) + cpu_label=$(get_tmux_option "@dracula-cpu-usage-label" "CPU") if [ "$cpu_load" = true ]; then - echo "$(get_load)" + echo "$cpu_label $(get_load)" else - cpu_label=$(get_tmux_option "@dracula-cpu-usage-label" "CPU") cpu_percent=$(get_percent) echo "$cpu_label $cpu_percent" fi From 143a0d888800d150593ba8c72a4e7b6c8a2c2885 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Fri, 28 Oct 2022 01:10:30 -0400 Subject: [PATCH 13/52] Add option to show/hide empty plugins --- scripts/dracula.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 2b5e1f4..b8889a2 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -25,6 +25,7 @@ main() show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") + show_empty_plugins=$(get_tmux_option "@dracula-show-empty-plugins" true) # Dracula Color Pallette white='#f8f8f2' @@ -193,10 +194,18 @@ main() fi if $show_powerline; then - tmux set-option -ga status-right "#[fg=${!colors[0]},bg=${powerbg},nobold,nounderscore,noitalics]${right_sep}#[fg=${!colors[1]},bg=${!colors[0]}] $script " + if $show_empty_plugins; then + tmux set-option -ga status-right "#[fg=${!colors[0]},bg=${powerbg},nobold,nounderscore,noitalics]${right_sep}#[fg=${!colors[1]},bg=${!colors[0]}] $script " + else + tmux set-option -ga status-right "#{?#{==:$script,},,#[fg=${!colors[0]},nobold,nounderscore,noitalics]${right_sep}#[fg=${!colors[1]},bg=${!colors[0]}] $script }" + fi powerbg=${!colors[0]} else - tmux set-option -ga status-right "#[fg=${!colors[1]},bg=${!colors[0]}] $script " + if $show_empty_plugins; then + tmux set-option -ga status-right "#[fg=${!colors[1]},bg=${!colors[0]}] $script " + else + tmux set-option -ga status-right "#{?#{==:$script,},,#[fg=${!colors[1]},bg=${!colors[0]}] $script }" + fi fi done From e2dd7c83f8ed095daede8c23b9de94349051db59 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Fri, 28 Oct 2022 01:42:26 -0400 Subject: [PATCH 14/52] Reject unrecognized plugins in config Prevents duplication of preceding recognized plugin for each unrecognized plugin --- scripts/dracula.sh | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 49ddcef..394bd84 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -131,55 +131,45 @@ main() if [ $plugin = "git" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-git-colors" "green dark_gray") script="#($current_dir/git.sh)" - fi - if [ $plugin = "battery" ]; then + elif [ $plugin = "battery" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-battery-colors" "pink dark_gray") script="#($current_dir/battery.sh)" - fi - if [ $plugin = "gpu-usage" ]; then + elif [ $plugin = "gpu-usage" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-usage-colors" "pink dark_gray") script="#($current_dir/gpu_usage.sh)" - fi - if [ $plugin = "cpu-usage" ]; then + elif [ $plugin = "cpu-usage" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-cpu-usage-colors" "orange dark_gray") script="#($current_dir/cpu_info.sh)" - fi - if [ $plugin = "ram-usage" ]; then + elif [ $plugin = "ram-usage" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-ram-usage-colors" "cyan dark_gray") script="#($current_dir/ram_info.sh)" - fi - if [ $plugin = "network" ]; then + elif [ $plugin = "network" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-network-colors" "cyan dark_gray") script="#($current_dir/network.sh)" - fi - if [ $plugin = "network-bandwidth" ]; then + elif [ $plugin = "network-bandwidth" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-network-bandwidth-colors" "cyan dark_gray") tmux set-option -g status-right-length 250 script="#($current_dir/network_bandwidth.sh)" - fi - if [ $plugin = "network-ping" ]; then + elif [ $plugin = "network-ping" ]; then IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-network-ping-colors" "cyan dark_gray") script="#($current_dir/network_ping.sh)" - fi - if [ $plugin = "spotify-tui" ]; then + elif [ $plugin = "spotify-tui" ]; then IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-spotify-tui-colors" "green dark_gray") script="#($current_dir/spotify-tui.sh)" - fi - if [ $plugin = "kubernetes-context" ]; then + elif [ $plugin = "kubernetes-context" ]; then IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-kubernetes-context-colors" "cyan dark_gray") script="#($current_dir/kubernetes_context.sh $show_kubernetes_context_label)" - fi - if [ $plugin = "weather" ]; then + elif [ $plugin = "weather" ]; then # wait unit $datafile exists just to avoid errors # this should almost never need to wait unless something unexpected occurs while [ ! -f $datafile ]; do @@ -188,9 +178,8 @@ main() IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-weather-colors" "orange dark_gray") script="#(cat $datafile)" - fi - if [ $plugin = "time" ]; then + elif [ $plugin = "time" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-time-colors" "dark_purple white") if $show_day_month && $show_military ; then # military time and dd/mm script="%a %d/%m %R ${timezone} " @@ -201,6 +190,9 @@ main() else script="%a %m/%d %I:%M %p ${timezone} " fi + + else + continue fi if $show_powerline; then From ac95b3e0699548255411cb304f0885ebbca98229 Mon Sep 17 00:00:00 2001 From: Adrien Kara Date: Fri, 6 Jan 2023 00:42:01 +0100 Subject: [PATCH 15/52] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(network=5Fb?= =?UTF-8?q?andwidth):=20more=20flexibility=20and=20less=20spaghetti?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use the internationally recommended unit symbol - Commentary for next contributor - Remove spaghetti code - More flexible for future evolution Signed-off-by: Adrien Kara --- scripts/network_bandwidth.sh | 100 +++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 41 deletions(-) diff --git a/scripts/network_bandwidth.sh b/scripts/network_bandwidth.sh index d9b5f70..4d9e782 100755 --- a/scripts/network_bandwidth.sh +++ b/scripts/network_bandwidth.sh @@ -1,51 +1,69 @@ #!/usr/bin/env bash -INTERVAL="1" # update interval in seconds +# INTERVAL is equal to 1s because we want to express the bandwidth in sec +readonly INTERVAL=1 + +# UPLOAD and DOWNLOAD index +readonly UPLOAD=0 +readonly DOWNLOAD=1 + +# SIZE index are the multiple of the unit byte and value the internationally recommended unit symbol in sec +readonly SIZE=( + [1]='B/s' + [1024]='kB/s' + [1048576]='MB/s' + [1073741824]='GB/s' +) network_name=$(tmux show-option -gqv "@dracula-network-bandwidth") +# interface_bytes give interface name and signal tx/rx return Bytes +interface_bytes() { + cat "/sys/class/net/$1/statistics/$2_bytes" +} + +# get_bandwidth return the number of bytes exchanged for tx and rx +get_bandwidth() { + upload="$(interface_bytes "$network_name" "tx")" + download="$(interface_bytes "$network_name" "rx")" + + #wait the interval for Wait for interval to calculate the difference + sleep "$INTERVAL" + + upload="$(bc <<<"$(interface_bytes "$network_name" "tx") - $upload")" + download="$(bc <<<"$(interface_bytes "$network_name" "rx") - $download")" + + #set to 0 by default useful for non-existent interface + echo "${upload:-0} ${download:-0}" +} + +# bandwidth_to_unit convert bytes into its highest unit and add unit symbol in sec +bandwidth_to_unit() { + local size=1 + for i in "${!SIZE[@]}"; do + if (($1 < i)); then + break + fi + + size="$i" + done + + local result="0.00" + if (($1 != 0)); then + result="$(bc <<<"scale=2; $1 / $size")" + fi + + echo "$result ${SIZE[$size]}" +} + main() { - while true - do - output_download="" - output_upload="" - output_download_unit="" - output_upload_unit="" + bandwidth=() - initial_download=$(cat /sys/class/net/$network_name/statistics/rx_bytes) - initial_upload=$(cat /sys/class/net/$network_name/statistics/tx_bytes) - - sleep $INTERVAL - - final_download=$(cat /sys/class/net/$network_name/statistics/rx_bytes) - final_upload=$(cat /sys/class/net/$network_name/statistics/tx_bytes) - - total_download_bps=$(expr $final_download - $initial_download) - total_upload_bps=$(expr $final_upload - $initial_upload) - - if [ $total_download_bps -gt 1073741824 ]; then - output_download=$(echo "$total_download_bps 1024" | awk '{printf "%.2f \n", $1/($2 * $2 * $2)}') - output_download_unit="gB/s" - elif [ $total_download_bps -gt 1048576 ]; then - output_download=$(echo "$total_download_bps 1024" | awk '{printf "%.2f \n", $1/($2 * $2)}') - output_download_unit="mB/s" - else - output_download=$(echo "$total_download_bps 1024" | awk '{printf "%.2f \n", $1/$2}') - output_download_unit="kB/s" - fi - - if [ $total_upload_bps -gt 1073741824 ]; then - output_upload=$(echo "$total_download_bps 1024" | awk '{printf "%.2f \n", $1/($2 * $2 * $2)}') - output_upload_unit="gB/s" - elif [ $total_upload_bps -gt 1048576 ]; then - output_upload=$(echo "$total_upload_bps 1024" | awk '{printf "%.2f \n", $1/($2 * $2)}') - output_upload_unit="mB/s" - else - output_upload=$(echo "$total_upload_bps 1024" | awk '{printf "%.2f \n", $1/$2}') - output_upload_unit="kB/s" - fi - - echo "↓ $output_download $output_download_unit • ↑ $output_upload $output_upload_unit" + while true; do + IFS=" " read -ra bandwidth <<<"$(get_bandwidth)" + echo "↓ $(bandwidth_to_unit "${bandwidth[$DOWNLOAD]}") • ↑ $(bandwidth_to_unit "${bandwidth[$UPLOAD]}")" done } + +#run main driver main From 4bb5e56053f5292493fd84207f1f3626feae42d4 Mon Sep 17 00:00:00 2001 From: Adrien Kara Date: Fri, 6 Jan 2023 19:46:04 +0100 Subject: [PATCH 16/52] =?UTF-8?q?=E2=9C=A8=20feat(network=5Fbandwidth):=20?= =?UTF-8?q?add=20more=20configuration=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Can auto detect used interface (only with linux ip for now) - Can show the name of used interface - A waiting interval can be set between each update Signed-off-by: Adrien Kara --- INSTALL.md | 12 ++++++++++ scripts/network_bandwidth.sh | 46 +++++++++++++++++++++++++++++++----- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index ebeae4e..4143845 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -152,6 +152,18 @@ Customize label set -g @dracula-ram-usage-label "RAM" ``` +#### network-bandwidth + +You can configure which network interface you want to view the bandwidth, +Displaying of the interface name, The interval between each bandwidth update. +The most common interfaces name are `eth0` for a wired connection and `wlan0` for a wireless connection. + +```bash +set -g @dracula-network-bandwidth eth0 +set -g @dracula-network-bandwidth-interval 0 +set -g @dracula-network-bandwidth-show-interface true +``` + #### network-ping options You can configure which server (hostname, IP) you want to ping and at which rate (in seconds). Default is google.com at every 5 seconds. diff --git a/scripts/network_bandwidth.sh b/scripts/network_bandwidth.sh index 4d9e782..6427bdd 100755 --- a/scripts/network_bandwidth.sh +++ b/scripts/network_bandwidth.sh @@ -15,7 +15,22 @@ readonly SIZE=( [1073741824]='GB/s' ) -network_name=$(tmux show-option -gqv "@dracula-network-bandwidth") +# interface_get try to automaticaly get the used interface if network_name is empty +interface_get() { + name="$(tmux show-option -gqv "@dracula-network-bandwidth")" + + if [[ -z $name ]]; then + case "$(uname -s)" in + Linux) + if type ip >/dev/null; then + name="$(ip -o route get 192.168.0.0 | awk '{print $5}')" + fi + ;; + esac + fi + + echo "$name" +} # interface_bytes give interface name and signal tx/rx return Bytes interface_bytes() { @@ -24,14 +39,14 @@ interface_bytes() { # get_bandwidth return the number of bytes exchanged for tx and rx get_bandwidth() { - upload="$(interface_bytes "$network_name" "tx")" - download="$(interface_bytes "$network_name" "rx")" + upload="$(interface_bytes "$1" "tx")" + download="$(interface_bytes "$1" "rx")" #wait the interval for Wait for interval to calculate the difference sleep "$INTERVAL" - upload="$(bc <<<"$(interface_bytes "$network_name" "tx") - $upload")" - download="$(bc <<<"$(interface_bytes "$network_name" "rx") - $download")" + upload="$(bc <<<"$(interface_bytes "$1" "tx") - $upload")" + download="$(bc <<<"$(interface_bytes "$1" "rx") - $download")" #set to 0 by default useful for non-existent interface echo "${upload:-0} ${download:-0}" @@ -57,11 +72,30 @@ bandwidth_to_unit() { } main() { + counter=0 bandwidth=() + network_name="" + show_interface="$(tmux show-option -gqv "@dracula-network-bandwidth-show-interface")" + interval_update="$(tmux show-option -gqv "@dracula-network-bandwidth-interval")" + + if [[ -z $interval_update ]]; then + interval_update=0 + fi + while true; do - IFS=" " read -ra bandwidth <<<"$(get_bandwidth)" + if ((counter == 0)); then + counter=60 + network_name="$(interface_get)" + fi + + IFS=" " read -ra bandwidth <<<"$(get_bandwidth "$network_name")" + + if [[ $show_interface == "true" ]]; then echo -n "[$network_name] "; fi echo "↓ $(bandwidth_to_unit "${bandwidth[$DOWNLOAD]}") • ↑ $(bandwidth_to_unit "${bandwidth[$UPLOAD]}")" + + ((counter = counter - 1)) + sleep "$interval_update" done } From a960a12af1ebb6a2150ce05f2900454d22230398 Mon Sep 17 00:00:00 2001 From: Adrien Kara Date: Sat, 7 Jan 2023 16:55:14 +0100 Subject: [PATCH 17/52] =?UTF-8?q?=F0=9F=90=9B=20fix(#180):=20set=20network?= =?UTF-8?q?=5Fping=20as=20executable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrien Kara --- scripts/network_ping.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/network_ping.sh diff --git a/scripts/network_ping.sh b/scripts/network_ping.sh old mode 100644 new mode 100755 From beb6085ad78e4691879d0911897e71ffd3543d64 Mon Sep 17 00:00:00 2001 From: Adrien Kara Date: Sat, 7 Jan 2023 18:36:14 +0100 Subject: [PATCH 18/52] =?UTF-8?q?=F0=9F=90=9B=20fix(#165):=20is=20no=20lon?= =?UTF-8?q?ger=20based=20on=20word=20matching?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Adrien Kara --- scripts/ram_info.sh | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/scripts/ram_info.sh b/scripts/ram_info.sh index 97d61b6..ab983d5 100755 --- a/scripts/ram_info.sh +++ b/scripts/ram_info.sh @@ -9,20 +9,11 @@ get_percent() { case $(uname -s) in Linux) - total_mem_gb=$(free -g | awk '/^Mem/ {print $2}') - used_mem=$(free -g | awk '/^Mem/ {print $3}') - total_mem=$(free -h | awk '/^Mem/ {print $2}') - if (( $total_mem_gb == 0)); then - memory_usage=$(free -m | awk '/^Mem/ {print $3}') - total_mem_mb=$(free -m | awk '/^Mem/ {print $2}') - echo $memory_usage\M\B/$total_mem_mb\M\B - elif (( $used_mem == 0 )); then - memory_usage=$(free -m | awk '/^Mem/ {print $3}') - echo $memory_usage\M\B/$total_mem_gb\G\B - else - memory_usage=$(free -g | awk '/^Mem/ {print $3}') - echo $memory_usage\G\B/$total_mem_gb\G\B - fi + usage="$(free -h | awk 'NR==2 {print $3}')" + total="$(free -h | awk 'NR==2 {print $2}')" + formated="${usage}/${total}" + + echo "${formated//i/B}" ;; Darwin) From 1d3d07c3d251e6f70524934f7eab8273a58456f4 Mon Sep 17 00:00:00 2001 From: Adrien Kara Date: Sat, 7 Jan 2023 23:58:58 +0100 Subject: [PATCH 19/52] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(ram=5Finfo)?= =?UTF-8?q?:=20cleanup=20and=20follow=20bash=20recommendations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove the sleep rate, controled by show_refresh in dracula.sh Signed-off-by: Adrien Kara --- scripts/ram_info.sh | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/scripts/ram_info.sh b/scripts/ram_info.sh index ab983d5..00af64a 100755 --- a/scripts/ram_info.sh +++ b/scripts/ram_info.sh @@ -5,7 +5,7 @@ export LC_ALL=en_US.UTF-8 current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $current_dir/utils.sh -get_percent() +get_ratio() { case $(uname -s) in Linux) @@ -20,11 +20,11 @@ get_percent() # Get used memory blocks with vm_stat, multiply by page size to get size in bytes, then convert to MiB used_mem=$(vm_stat | grep ' active\|wired ' | sed 's/[^0-9]//g' | paste -sd ' ' - | awk -v pagesize=$(pagesize) '{printf "%d\n", ($1+$2) * pagesize / 1048576}') total_mem=$(system_profiler SPHardwareDataType | grep "Memory:" | awk '{print $2 $3}') - if (( $used_mem < 1024 )); then - echo $used_mem\M\B/$total_mem + if ((used_mem < 1024 )); then + echo "${used_mem}MB/$total_mem" else - memory=$(($used_mem/1024)) - echo $memory\G\B/$total_mem + memory=$((used_mem/1024)) + echo "${memory}GB/$total_mem" fi ;; @@ -39,11 +39,11 @@ get_percent() total_mem=$(($(sysctl -n hw.physmem) / 1024 / 1024)) used_mem=$((total_mem - free_mem)) echo $used_mem - if (( $used_mem < 1024 )); then - echo $used_mem\M\B/$total_mem + if ((used_mem < 1024 )); then + echo "${used_mem}MB/$total_mem" else - memory=$(($used_mem/1024)) - echo $memory\G\B/$total_mem + memory=$((used_mem/1024)) + echo "${memory}GB/$total_mem" fi ;; @@ -55,12 +55,9 @@ get_percent() main() { - # storing the refresh rate in the variable RATE, default is 5 - RATE=$(get_tmux_option "@dracula-refresh-rate" 5) ram_label=$(get_tmux_option "@dracula-ram-usage-label" "RAM") - ram_percent=$(get_percent) - echo "$ram_label $ram_percent" - sleep $RATE + ram_ratio=$(get_ratio) + echo "$ram_label $ram_ratio" } #run main driver From 83a05e1a36835f77a2b0bee2dea040ad4659c567 Mon Sep 17 00:00:00 2001 From: Darko Grozdanovski Date: Wed, 22 Mar 2023 13:23:19 +0100 Subject: [PATCH 20/52] fix gpu reporting issue #195 --- scripts/gpu_usage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gpu_usage.sh b/scripts/gpu_usage.sh index 9ffc647..552ed2b 100755 --- a/scripts/gpu_usage.sh +++ b/scripts/gpu_usage.sh @@ -27,7 +27,7 @@ get_gpu() { gpu=$(get_platform) if [[ "$gpu" == NVIDIA ]]; then - usage=$(nvidia-smi | grep '%' | awk '{ sum += $13 } END { printf("%d%%\n", sum / NR) }') + usage=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits | awk '{ sum += $0 } END { printf("%d%%\n", sum / NR) }') else usage='unknown' fi From 09c57506561b8a4b6d18ce03de9ad8a7cf062854 Mon Sep 17 00:00:00 2001 From: jonathanforhan Date: Fri, 7 Apr 2023 20:40:53 -0400 Subject: [PATCH 21/52] Add cwd.sh to display the tmux pane's current working directory, updated README to reflect change --- README.md | 1 + scripts/cwd.sh | 30 ++++++++++++++++++++++++++++++ scripts/dracula.sh | 6 ++++++ 3 files changed, 37 insertions(+) create mode 100755 scripts/cwd.sh diff --git a/README.md b/README.md index a6536d0..fb80867 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul - If forecast information is available, a ☀, ☁, ☂, or ❄ unicode character corresponding with the forecast is displayed alongside the temperature - Spotify playback (needs the tool spotify-tui installed) - Current kubernetes context +- Current working directory of tmux pane ## Compatibility diff --git a/scripts/cwd.sh b/scripts/cwd.sh new file mode 100755 index 0000000..cfae694 --- /dev/null +++ b/scripts/cwd.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# return current working directory of tmux pane +getPaneDir() +{ + nextone="false" + for i in $(tmux list-panes -F "#{pane_active} #{pane_current_path}"); + do + if [ "$nextone" == "true" ]; then + echo $i + return + fi + if [ "$i" == "1" ]; then + nextone="true" + fi + done +} + +main() +{ + path=$(getPaneDir) + + # change '/home/user' to '~' + cwd=$(echo $path | sed "s;$HOME;~;g") + + echo $cwd +} + +#run main driver program +main diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 3e1bc1b..1054563 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -128,6 +128,12 @@ main() for plugin in "${plugins[@]}"; do + if [ $plugin = "cwd" ]; then + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-cwd-colors" "dark_gray white") + tmux set-option -g status-right-length 250 + script="#($current_dir/cwd.sh)" + fi + if [ $plugin = "git" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-git-colors" "green dark_gray") tmux set-option -g status-right-length 250 From c43100532fb84e5da868b81c7b9caec8c697db72 Mon Sep 17 00:00:00 2001 From: Ethan Edwards Date: Sat, 8 Apr 2023 14:18:42 -0400 Subject: [PATCH 22/52] add gpu driver disclaimer --- INSTALL.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index 2e34d7c..21e30d4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -138,6 +138,8 @@ set -g @dracula-battery-label "Battery" #### gpu-usage options +Note, currently only the Linux NVIDIA Proprietary drivers are supported. Nouveau and AMD Graphics Cards support are still under development. + Customize label ```bash @@ -248,4 +250,31 @@ Hide your location ```bash set -g @dracula-show-location false + +set -g @dracula-plugins "cpu-usage ram-usage network network-bandwidth time" +set -g @dracula-network-bandwidth enp5s0 +set -g @dracula-show-powerline true +set -g @dracula-show-flags false +set -g @dracula-refresh-rate 5 +set -g @dracula-show-left-icon session +set -g @dracula-border-contrast true +set -g @dracula-military-time true +set -g @dracula-show-location false +set -g @dracula-show-timezone false +set -g @dracula-show-weather false + + + +# set -g @dracula-border-contrast true +# set -g @dracula-cpu-usage true +# set -g @dracula-military-time true +# set -g @dracula-ram-usage true +# set -g @dracula-refresh-rate 5 +# set -g @dracula-show-battery true +# set -g @dracula-show-flags true +# set -g @dracula-show-left-icon session +# set -g @dracula-show-network false +# set -g @dracula-show-powerline false +# set -g @dracula-show-powerline true +# set -g @dracula-show-weather false ``` From 42deb775706d2efb12a122b04d86eb2033bc40d9 Mon Sep 17 00:00:00 2001 From: Ethan Edwards Date: Sat, 8 Apr 2023 14:56:40 -0400 Subject: [PATCH 23/52] fix documentation errors --- INSTALL.md | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 51d943b..8264019 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -111,6 +111,12 @@ Enable high contrast pane border set -g @dracula-border-contrast true ``` +Hide empty plugins + +```bash +set -g @dracula-show-empty-plugins false +``` + #### cpu-usage options Customize label @@ -250,36 +256,8 @@ Hide your location ```bash set -g @dracula-show-location false - -set -g @dracula-plugins "cpu-usage ram-usage network network-bandwidth time" -set -g @dracula-network-bandwidth enp5s0 -set -g @dracula-show-powerline true -set -g @dracula-show-flags false -set -g @dracula-refresh-rate 5 -set -g @dracula-show-left-icon session -set -g @dracula-border-contrast true -set -g @dracula-military-time true -set -g @dracula-show-location false -set -g @dracula-show-timezone false -set -g @dracula-show-weather false - - - -# set -g @dracula-border-contrast true -# set -g @dracula-cpu-usage true -# set -g @dracula-military-time true -# set -g @dracula-ram-usage true -# set -g @dracula-refresh-rate 5 -# set -g @dracula-show-battery true -# set -g @dracula-show-flags true -# set -g @dracula-show-left-icon session -# set -g @dracula-show-network false -# set -g @dracula-show-powerline false -# set -g @dracula-show-powerline true -# set -g @dracula-show-weather false ``` - #### attached-clients options Set the minimum number of clients to show (otherwise, show nothing) From 8eacce7ee4d0bcdcc89d8f18c74a4b3cc032512f Mon Sep 17 00:00:00 2001 From: Ethan Edwards Date: Sat, 8 Apr 2023 15:12:22 -0400 Subject: [PATCH 24/52] add only Darwin support --- scripts/network_vpn.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/network_vpn.sh b/scripts/network_vpn.sh index 468445e..74b1eea 100755 --- a/scripts/network_vpn.sh +++ b/scripts/network_vpn.sh @@ -7,7 +7,11 @@ source $current_dir/utils.sh vpn_function() { case $(uname -s) in - Linux | Darwin) + Linux) + # TODO + ;; + + Darwin) vpn=$(scutil --nc list | grep Connected) if [ -z $vpn ]; then From 643d51c00cd0d45704aa8245a08b54caf21d3a95 Mon Sep 17 00:00:00 2001 From: Mykhailo Nikiforov Date: Thu, 20 Apr 2023 14:59:54 +0300 Subject: [PATCH 25/52] fix weather script --- scripts/dracula.sh | 15 +----------- scripts/sleep_weather.sh | 48 -------------------------------------- scripts/weather_wrapper.sh | 31 ++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 62 deletions(-) delete mode 100755 scripts/sleep_weather.sh create mode 100755 scripts/weather_wrapper.sh diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 43f8b8f..deb7721 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -7,8 +7,6 @@ source $current_dir/utils.sh main() { - datafile=/tmp/.dracula-tmux-data - # set configuration option variables show_fahrenheit=$(get_tmux_option "@dracula-show-fahrenheit" true) show_location=$(get_tmux_option "@dracula-show-location" true) @@ -67,11 +65,6 @@ main() left_sep="$show_left_sep" fi - # start weather script in background - if [[ "${plugins[@]}" =~ "weather" ]]; then - $current_dir/sleep_weather.sh $show_fahrenheit $show_location $fixed_location & - fi - # Set timezone unless hidden by configuration case $show_timezone in false) @@ -186,14 +179,8 @@ main() script="#($current_dir/kubernetes_context.sh $show_kubernetes_context_label)" elif [ $plugin = "weather" ]; then - # wait unit $datafile exists just to avoid errors - # this should almost never need to wait unless something unexpected occurs - while [ ! -f $datafile ]; do - sleep 0.01 - done - IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-weather-colors" "orange dark_gray") - script="#(cat $datafile)" + script="#($current_dir/weather_wrapper.sh $show_fahrenheit $show_location $fixed_location)" elif [ $plugin = "time" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-time-colors" "dark_purple white") diff --git a/scripts/sleep_weather.sh b/scripts/sleep_weather.sh deleted file mode 100755 index 869b3d8..0000000 --- a/scripts/sleep_weather.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -# setting the locale, some users have issues with different locales, this forces the correct one -export LC_ALL=en_US.UTF-8 - -#wrapper script for running weather on interval - -fahrenheit=$1 -location=$2 -fixedlocation=$3 - -LOCKFILE=/tmp/.dracula-tmux-weather.lock -DATAFILE=/tmp/.dracula-tmux-data - -ensure_single_process() -{ - # check for another running instance of this script and terminate it if found - [ -f $LOCKFILE ] && ps -p "$(cat $LOCKFILE)" -o cmd= | grep -F " ${BASH_SOURCE[0]}" && kill "$(cat $LOCKFILE)" - echo $$ > $LOCKFILE -} - -main() -{ - ensure_single_process - - current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - - if [ ! -f $DATAFILE ]; then - printf "Loading..." > $DATAFILE - fi - - $current_dir/weather.sh > $DATAFILE - - while tmux has-session &> /dev/null - do - $current_dir/weather.sh $fahrenheit $location $fixedlocation > $DATAFILE - if tmux has-session &> /dev/null - then - sleep 1200 - else - break - fi - done - - rm $LOCKFILE -} - -#run main driver function -main diff --git a/scripts/weather_wrapper.sh b/scripts/weather_wrapper.sh new file mode 100755 index 0000000..75dc1f3 --- /dev/null +++ b/scripts/weather_wrapper.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +#wrapper script for running weather on interval + +fahrenheit=$1 +location=$2 +fixedlocation=$3 + +DATAFILE=/tmp/.dracula-tmux-data +LAST_EXEC_FILE="/tmp/.dracula-tmux-weather-last-exec" +RUN_EACH=1200 +TIME_NOW=$(date +%s) +TIME_LAST=$(cat "${LAST_EXEC_FILE}" 2>/dev/null || echo "0") + +main() +{ + current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + + if [ "$(expr ${TIME_LAST} + ${RUN_EACH})" -lt "${TIME_NOW}" ]; then + # Run weather script here + $current_dir/weather.sh $fahrenheit $location $fixedlocation > "${DATAFILE}" + echo "${TIME_NOW}" > "${LAST_EXEC_FILE}" + fi + + cat "${DATAFILE}" +} + +#run main driver function +main From 92a9a471c432ce1f495cbacbc459c8ae6ca85d28 Mon Sep 17 00:00:00 2001 From: Mykhailo Nikiforov Date: Sat, 22 Apr 2023 12:55:21 +0300 Subject: [PATCH 26/52] fix: default value for the time format should be empty --- scripts/dracula.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 43f8b8f..d344c42 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -24,7 +24,7 @@ main() show_border_contrast=$(get_tmux_option "@dracula-border-contrast" false) show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) - time_format=$(get_tmux_option "@dracula-time-format" "%Y-%m-%d(%a) %H:%M") + time_format=$(get_tmux_option "@dracula-time-format" "") show_kubernetes_context_label=$(get_tmux_option "@dracula-kubernetes-context-label" "") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") show_empty_plugins=$(get_tmux_option "@dracula-show-empty-plugins" true) From 49a1c3f6c37946a3bfd125e7db1b6143be4163cc Mon Sep 17 00:00:00 2001 From: Guido Kraemer Date: Wed, 26 Apr 2023 13:31:03 +0200 Subject: [PATCH 27/52] add gpu ram info plugin --- scripts/dracula.sh | 4 ++++ scripts/gpu_ram_info.sh | 48 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 scripts/gpu_ram_info.sh diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 08980e4..e841aa5 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -141,6 +141,10 @@ main() IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-usage-colors" "pink dark_gray") script="#($current_dir/gpu_usage.sh)" + elif [ $plugin = "gpu-ram-usage" ]; then + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-ram-usage-colors" "pink dark_gray") + script="#($current_dir/gpu_ram_info.sh)" + elif [ $plugin = "cpu-usage" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-cpu-usage-colors" "orange dark_gray") script="#($current_dir/cpu_info.sh)" diff --git a/scripts/gpu_ram_info.sh b/scripts/gpu_ram_info.sh new file mode 100755 index 0000000..f04d895 --- /dev/null +++ b/scripts/gpu_ram_info.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +get_platform() +{ + case $(uname -s) in + Linux) + gpu=$(lspci -v | grep VGA | head -n 1 | awk '{print $5}') + echo $gpu + ;; + + Darwin) + # TODO - Darwin/Mac compatability + ;; + + CYGWIN*|MINGW32*|MSYS*|MINGW*) + # TODO - windows compatability + ;; + esac +} + +get_gpu() +{ + gpu=$(get_platform) + if [[ "$gpu" == NVIDIA ]]; then + usage=$(nvidia-smi --query-gpu=memory.used,memory.total --format=csv,noheader,nounits | awk '{ used += $0; total +=$2 } END { printf("%dGB / %dGB\n", used / 1024, total / 1024) }') + else + usage='unknown' + fi + normalize_percent_len $usage +} + +main() +{ + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@dracula-refresh-rate" 5) + gpu_label=$(get_tmux_option "@dracula-gpu-usage-label" "GPU RAM") + gpu_usage=$(get_gpu) + echo "$gpu_label $gpu_usage" + sleep $RATE +} + +# run the main driver +main From a588a9d5179ff11b0b3a8e6eefde011884f2109b Mon Sep 17 00:00:00 2001 From: Guido Kraemer Date: Wed, 26 Apr 2023 13:44:09 +0200 Subject: [PATCH 28/52] fix gpu memory --- scripts/dracula.sh | 2 +- scripts/gpu_ram_info.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/dracula.sh b/scripts/dracula.sh index e841aa5..b5b02d5 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -142,7 +142,7 @@ main() script="#($current_dir/gpu_usage.sh)" elif [ $plugin = "gpu-ram-usage" ]; then - IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-ram-usage-colors" "pink dark_gray") + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-ram-usage-colors" "cyan dark_gray") script="#($current_dir/gpu_ram_info.sh)" elif [ $plugin = "cpu-usage" ]; then diff --git a/scripts/gpu_ram_info.sh b/scripts/gpu_ram_info.sh index f04d895..07de6df 100755 --- a/scripts/gpu_ram_info.sh +++ b/scripts/gpu_ram_info.sh @@ -27,7 +27,7 @@ get_gpu() { gpu=$(get_platform) if [[ "$gpu" == NVIDIA ]]; then - usage=$(nvidia-smi --query-gpu=memory.used,memory.total --format=csv,noheader,nounits | awk '{ used += $0; total +=$2 } END { printf("%dGB / %dGB\n", used / 1024, total / 1024) }') + usage=$(nvidia-smi --query-gpu=memory.used,memory.total --format=csv,noheader,nounits | awk '{ used += $0; total +=$2 } END { printf("%dGB/%dGB\n", used / 1024, total / 1024) }') else usage='unknown' fi @@ -38,7 +38,7 @@ main() { # storing the refresh rate in the variable RATE, default is 5 RATE=$(get_tmux_option "@dracula-refresh-rate" 5) - gpu_label=$(get_tmux_option "@dracula-gpu-usage-label" "GPU RAM") + gpu_label=$(get_tmux_option "@dracula-gpu-usage-label" "VRAM") gpu_usage=$(get_gpu) echo "$gpu_label $gpu_usage" sleep $RATE From 0f345b2deddeb0d3efd193dc2bf2f013225de91a Mon Sep 17 00:00:00 2001 From: Guido Kraemer Date: Wed, 26 Apr 2023 16:16:55 +0200 Subject: [PATCH 29/52] add gpu power usage monitor --- scripts/dracula.sh | 4 ++++ scripts/gpu_power.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100755 scripts/gpu_power.sh diff --git a/scripts/dracula.sh b/scripts/dracula.sh index b5b02d5..7ded8a7 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -145,6 +145,10 @@ main() IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-ram-usage-colors" "cyan dark_gray") script="#($current_dir/gpu_ram_info.sh)" + elif [ $plugin = "gpu-power-draw" ]; then + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-gpu-power-draw-colors" "green dark_gray") + script="#($current_dir/gpu_power.sh)" + elif [ $plugin = "cpu-usage" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-cpu-usage-colors" "orange dark_gray") script="#($current_dir/cpu_info.sh)" diff --git a/scripts/gpu_power.sh b/scripts/gpu_power.sh new file mode 100755 index 0000000..8ea5d13 --- /dev/null +++ b/scripts/gpu_power.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +get_platform() +{ + case $(uname -s) in + Linux) + gpu=$(lspci -v | grep VGA | head -n 1 | awk '{print $5}') + echo $gpu + ;; + + Darwin) + # TODO - Darwin/Mac compatability + ;; + + CYGWIN*|MINGW32*|MSYS*|MINGW*) + # TODO - windows compatability + ;; + esac +} + +get_gpu() +{ + gpu=$(get_platform) + if [[ "$gpu" == NVIDIA ]]; then + usage=$(nvidia-smi --query-gpu=power.draw,power.limit --format=csv,no header,nounits | awk '{ draw += $0; max +=$2 } END { printf("%dW/%dW\n", draw, max) }') + + else + usage='unknown' + fi + normalize_percent_len $usage +} + +main() +{ + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@dracula-refresh-rate" 5) + gpu_label=$(get_tmux_option "@dracula-gpu-usage-label" "GPU") + gpu_usage=$(get_gpu) + echo "$gpu_label $gpu_usage" + sleep $RATE +} + +# run the main driver +main From d7fce8ee744538e723cbaf8b81ee9c993c356048 Mon Sep 17 00:00:00 2001 From: Guido Kraemer Date: Wed, 26 Apr 2023 16:21:38 +0200 Subject: [PATCH 30/52] fix gpu power monitor --- scripts/gpu_power.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gpu_power.sh b/scripts/gpu_power.sh index 8ea5d13..c97e6ee 100755 --- a/scripts/gpu_power.sh +++ b/scripts/gpu_power.sh @@ -27,7 +27,7 @@ get_gpu() { gpu=$(get_platform) if [[ "$gpu" == NVIDIA ]]; then - usage=$(nvidia-smi --query-gpu=power.draw,power.limit --format=csv,no header,nounits | awk '{ draw += $0; max +=$2 } END { printf("%dW/%dW\n", draw, max) }') + usage=$(nvidia-smi --query-gpu=power.draw,power.limit --format=csv,noheader,nounits | awk '{ draw += $0; max +=$2 } END { printf("%dW/%dW\n", draw, max) }') else usage='unknown' From d1e93ccc3a662ca08038ffcc7fe47d410dd6149b Mon Sep 17 00:00:00 2001 From: Guido Kraemer Date: Wed, 26 Apr 2023 16:52:25 +0200 Subject: [PATCH 31/52] add new features to README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fb80867..110a2b6 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul - CPU usage (percentage or load average) - RAM usage - GPU usage +- GPU VRAM usage +- GPU power draw - Color code based on if prefix is active or not - List of windows with current window highlighted - When prefix is enabled smiley face turns from green to yellow From 8ee569dd6aa5db3837b3f491ea4d1cc2d7190e3d Mon Sep 17 00:00:00 2001 From: Jumscrafteur Date: Wed, 26 Apr 2023 17:08:06 +0200 Subject: [PATCH 32/52] Add dracula-spotify-tui-format --- scripts/spotify-tui.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/spotify-tui.sh b/scripts/spotify-tui.sh index dc07206..61352ef 100755 --- a/scripts/spotify-tui.sh +++ b/scripts/spotify-tui.sh @@ -15,7 +15,8 @@ main() exit 1 fi - spotify_playback=$(spt playback) + FORMAT=$(get_tmux_option "@dracula-spotify-tui-format" "%t - %a") + spotify_playback=$(spt playback -f "${FORMAT}") echo ${spotify_playback} } From 15ce3968c861ec5ce1a79d3581dd5f49eadd460b Mon Sep 17 00:00:00 2001 From: Jumscrafteur Date: Wed, 26 Apr 2023 17:21:32 +0200 Subject: [PATCH 33/52] Change default format to spt's default --- scripts/spotify-tui.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/spotify-tui.sh b/scripts/spotify-tui.sh index 61352ef..33ff32f 100755 --- a/scripts/spotify-tui.sh +++ b/scripts/spotify-tui.sh @@ -15,7 +15,7 @@ main() exit 1 fi - FORMAT=$(get_tmux_option "@dracula-spotify-tui-format" "%t - %a") + FORMAT=$(get_tmux_option "@dracula-spotify-tui-format" "%f %s %t - %a") spotify_playback=$(spt playback -f "${FORMAT}") echo ${spotify_playback} From eca1ca2827b83c67c514e991cf23fb72ee90033e Mon Sep 17 00:00:00 2001 From: Daniel Riedl <107212962+danriedl@users.noreply.github.com> Date: Thu, 4 May 2023 11:20:15 +0200 Subject: [PATCH 34/52] doc(Install): Add missing plugins. [#193] - spotify-tui - kubernetes-context --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index c2d1bb7..16fcbbd 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,7 @@ To enable plugins set up the `@dracula-plugins` option in you `.tmux.conf` file, The order that you define the plugins will be the order on the status bar left to right. ```bash -# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, attached-clients, network-vpn, weather, time +# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, attached-clients, network-vpn, weather, time, spotify-tui, kubernetes-context set -g @dracula-plugins "cpu-usage gpu-usage ram-usage" ``` From 31327163a195dfbb6f6df56acc460767fed3f24e Mon Sep 17 00:00:00 2001 From: Dor Munis <5811812+dormunis@users.noreply.github.com> Date: Fri, 12 May 2023 18:06:09 +0300 Subject: [PATCH 35/52] added eks support for kubernetes prompt --- INSTALL.md | 26 ++++++++++++++++++++++++++ scripts/dracula.sh | 8 +++++--- scripts/kubernetes_context.sh | 24 +++++++++++++++++++++++- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 16fcbbd..488e4c4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -273,3 +273,29 @@ Set the label when there is one client, or more than one client set -g @dracula-clients-singular client set -g @dracula-clients-plural clients ``` + +#### Kubernetes options + +Add prefix label before the context + +```bash +set -g @dracula-kubernetes-context-label "Some Label" +``` + +Hide user from the context string + +``` +set -g @dracula-kubernetes-hide-user true +``` + +Hide ARN (show only cluster name) - Available for EKS only (only available for cluster names that are ARNs) + +``` +set -g @dracula-kubernetes-eks-hide-arn true +``` + +Extract the account as a prefix to the cluster name - Available for EKS only (only available for cluster names that are ARNs) + +``` +set -g @dracula-kubernetes-eks-extract-account true +``` diff --git a/scripts/dracula.sh b/scripts/dracula.sh index a2bff10..e69f51b 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -8,6 +8,10 @@ source $current_dir/utils.sh main() { # set configuration option variables + show_kubernetes_context_label=$(get_tmux_option "@dracula-kubernetes-context-label" "") + eks_hide_arn=$(get_tmux_option "@dracula-kubernetes-eks-hide-arn" false) + eks_extract_account=$(get_tmux_option "@dracula-kubernetes-eks-extract-account" false) + hide_kubernetes_user=$(get_tmux_option "@dracula-kubernetes-hide-user" false) show_fahrenheit=$(get_tmux_option "@dracula-show-fahrenheit" true) show_location=$(get_tmux_option "@dracula-show-location" true) fixed_location=$(get_tmux_option "@dracula-fixed-location") @@ -23,7 +27,6 @@ main() show_day_month=$(get_tmux_option "@dracula-day-month" false) show_refresh=$(get_tmux_option "@dracula-refresh-rate" 5) time_format=$(get_tmux_option "@dracula-time-format" "") - show_kubernetes_context_label=$(get_tmux_option "@dracula-kubernetes-context-label" "") IFS=' ' read -r -a plugins <<< $(get_tmux_option "@dracula-plugins" "battery network weather") show_empty_plugins=$(get_tmux_option "@dracula-show-empty-plugins" true) @@ -195,8 +198,7 @@ main() elif [ $plugin = "kubernetes-context" ]; then IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-kubernetes-context-colors" "cyan dark_gray") - script="#($current_dir/kubernetes_context.sh $show_kubernetes_context_label)" - + script="#($current_dir/kubernetes_context.sh $eks_hide_arn $eks_extract_account $hide_kubernetes_user $show_kubernetes_context_label)" elif [ $plugin = "weather" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-weather-colors" "orange dark_gray") script="#($current_dir/weather_wrapper.sh $show_fahrenheit $show_location $fixed_location)" diff --git a/scripts/kubernetes_context.sh b/scripts/kubernetes_context.sh index ded1417..3fb033c 100755 --- a/scripts/kubernetes_context.sh +++ b/scripts/kubernetes_context.sh @@ -2,7 +2,10 @@ # setting the locale, some users have issues with different locales, this forces the correct one export LC_ALL=en_US.UTF-8 -label=$1 +hide_arn_from_cluster=$1 +extract_account=$2 +hide_user=$3 +label=$4 current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $current_dir/utils.sh @@ -12,11 +15,30 @@ current_user=$(kubectl config view --minify --output 'jsonpath={.contexts[?(@.na current_cluster=$(kubectl config view --minify --output 'jsonpath={.contexts[?(@.name=="'$current_context'")].context.cluster}'; echo) current_namespace=$(kubectl config view --minify --output 'jsonpath={.contexts[?(@.name=="'$current_context'")].context.namespace}'; echo) +current_account_id="" +if [[ "$current_cluster" =~ ^arn:aws:eks:[a-z0-9\-]*:[0-9]*:cluster/[a-z0-9\-]*$ ]]; then + if [ "$extract_account" = "true" ]; then + current_account_id=$(echo "$current_cluster" | cut -d':' -f5) + fi + if [ "$hide_arn_from_cluster" = "true" ]; then + current_cluster=${current_cluster##*/} + fi +fi + +if [ "$hide_user" = "true" ]; then + current_user="" +fi + main() { # storing the refresh rate in the variable RATE, default is 5 RATE=$(get_tmux_option "@dracula-refresh-rate" 5) OUTPUT_STRING="" + if [ ! -z "$current_account_id" ] + then + OUTPUT_STRING="${current_account_id}/" + fi + if [ ! -z "$current_user" ] then OUTPUT_STRING="${current_user}@" From d4080e434ea2133b2156cba0035429b25f6b6f56 Mon Sep 17 00:00:00 2001 From: Dor Munis <5811812+dormunis@users.noreply.github.com> Date: Fri, 12 May 2023 19:02:51 +0300 Subject: [PATCH 36/52] Added terraform workspace support --- scripts/dracula.sh | 5 +++++ scripts/terraform.sh | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 scripts/terraform.sh diff --git a/scripts/dracula.sh b/scripts/dracula.sh index a2bff10..af0b222 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -8,6 +8,7 @@ source $current_dir/utils.sh main() { # set configuration option variables + terraform_label=$(get_tmux_option "@dracula-terraform-label" "") show_fahrenheit=$(get_tmux_option "@dracula-show-fahrenheit" true) show_location=$(get_tmux_option "@dracula-show-location" true) fixed_location=$(get_tmux_option "@dracula-fixed-location") @@ -197,6 +198,10 @@ main() IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-kubernetes-context-colors" "cyan dark_gray") script="#($current_dir/kubernetes_context.sh $show_kubernetes_context_label)" + elif [ $plugin = "terraform" ]; then + IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-terraform-colors" "light_purple dark_gray") + script="#($current_dir/terraform.sh $terraform_label)" + elif [ $plugin = "weather" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-weather-colors" "orange dark_gray") script="#($current_dir/weather_wrapper.sh $show_fahrenheit $show_location $fixed_location)" diff --git a/scripts/terraform.sh b/scripts/terraform.sh new file mode 100755 index 0000000..72e144c --- /dev/null +++ b/scripts/terraform.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +label=$1 + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +main() { + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@dracula-refresh-rate" 5) + OUTPUT_STRING="N/A" + terraform_dir="$(tmux display-message -p '#{pane_current_path}')/.terraform" + if [ -d $terraform_dir ]; then + current_workspace=$(terraform workspace show 2>/dev/null) + OUTPUT_STRING="${current_workspace}" + fi + if [ "$label" = "" ] + then + echo "⚙️ ${OUTPUT_STRING}" + else + echo "⚙️ ${label} ${OUTPUT_STRING}" + fi + + sleep $RATE +} + +# run the main driver +main From 6fe855290f2d92ed91c165d2e6f925c12d21f901 Mon Sep 17 00:00:00 2001 From: jonathanforhan Date: Fri, 12 May 2023 13:35:49 -0400 Subject: [PATCH 37/52] fix bug with multi-word cwd --- scripts/cwd.sh | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/scripts/cwd.sh b/scripts/cwd.sh index cfae694..5da448c 100755 --- a/scripts/cwd.sh +++ b/scripts/cwd.sh @@ -1,29 +1,24 @@ #!/usr/bin/env bash # return current working directory of tmux pane -getPaneDir() -{ +getPaneDir() { nextone="false" - for i in $(tmux list-panes -F "#{pane_active} #{pane_current_path}"); - do - if [ "$nextone" == "true" ]; then - echo $i - return - fi - if [ "$i" == "1" ]; then - nextone="true" - fi + ret="" + for i in $(tmux list-panes -F "#{pane_active} #{pane_current_path}"); do + [ "$i" == "1" ] && nextone="true" && continue + [ "$i" == "0" ] && nextone="false" + [ "$nextone" == "true" ] && ret+="$i " done + echo "${ret%?}" } -main() -{ +main() { path=$(getPaneDir) # change '/home/user' to '~' - cwd=$(echo $path | sed "s;$HOME;~;g") + cwd="${path/"$HOME"/'~'}" - echo $cwd + echo "$cwd" } #run main driver program From 311da18dc2a5f5b4260ec3e952bbd49c16b0f70c Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Thu, 10 Nov 2022 22:31:24 -0500 Subject: [PATCH 38/52] Add tmux-ram-usage plugin --- INSTALL.md | 10 ++++- scripts/dracula.sh | 4 ++ scripts/tmux_ram_info.sh | 84 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100755 scripts/tmux_ram_info.sh diff --git a/INSTALL.md b/INSTALL.md index 16fcbbd..b54049e 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -48,7 +48,7 @@ To enable plugins set up the `@dracula-plugins` option in you `.tmux.conf` file, The order that you define the plugins will be the order on the status bar left to right. ```bash -# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, network, network-bandwidth, network-ping, attached-clients, network-vpn, weather, time, spotify-tui, kubernetes-context +# available plugins: battery, cpu-usage, git, gpu-usage, ram-usage, tmux-ram-usage, network, network-bandwidth, network-ping, attached-clients, network-vpn, weather, time, spotify-tui, kubernetes-context set -g @dracula-plugins "cpu-usage gpu-usage ram-usage" ``` @@ -161,6 +161,14 @@ Customize label set -g @dracula-ram-usage-label "RAM" ``` +#### tmux-ram-usage options + +Customize label + +```bash +set -g @dracula-tmux-ram-usage-label "MEM" +``` + #### network-bandwidth You can configure which network interface you want to view the bandwidth, diff --git a/scripts/dracula.sh b/scripts/dracula.sh index af0b222..a46f664 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -169,6 +169,10 @@ main() IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-ram-usage-colors" "cyan dark_gray") script="#($current_dir/ram_info.sh)" + elif [ $plugin = "tmux-ram-usage" ]; then + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-tmux-ram-usage-colors" "cyan dark_gray") + script="#($current_dir/tmux_ram_info.sh)" + elif [ $plugin = "network" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-network-colors" "cyan dark_gray") script="#($current_dir/network.sh)" diff --git a/scripts/tmux_ram_info.sh b/scripts/tmux_ram_info.sh new file mode 100755 index 0000000..8bdd2fe --- /dev/null +++ b/scripts/tmux_ram_info.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +kb_to_mb() { + if [ $# == 0 ]; then + read num + else + num="$1" + fi + bc <<< "scale=3;$num/1024" +} + +kb_to_gb() { + if [ $# == 0 ]; then + read num + else + num="$1" + fi + bc <<< "scale=6;$num/1048576" +} + +round() { + if [ $# == 1 ]; then + read num + scale="$1" + elif [ $# == 2 ]; then + num="$1" + scale="$2" + fi + printf "%.${scale}f" "${num}" +} + +get_tmux_ram_usage() +{ + local pid="$(tmux display-message -pF '#{pid}')" + local total_mem_kb=0 + case $(uname -s) in + Linux) + local pids="$(pstree -p $pid | tr -d '\n' | sed -rn -e 's/[^()]*\(([0-9]+)\)[^()]*/\1,/g' -e 's/,$//p')" + total_mem_kb="$(ps -o rss= -p "$pids" | paste -sd+ | bc)" + ;; + + Darwin) + local pids="$(pstree $pid | sed -En 's/[^0-9]+([0-9]+) .*/\1/p' | tr '\n' ',')" + total_mem_kb="$(ps -o rss= -p "$pids" | paste -sd+ - | bc)" + ;; + + FreeBSD) + # TODO check FreeBSD compatibility + local pids="$(pstree $pid | sed -En 's/[^0-9]+([0-9]+) .*/\1/p' | tr '\n' ',')" + total_mem_kb="$(ps -o rss= -p "$pids" | paste -sd+ - | bc)" + ;; + + CYGWIN*|MINGW32*|MSYS*|MINGW*) + # TODO - windows compatability + ;; + esac + local total_mem_mb=$(echo "$total_mem_kb" | kb_to_mb | round 0) + local total_mem_gb=$(echo "$total_mem_kb" | kb_to_gb | round 0) + + if (( $total_mem_gb > 0)); then + echo "${total_mem_gb}GB" + elif (( $total_mem_mb > 0 )); then + echo "${total_mem_mb}MB" + else + echo "${total_mem_kb}kB" + fi +} + +main() +{ + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@dracula-refresh-rate" 5) + ram_label=$(get_tmux_option "@dracula-tmux-ram-usage-label" "MEM") + ram_usage=$(get_tmux_ram_usage) + echo "$ram_label $ram_usage" +} + +#run main driver +main From 487db8f50cc148e7ce7dab5f398e24856183553b Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Sat, 17 Jun 2023 17:17:43 -0400 Subject: [PATCH 39/52] Add tmux-ram-usage feature to README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 630f72e..bbafc3a 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul - Battery percentage and AC power connection status - Refresh rate control - CPU usage (percentage or load average) -- RAM usage +- RAM usage (system and/or tmux server) - GPU usage - Custom status texts from external scripts - GPU VRAM usage From 83416ad3f890d8d9dcd77e1f1231fb10046f5dc4 Mon Sep 17 00:00:00 2001 From: Christopher Thompson Date: Tue, 4 Jul 2023 07:26:04 -0500 Subject: [PATCH 40/52] Add mercurial script --- INSTALL.md | 19 ++++++ scripts/dracula.sh | 5 ++ scripts/hg.sh | 163 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 187 insertions(+) create mode 100755 scripts/hg.sh diff --git a/INSTALL.md b/INSTALL.md index 16fcbbd..19b587a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -239,6 +239,25 @@ Show remote tracking branch together with diverge/sync state set -g @dracula-git-show-remote-status true ``` +#### mercurial options + +Hide details of hg changes +```bash +set -g @dracula-hg-disable-status true +``` + +Set symbol or message to use when the current pane has no hg repo +```bash +# default is unicode no message +set -g @dracula-hg-no-repo-message "" +``` + +Hide untracked files from being displayed as local changes +```bash +# default is false +set -g @dracula-hg-no-untracked-files true +``` + #### weather options Switch from default fahrenheit to celsius diff --git a/scripts/dracula.sh b/scripts/dracula.sh index af0b222..fc8ebfd 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -145,6 +145,11 @@ main() tmux set-option -g status-right-length 250 script="#($current_dir/git.sh)" + elif [ $plugin = "hg" ]; then + IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-hg-colors" "green dark_gray") + tmux set-option -g status-right-length 250 + script="#($current_dir/hg.sh)" + elif [ $plugin = "battery" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-battery-colors" "pink dark_gray") script="#($current_dir/battery.sh)" diff --git a/scripts/hg.sh b/scripts/hg.sh new file mode 100755 index 0000000..c787d1b --- /dev/null +++ b/scripts/hg.sh @@ -0,0 +1,163 @@ +#!/usr/bin/env bash + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +IFS=' ' read -r -a hide_status <<< $(get_tmux_option "@dracula-hg-disable-status" "false") +IFS=' ' read -r -a current_symbol <<< $(get_tmux_option "@dracula-hg-show-current-symbol" "✓") +IFS=' ' read -r -a diff_symbol <<< $(get_tmux_option "@dracula-hg-show-diff-symbol" "!") +IFS=' ' read -r -a no_repo_message <<< $(get_tmux_option "@dracula-hg-no-repo-message" "") +IFS=' ' read -r -a no_untracked_files <<< $(get_tmux_option "@dracula-hg-no-untracked-files" "false") + +# Get added, modified, and removed files from hg status +getChanges() +{ + declare -i added=0; + declare -i deleted=0; + declare -i modified=0; + declare -i removed=0; + declare -i untracked=0; + +for i in $(hg -R $path status -admru) + do + case $i in + 'A') + added+=1 + ;; + 'D') + deleted+=1 + ;; + 'M') + modified+=1 + ;; + 'R') + removed+=1 + ;; + '?') + untracked+=1 + ;; + + esac + done + + output="" + [ $added -gt 0 ] && output+="${added}A" + [ $modified -gt 0 ] && output+=" ${modified}M" + [ $deleted -gt 0 ] && output+=" ${deleted}D" + [ $removed -gt 0 ] && output+=" ${removed}R" + [ $no_untracked_files == "false" -a $untracked -gt 0 ] && output+=" ${untracked}?" + + echo $output +} + + +# getting the #{pane_current_path} from dracula.sh is no longer possible +getPaneDir() +{ + nextone="false" + for i in $(tmux list-panes -F "#{pane_active} #{pane_current_path}"); + do + if [ "$nextone" == "true" ]; then + echo $i + return + fi + if [ "$i" == "1" ]; then + nextone="true" + fi + done +} + + +# check if the current or diff symbol is empty to remove ugly padding +checkEmptySymbol() +{ + symbol=$1 + if [ "$symbol" == "" ]; then + echo "true" + else + echo "false" + fi +} + +# check to see if the current repo is not up to date with HEAD +checkForChanges() +{ + [ $no_untracked_files == "false" ] && no_untracked="-u" || no_untracked="" + if [ "$(checkForHgDir)" == "true" ]; then + if [ "$(hg -R $path status -admr $no_untracked)" != "" ]; then + echo "true" + else + echo "false" + fi + else + echo "false" + fi +} + +# check if a hg repo exists in the directory +checkForHgDir() +{ + if [ "$(hg -R $path branch)" != "" ]; then + echo "true" + else + echo "false" + fi +} + +# return branch name if there is one +getBranch() +{ + if [ $(checkForHgDir) == "true" ]; then + echo $(hg -R $path branch) + else + echo $no_repo_message + fi +} + +# return the final message for the status bar +getMessage() +{ + if [ $(checkForHgDir) == "true" ]; then + branch="$(getBranch)" + output="" + + if [ $(checkForChanges) == "true" ]; then + + changes="$(getChanges)" + + if [ "${hide_status}" == "false" ]; then + if [ $(checkEmptySymbol $diff_symbol) == "true" ]; then + output=$(echo "${changes} $branch") + else + output=$(echo "$diff_symbol ${changes} $branch") + fi + else + if [ $(checkEmptySymbol $diff_symbol) == "true" ]; then + output=$(echo "$branch") + else + output=$(echo "$diff_symbol $branch") + fi + fi + + else + if [ $(checkEmptySymbol $current_symbol) == "true" ]; then + output=$(echo "$branch") + else + output=$(echo "$current_symbol $branch") + fi + fi + + echo "$output" + else + echo $no_repo_message + fi +} + +main() +{ + path=$(getPaneDir) + getMessage +} + +#run main driver program +main From 601696fd7fed6064897d55ddfbbefca5949befbc Mon Sep 17 00:00:00 2001 From: Christopher Thompson Date: Tue, 4 Jul 2023 07:35:30 -0500 Subject: [PATCH 41/52] Fix symbol for deleted files --- scripts/hg.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/hg.sh b/scripts/hg.sh index c787d1b..966e110 100755 --- a/scripts/hg.sh +++ b/scripts/hg.sh @@ -24,7 +24,7 @@ for i in $(hg -R $path status -admru) 'A') added+=1 ;; - 'D') + '!') deleted+=1 ;; 'M') From a6aaf65856e85b02c711177f2ec4b68d51cc249d Mon Sep 17 00:00:00 2001 From: Christopher Thompson Date: Sat, 8 Jul 2023 19:04:42 -0500 Subject: [PATCH 42/52] Add missing flags to INSTALL.md --- INSTALL.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 19b587a..f8c7d55 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -239,23 +239,35 @@ Show remote tracking branch together with diverge/sync state set -g @dracula-git-show-remote-status true ``` -#### mercurial options +#### hg options Hide details of hg changes ```bash set -g @dracula-hg-disable-status true ``` +Set symbol to use for when branch is up to date with HEAD +```bash +#default is ✓.Avoid using non unicode characters that bash uses like $, * and ! +set -g @dracula-hg-show-current-symbol ✓ +``` + +Set symbol to use for when branch diverges from HEAD +```bash +#default is unicode !.Avoid bash special characters +set -g @dracula-hg-show-diff-symbol ! +``` + Set symbol or message to use when the current pane has no hg repo ```bash -# default is unicode no message +#default is unicode no message set -g @dracula-hg-no-repo-message "" ``` Hide untracked files from being displayed as local changes ```bash -# default is false -set -g @dracula-hg-no-untracked-files true +#default is false +set -g @dracula-hg-no-untracked-files false ``` #### weather options @@ -292,3 +304,4 @@ Set the label when there is one client, or more than one client set -g @dracula-clients-singular client set -g @dracula-clients-plural clients ``` + From b6fe033952bf10c199118370d83185f0afbf373f Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Sat, 8 Jul 2023 20:51:11 -0400 Subject: [PATCH 43/52] Add fallback for tmux-ram-usage without pstree --- scripts/tmux_ram_info.sh | 44 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/scripts/tmux_ram_info.sh b/scripts/tmux_ram_info.sh index 8bdd2fe..b349d2e 100755 --- a/scripts/tmux_ram_info.sh +++ b/scripts/tmux_ram_info.sh @@ -5,6 +5,28 @@ export LC_ALL=en_US.UTF-8 current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source $current_dir/utils.sh +get_cpids_linux() { + local ppid="$1" + local cpids + cpids="$(pgrep -P "$ppid")" + local cpid + echo "$ppid" + for cpid in $cpids; do + get_cpids_linux "$cpid" + done +} + +get_cpids_unix() { + local ppid="$1" + local cpids + cpids="$(pgrep -aP "$ppid")" + local cpid + echo "$ppid" + for cpid in $cpids; do + get_cpids_unix "$cpid" + done +} + kb_to_mb() { if [ $# == 0 ]; then read num @@ -36,22 +58,36 @@ round() { get_tmux_ram_usage() { - local pid="$(tmux display-message -pF '#{pid}')" + local pid + pid="$(tmux display-message -pF '#{pid}')" + local pids local total_mem_kb=0 case $(uname -s) in Linux) - local pids="$(pstree -p $pid | tr -d '\n' | sed -rn -e 's/[^()]*\(([0-9]+)\)[^()]*/\1,/g' -e 's/,$//p')" + if command -v pstree > /dev/null; then + pids="$(pstree -p "$pid" | tr -d '\n' | sed -rn -e 's/[^()]*\(([0-9]+)\)[^()]*/\1,/g' -e 's/,$//p')" + else + pids="$(get_cpids_linux "$pid" | tr '\n' ',')" + fi total_mem_kb="$(ps -o rss= -p "$pids" | paste -sd+ | bc)" ;; Darwin) - local pids="$(pstree $pid | sed -En 's/[^0-9]+([0-9]+) .*/\1/p' | tr '\n' ',')" + if command -v pstree > /dev/null; then + pids="$(pstree "$pid" | sed -En 's/[^0-9]+([0-9]+) .*/\1/p' | tr '\n' ',')" + else + pids="$(get_cpids_unix "$pid" | tr '\n' ',')" + fi total_mem_kb="$(ps -o rss= -p "$pids" | paste -sd+ - | bc)" ;; FreeBSD) # TODO check FreeBSD compatibility - local pids="$(pstree $pid | sed -En 's/[^0-9]+([0-9]+) .*/\1/p' | tr '\n' ',')" + if command -v pstree > /dev/null; then + pids="$(pstree "$pid" | sed -En 's/[^0-9]+([0-9]+) .*/\1/p' | tr '\n' ',')" + else + pids="$(get_cpids_unix "$pid" | tr '\n' ',')" + fi total_mem_kb="$(ps -o rss= -p "$pids" | paste -sd+ - | bc)" ;; From 640eb4c809c5db54129a68fac72f61a3b89a3c47 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Sun, 9 Jul 2023 00:51:44 -0400 Subject: [PATCH 44/52] Fix shellcheck warnings --- scripts/tmux_ram_info.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/tmux_ram_info.sh b/scripts/tmux_ram_info.sh index b349d2e..63d4cf0 100755 --- a/scripts/tmux_ram_info.sh +++ b/scripts/tmux_ram_info.sh @@ -3,14 +3,14 @@ export LC_ALL=en_US.UTF-8 current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -source $current_dir/utils.sh +source "$current_dir/utils.sh" get_cpids_linux() { local ppid="$1" local cpids - cpids="$(pgrep -P "$ppid")" local cpid echo "$ppid" + cpids="$(pgrep -P "$ppid")" for cpid in $cpids; do get_cpids_linux "$cpid" done @@ -19,9 +19,9 @@ get_cpids_linux() { get_cpids_unix() { local ppid="$1" local cpids - cpids="$(pgrep -aP "$ppid")" local cpid echo "$ppid" + cpids="$(pgrep -aP "$ppid")" for cpid in $cpids; do get_cpids_unix "$cpid" done @@ -29,7 +29,7 @@ get_cpids_unix() { kb_to_mb() { if [ $# == 0 ]; then - read num + read -r num else num="$1" fi @@ -38,7 +38,7 @@ kb_to_mb() { kb_to_gb() { if [ $# == 0 ]; then - read num + read -r num else num="$1" fi @@ -47,7 +47,7 @@ kb_to_gb() { round() { if [ $# == 1 ]; then - read num + read -r num scale="$1" elif [ $# == 2 ]; then num="$1" @@ -59,9 +59,11 @@ round() { get_tmux_ram_usage() { local pid - pid="$(tmux display-message -pF '#{pid}')" local pids local total_mem_kb=0 + local total_mem_mb=0 + local total_mem_gb=0 + pid="$(tmux display-message -pF '#{pid}')" case $(uname -s) in Linux) if command -v pstree > /dev/null; then @@ -95,12 +97,12 @@ get_tmux_ram_usage() # TODO - windows compatability ;; esac - local total_mem_mb=$(echo "$total_mem_kb" | kb_to_mb | round 0) - local total_mem_gb=$(echo "$total_mem_kb" | kb_to_gb | round 0) + total_mem_mb=$(kb_to_mb "$total_mem_kb" | round 0) + total_mem_gb=$(kb_to_gb "$total_mem_kb" | round 0) - if (( $total_mem_gb > 0)); then + if (( total_mem_gb > 0)); then echo "${total_mem_gb}GB" - elif (( $total_mem_mb > 0 )); then + elif (( total_mem_mb > 0 )); then echo "${total_mem_mb}MB" else echo "${total_mem_kb}kB" @@ -109,8 +111,6 @@ get_tmux_ram_usage() main() { - # storing the refresh rate in the variable RATE, default is 5 - RATE=$(get_tmux_option "@dracula-refresh-rate" 5) ram_label=$(get_tmux_option "@dracula-tmux-ram-usage-label" "MEM") ram_usage=$(get_tmux_ram_usage) echo "$ram_label $ram_usage" From 3ef141f82912073c8d3e0405922b8a2083e47ad0 Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Fri, 14 Jul 2023 11:00:47 +0200 Subject: [PATCH 45/52] [fix] 'synchronize-panes' is not runnable --- scripts/dracula.sh | 9 +++------ scripts/synchronize_panes.sh | 0 2 files changed, 3 insertions(+), 6 deletions(-) mode change 100644 => 100755 scripts/synchronize_panes.sh diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 9902754..2354e76 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -231,14 +231,11 @@ main() script="%a %m/%d %I:%M %p ${timezone} " fi fi - - else - continue - fi - - if [ $plugin = "synchronize-panes" ]; then + elif [ $plugin = "synchronize-panes" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-synchronize-panes-colors" "cyan dark_gray") script="#($current_dir/synchronize_panes.sh $show_synchronize_panes_label)" + else + continue fi if $show_powerline; then diff --git a/scripts/synchronize_panes.sh b/scripts/synchronize_panes.sh old mode 100644 new mode 100755 From 5af1faa367d56a70a871c85e3a3f377d11622d98 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Fri, 28 Oct 2022 03:11:39 -0400 Subject: [PATCH 46/52] Add plugin for tmux-continuum status --- INSTALL.md | 23 +++++++++++++- scripts/continuum.sh | 75 ++++++++++++++++++++++++++++++++++++++++++++ scripts/dracula.sh | 4 +++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100755 scripts/continuum.sh diff --git a/INSTALL.md b/INSTALL.md index 6579094..0aadac0 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -318,4 +318,25 @@ Set the label when there is one client, or more than one client ```bash set -g @dracula-clients-singular client set -g @dracula-clients-plural clients -``` \ No newline at end of file +``` + +#### continuum options + +Hide output if no save has been performed recently +(otherwise, show the continuum save interval) + +```bash +set -g @dracula-continuum-mode alert +``` + +Show the time since the last continuum save + +```bash +set -g @dracula-continuum-mode time +``` + +In alert mode, show if a the last save was performed less then one minute ago (default is 15 seconds) + +```bash +set -g @dracula-continuum-time-threshold 60 +``` diff --git a/scripts/continuum.sh b/scripts/continuum.sh new file mode 100755 index 0000000..c45c514 --- /dev/null +++ b/scripts/continuum.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +# configuration +# @dracula-continuum-mode default (default|alert|time) +# @dracula-continuum-time-threshold 15 + +alert_mode="@dracula-continuum-mode" +time_threshold="@dracula-continuum-time-threshold" +warn_threshold=15 + +last_auto_save_option="@continuum-save-last-timestamp" +auto_save_interval_option="@continuum-save-interval" +auto_save_interval_default="15" + +current_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source $current_dir/utils.sh + +current_timestamp() { + echo "$(date +%s)" +} + +time_since_last_run_passed() { + local last_saved_timestamp="$(get_tmux_option "$last_auto_save_option" "0")" + printf "%s" "$(($(current_timestamp) - last_saved_timestamp))" +} + +print_status() { + local mode="$(get_tmux_option "$alert_mode" "default")" + local threshold="$(get_tmux_option "$time_threshold" "15")" + local save_int="$(get_tmux_option "$auto_save_interval_option" "$auto_save_interval_default")" + local interval_seconds="$((save_int * 60))" + local status="" + local time_delta="$(time_since_last_run_passed)" + local time_delta_minutes="$((time_delta / 60))" + + case "$mode" in + time) + if [[ $save_int -gt 0 ]]; then + if [[ "$time_delta" -gt $((interval_seconds+warn_threshold)) ]]; then + status="no save after $time_delta_minutes minutes!" + else + status="$time_delta_minutes" + fi + else + status="off" + fi + ;; + + alert) + if [[ "$time_delta" -gt $((interval_seconds+warn_threshold)) ]]; then + status="no save after $time_delta_minutes minutes!" + elif [[ "$time_delta" -le "$threshold" ]]; then + status="saved" + elif [[ $save_int -gt 0 ]]; then + status="" + else + status="off" + fi + ;; + + *) + if [[ "$time_delta" -le "$threshold" ]]; then + status="saved" + elif [[ $save_int -gt 0 ]]; then + status="$save_int" + else + status="off" + fi + ;; + esac + echo "$status" +} +print_status diff --git a/scripts/dracula.sh b/scripts/dracula.sh index 2354e76..0bf19c3 100755 --- a/scripts/dracula.sh +++ b/scripts/dracula.sh @@ -212,6 +212,10 @@ main() IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-terraform-colors" "light_purple dark_gray") script="#($current_dir/terraform.sh $terraform_label)" + elif [ $plugin = "continuum" ]; then + IFS=' ' read -r -a colors <<<$(get_tmux_option "@dracula-continuum-colors" "cyan dark_gray") + script="#($current_dir/continuum.sh)" + elif [ $plugin = "weather" ]; then IFS=' ' read -r -a colors <<< $(get_tmux_option "@dracula-weather-colors" "orange dark_gray") script="#($current_dir/weather_wrapper.sh $show_fahrenheit $show_location $fixed_location)" From 14300a6e751e3ee169f22847d17fa9610c274f4f Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Fri, 28 Oct 2022 06:34:42 -0400 Subject: [PATCH 47/52] Improve tmux-continuum status plugin --- INSTALL.md | 17 +++--- scripts/continuum.sh | 130 ++++++++++++++++++++++++++++++------------- 2 files changed, 98 insertions(+), 49 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 0aadac0..d91b1d1 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -322,20 +322,17 @@ set -g @dracula-clients-plural clients #### continuum options -Hide output if no save has been performed recently -(otherwise, show the continuum save interval) +Set the output mode. Options are: +- **countdown**: Show a T- countdown to the next save (default) +- **time**: Show the time since the last save +- **alert**: Hide output if no save has been performed recently +- **interval**: Show the continuum save interval ```bash -set -g @dracula-continuum-mode alert +set -g @dracula-continuum-mode countdown ``` -Show the time since the last continuum save - -```bash -set -g @dracula-continuum-mode time -``` - -In alert mode, show if a the last save was performed less then one minute ago (default is 15 seconds) +Show if the last save was performed less than 60 seconds ago (default threshold is 15 seconds) ```bash set -g @dracula-continuum-time-threshold 60 diff --git a/scripts/continuum.sh b/scripts/continuum.sh index c45c514..1e4229f 100755 --- a/scripts/continuum.sh +++ b/scripts/continuum.sh @@ -1,15 +1,28 @@ #!/usr/bin/env bash # setting the locale, some users have issues with different locales, this forces the correct one export LC_ALL=en_US.UTF-8 +if command -v gdate &>/dev/null; then + DATE=gdate +else + DATE=date +fi # configuration -# @dracula-continuum-mode default (default|alert|time) +# @dracula-continuum-mode default (countdown|time|alert|interval) # @dracula-continuum-time-threshold 15 alert_mode="@dracula-continuum-mode" time_threshold="@dracula-continuum-time-threshold" -warn_threshold=15 +warn_threshold=360 +first_save="@dracula-continuum-first-save" +# tmux-resurrect and tmux-continuum options +if [ -d "$HOME/.tmux/resurrect" ]; then + default_resurrect_dir="$HOME/.tmux/resurrect" +else + default_resurrect_dir="${XDG_DATA_HOME:-$HOME/.local/share}"/tmux/resurrect +fi +resurrect_dir_option="@resurrect-dir" last_auto_save_option="@continuum-save-last-timestamp" auto_save_interval_option="@continuum-save-interval" auto_save_interval_default="15" @@ -21,55 +34,94 @@ current_timestamp() { echo "$(date +%s)" } -time_since_last_run_passed() { - local last_saved_timestamp="$(get_tmux_option "$last_auto_save_option" "0")" - printf "%s" "$(($(current_timestamp) - last_saved_timestamp))" +set_tmux_option() { + local option="$1" + local value="$2" + tmux set-option -gq "$option" "$value" +} + +# tmux-resurrect dir +resurrect_dir() { + if [ -z "$_RESURRECT_DIR" ]; then + local path="$(get_tmux_option "$resurrect_dir_option" "$default_resurrect_dir")" + # expands tilde, $HOME and $HOSTNAME if used in @resurrect-dir + echo "$path" | sed "s,\$HOME,$HOME,g; s,\$HOSTNAME,$(hostname),g; s,\~,$HOME,g" + else + echo "$_RESURRECT_DIR" + fi +} +_RESURRECT_DIR="$(resurrect_dir)" + +last_resurrect_file() { + echo "$(resurrect_dir)/last" +} + +last_saved_timestamp() { + local last_saved_timestamp="$(get_tmux_option "$last_auto_save_option" "")" + local first_save_timestamp="$(get_tmux_option "$first_save" "")" + # continuum sets the last save timestamp to the current time on first load if auto_save_option is not set + # so we can outrace it and detect that last_uato_save_option is empty and the timestamp is a dummy save + if [ -z "$first_save_timestamp" ]; then + last_saved_timestamp="$($DATE -r "$(last_resurrect_file)" +%s)" || last_saved_timestamp=0 + set_tmux_option "$first_save" "$last_saved_timestamp" + elif [ "$first_save_timestamp" != "done" ]; then + last_saved_timestamp="$($DATE -r "$(last_resurrect_file)" +%s)" || last_saved_timestamp=0 + if [ "$last_saved_timestamp" -gt "$first_save_timestamp" ]; then + set_tmux_option "$first_save" "done" + else + last_saved_timestamp="$first_save_timestamp" + fi + fi + echo "$last_saved_timestamp" } print_status() { - local mode="$(get_tmux_option "$alert_mode" "default")" - local threshold="$(get_tmux_option "$time_threshold" "15")" + local mode="$(get_tmux_option "$alert_mode" "countdown")" + local info_threshold="$(get_tmux_option "$time_threshold" "15")" local save_int="$(get_tmux_option "$auto_save_interval_option" "$auto_save_interval_default")" local interval_seconds="$((save_int * 60))" local status="" - local time_delta="$(time_since_last_run_passed)" + local last_timestamp="$(last_saved_timestamp)" + local time_delta="$(($(current_timestamp) - last_timestamp))" local time_delta_minutes="$((time_delta / 60))" - case "$mode" in - time) - if [[ $save_int -gt 0 ]]; then - if [[ "$time_delta" -gt $((interval_seconds+warn_threshold)) ]]; then - status="no save after $time_delta_minutes minutes!" - else - status="$time_delta_minutes" - fi - else - status="off" - fi - ;; + if [[ $save_int -gt 0 ]]; then + if [[ "$time_delta" -gt $((interval_seconds + warn_threshold)) ]]; then + if [[ "$mode" == "countdown" ]]; then + # continuum timestamp may be different than file timestamp on first load + local last_continuum_timestamp="$(get_tmux_option "$last_auto_save_option" "")" + time_delta="$(($(current_timestamp) - last_continuum_timestamp))" + time_delta_minutes="$((time_delta / 60))" - alert) - if [[ "$time_delta" -gt $((interval_seconds+warn_threshold)) ]]; then - status="no save after $time_delta_minutes minutes!" - elif [[ "$time_delta" -le "$threshold" ]]; then - status="saved" - elif [[ $save_int -gt 0 ]]; then - status="" + status="last save: $($DATE -d "@$last_timestamp" '+%F %T'); next: T$(printf '%+d' "$((time_delta_minutes - save_int)) min")" else - status="off" + status="last save: $($DATE -d "@$last_timestamp" '+%F %T')" fi - ;; + elif [[ "$time_delta" -le "$info_threshold" ]]; then + status="saved" + else + case "$mode" in + countdown) + status="T$(printf '%+d' "$((time_delta_minutes - save_int))")min"; + ;; + + time) + status="$time_delta_minutes"; + ;; + + alert) + status="" + ;; + + interval) + status="$save_int" + ;; + esac + fi + else + status="off" + fi - *) - if [[ "$time_delta" -le "$threshold" ]]; then - status="saved" - elif [[ $save_int -gt 0 ]]; then - status="$save_int" - else - status="off" - fi - ;; - esac echo "$status" } print_status From 67cde9d1ae2ac980a7d1f35c03fd09702db3c233 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Fri, 28 Oct 2022 12:14:50 -0400 Subject: [PATCH 48/52] Improve date compat in tmux-continuum status --- scripts/continuum.sh | 49 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/scripts/continuum.sh b/scripts/continuum.sh index 1e4229f..54ba773 100755 --- a/scripts/continuum.sh +++ b/scripts/continuum.sh @@ -1,11 +1,6 @@ #!/usr/bin/env bash # setting the locale, some users have issues with different locales, this forces the correct one export LC_ALL=en_US.UTF-8 -if command -v gdate &>/dev/null; then - DATE=gdate -else - DATE=date -fi # configuration # @dracula-continuum-mode default (countdown|time|alert|interval) @@ -34,6 +29,42 @@ current_timestamp() { echo "$(date +%s)" } +file_mtime() { + if [ ! -f "$1" ]; then + echo 0 + return + fi + case $(uname -s) in + Linux|Darwin) + date -r "$1" +%s + ;; + + FreeBSD) + stat -f %m "$1" + ;; + + CYGWIN*|MINGW32*|MSYS*|MINGW*) + # TODO - windows compatability + ;; + esac +} + +timestamp_date() { + case $(uname -s) in + Linux) + date -d "@$1" "$2" + ;; + + Darwin|FreeBSD) + date -r "$1" "$2" + ;; + + CYGWIN*|MINGW32*|MSYS*|MINGW*) + # TODO - windows compatability + ;; + esac +} + set_tmux_option() { local option="$1" local value="$2" @@ -62,10 +93,10 @@ last_saved_timestamp() { # continuum sets the last save timestamp to the current time on first load if auto_save_option is not set # so we can outrace it and detect that last_uato_save_option is empty and the timestamp is a dummy save if [ -z "$first_save_timestamp" ]; then - last_saved_timestamp="$($DATE -r "$(last_resurrect_file)" +%s)" || last_saved_timestamp=0 + last_saved_timestamp="$(file_mtime "$(last_resurrect_file)")" || last_saved_timestamp=0 set_tmux_option "$first_save" "$last_saved_timestamp" elif [ "$first_save_timestamp" != "done" ]; then - last_saved_timestamp="$($DATE -r "$(last_resurrect_file)" +%s)" || last_saved_timestamp=0 + last_saved_timestamp="$(file_mtime "$(last_resurrect_file)")" || last_saved_timestamp=0 if [ "$last_saved_timestamp" -gt "$first_save_timestamp" ]; then set_tmux_option "$first_save" "done" else @@ -93,9 +124,9 @@ print_status() { time_delta="$(($(current_timestamp) - last_continuum_timestamp))" time_delta_minutes="$((time_delta / 60))" - status="last save: $($DATE -d "@$last_timestamp" '+%F %T'); next: T$(printf '%+d' "$((time_delta_minutes - save_int)) min")" + status="last save: $(timestamp_date "$last_timestamp" '+%F %T'); next: T$(printf '%+d' "$((time_delta_minutes - save_int))")min" else - status="last save: $($DATE -d "@$last_timestamp" '+%F %T')" + status="last save: $(timestamp_date "$last_timestamp" '+%F %T')" fi elif [[ "$time_delta" -le "$info_threshold" ]]; then status="saved" From e0dd39def54e1af2080261f2481e0460ab912998 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Tue, 1 Nov 2022 03:01:33 -0400 Subject: [PATCH 49/52] Improve tmux-continuum status if no save present --- scripts/continuum.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/continuum.sh b/scripts/continuum.sh index 54ba773..a66e897 100755 --- a/scripts/continuum.sh +++ b/scripts/continuum.sh @@ -31,7 +31,7 @@ current_timestamp() { file_mtime() { if [ ! -f "$1" ]; then - echo 0 + echo -1 return fi case $(uname -s) in @@ -93,10 +93,10 @@ last_saved_timestamp() { # continuum sets the last save timestamp to the current time on first load if auto_save_option is not set # so we can outrace it and detect that last_uato_save_option is empty and the timestamp is a dummy save if [ -z "$first_save_timestamp" ]; then - last_saved_timestamp="$(file_mtime "$(last_resurrect_file)")" || last_saved_timestamp=0 + last_saved_timestamp="$(file_mtime "$(last_resurrect_file)")" || last_saved_timestamp=-1 set_tmux_option "$first_save" "$last_saved_timestamp" elif [ "$first_save_timestamp" != "done" ]; then - last_saved_timestamp="$(file_mtime "$(last_resurrect_file)")" || last_saved_timestamp=0 + last_saved_timestamp="$(file_mtime "$(last_resurrect_file)")" || last_saved_timestamp=-1 if [ "$last_saved_timestamp" -gt "$first_save_timestamp" ]; then set_tmux_option "$first_save" "done" else @@ -118,15 +118,18 @@ print_status() { if [[ $save_int -gt 0 ]]; then if [[ "$time_delta" -gt $((interval_seconds + warn_threshold)) ]]; then + if [[ "$last_timestamp" == -1 ]]; then + status="no save" + else + status="last save: $(timestamp_date "$last_timestamp" '+%F %T')" + fi if [[ "$mode" == "countdown" ]]; then # continuum timestamp may be different than file timestamp on first load local last_continuum_timestamp="$(get_tmux_option "$last_auto_save_option" "")" time_delta="$(($(current_timestamp) - last_continuum_timestamp))" time_delta_minutes="$((time_delta / 60))" - status="last save: $(timestamp_date "$last_timestamp" '+%F %T'); next: T$(printf '%+d' "$((time_delta_minutes - save_int))")min" - else - status="last save: $(timestamp_date "$last_timestamp" '+%F %T')" + status="$status; next: T$(printf '%+d' "$((time_delta_minutes - save_int))")min" fi elif [[ "$time_delta" -le "$info_threshold" ]]; then status="saved" From 7a8c436807358d1273016833ef3ed8d5f1fdc963 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Thu, 10 Nov 2022 22:53:25 -0500 Subject: [PATCH 50/52] Trim tmux-continuum status if no save present --- scripts/continuum.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/continuum.sh b/scripts/continuum.sh index a66e897..189e01b 100755 --- a/scripts/continuum.sh +++ b/scripts/continuum.sh @@ -129,7 +129,7 @@ print_status() { time_delta="$(($(current_timestamp) - last_continuum_timestamp))" time_delta_minutes="$((time_delta / 60))" - status="$status; next: T$(printf '%+d' "$((time_delta_minutes - save_int))")min" + status="$status; T$(printf '%+d' "$((time_delta_minutes - save_int))")min" fi elif [[ "$time_delta" -le "$info_threshold" ]]; then status="saved" From cf474c934260ef82e7da7cf71dbf8a1bf6877b70 Mon Sep 17 00:00:00 2001 From: Aaron Kollasch Date: Sat, 17 Jun 2023 17:28:39 -0400 Subject: [PATCH 51/52] Add tmux-continuum feature to README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6ea0860..6fcd9ef 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Configuration and options can be found at [draculatheme.com/tmux](https://dracul - Info if the Panes are synchronized - Spotify playback (needs the tool spotify-tui installed) - Current kubernetes context +- Countdown to tmux-continuum save - Current working directory of tmux pane ## Compatibility From 73a2bf2b224950722a7225737bbe59ae83470fd5 Mon Sep 17 00:00:00 2001 From: FriendlyTroll Date: Tue, 29 Aug 2023 13:39:09 +0200 Subject: [PATCH 52/52] Update INSTALL.md Add info on how to set custom time format --- INSTALL.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index d91b1d1..c4ba180 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -210,6 +210,12 @@ Enable military time set -g @dracula-military-time true ``` +Set custom time format e.g (2023-01-01 14:00) +```bash +set -g @dracula-time-format "%F %R" +``` +See [[this page]](https://man7.org/linux/man-pages/man1/date.1.html) for other format symbols. + #### git options Hide details of git changes