Tmux : Remove script preping for swaybar.

This commit is contained in:
Dmitry Voronin 2024-05-02 01:46:57 +03:00
parent b286793e0b
commit 185989ee7b
Signed by: voronind
SSH key fingerprint: SHA256:3kBb4iV2ahufEBNq+vFbUe4QYfHt98DHQjN7QaptY9k
6 changed files with 10 additions and 166 deletions

View file

@ -1,7 +1,6 @@
{ pkgs, inputs, const, style, util, key, setting, secret, ... } @args: let { pkgs, inputs, const, style, util, key, setting, secret, ... } @args: let
homePath = "/data/data/com.termux.nix/files/home"; homePath = "/data/data/com.termux.nix/files/home";
tmux = import ./common/tmux args; tmux = import ./common/tmux args;
tmuxScript = pkgs.writeShellScriptBin "tmux_script" tmux.script;
bash = import ./common/bash args; bash = import ./common/bash args;
nvim = import ./common/nvim args; nvim = import ./common/nvim args;
ssh = import ./common/ssh args; ssh = import ./common/ssh args;
@ -111,7 +110,7 @@ in {
ripgrep ripgrep
rsync rsync
sqlite sqlite
pkgs.tmux tmuxScript pkgs.tmux
tree tree
utillinux utillinux
wget wget

View file

@ -1,10 +1,8 @@
{ pkgs, style, key, util, ... } @args: let { pkgs, style, key, util, ... } @args: let
tmux = import ./tmux args; tmux = import ./tmux args;
script = pkgs.writeShellScriptBin "tmux_script" tmux.script;
in { in {
programs.tmux = { programs.tmux = {
enable = true; enable = true;
extraConfig = tmux.config; extraConfig = tmux.config;
}; };
environment.systemPackages = [ script ];
} }

View file

@ -1,150 +0,0 @@
{ setting, util, ... }: {
text = util.trimTabs ''
#!/usr/bin/env bash
function _tmux_battery() {
local IFS=$'\n'
local batteries=($(ls /sys/class/power_supply/ | grep ^BAT[0-9]$))
[[ "''${batteries}" = "" ]] && return 1
local battery="/sys/class/power_supply/''${batteries[0]}"
local level=$(cat ''${battery}/capacity)
local status=$(cat ''${battery}/status)
local is_charging=false
[[ "''${status}" = "Charging" ]] && is_charging=true
local icon
if ((level>=${toString(setting.tmux.status.battery.threshold.high)}))
then
icon="󱊣"
elif ((level>=${toString(setting.tmux.status.battery.threshold.medium)}))
then
icon="󱊢"
elif ((level>=${toString(setting.tmux.status.battery.threshold.low)}))
then
icon="󱊡"
else
icon="󰂎"
fi
echo -n "''${icon}"
''${is_charging} && echo -n "󱐋"
echo
echo -n "''${level}"
}
function _tmux_volume() {
local IFS=$'\n'
local level=$(wpctl get-volume @DEFAULT_SINK@ | cut -d\ -f2 | sed -e "s/^0//" -e "s/\.//")
[[ "''${level}" = "" ]] && return 1
[[ "''${level}" = "00" ]] && level="0"
local icon
if ((level>=${toString(setting.tmux.status.volume.threshold.high)}))
then
icon="󰕾"
elif ((level>=${toString(setting.tmux.status.volume.threshold.medium)}))
then
icon="󰖀"
elif ((level>=${toString(setting.tmux.status.volume.threshold.low)}))
then
icon=""
else
icon="󰝟"
fi
local muted=$(wpctl get-volume @DEFAULT_SINK@ | grep '[MUTED]')
if [[ "''${muted}" != "" ]]; then
icon="󰸈"
fi
echo "''${icon}"
echo -n "''${level}"
}
function _tmux_statusbar() {
local IFS=$'\n'
local sep=""
local thr_volume=${toString(setting.tmux.status.volume.threshold.show)}
local thr_battery=${toString(setting.tmux.status.battery.threshold.show)}
local is_uber=$(cat "/tmp/.tmux_uber" || echo -n false)
# Get data.
battery=($(_tmux_battery))
volume=($(_tmux_volume))
# Prepare separators.
sep_batvol=" "
if ''${is_uber} || [[ "''${battery[1]}" -lt "''${thr_battery}" ]] || [[ "''${volume[1]}" -gt "''${thr_volume}" ]]; then
sep_batvol=" ''${sep} "
fi
if [[ "''${battery[0]}" = "" ]]; then
sep_batvol=""
fi
# Print.
echo -n " "
# Assemble.
if ''${is_uber}; then
local lang=($(_tmux_language))
[[ "''${lang[0]}" != "" ]] && {
echo -n "''${lang[0]} ''${sep} "
};
[[ "''${volume[0]}" != "" ]] && echo -n "''${volume[0]} ''${volume[1]}%''${sep_batvol}"
[[ "''${battery[0]}" != "" ]] && echo -n "''${battery[0]} ''${battery[1]}%"
else
[[ "''${volume[0]}" != "" ]] && {
echo -n "''${volume[0]}"
[[ "''${volume[1]}" -gt 100 ]] && echo -n " ''${volume[1]}%"
echo -n "''${sep_batvol}"
};
[[ "''${battery[0]}" != "" ]] && {
echo -n "''${battery[0]}"
[[ "''${battery[1]}" -lt 40 ]] && echo -n " ''${battery[1]}%"
};
fi
echo -n " "
}
function _tmux_language() {
local IFS=$'\n'
local lang=$(swaymsg -t get_inputs | jq 'map(select(has("xkb_active_layout_name")))[0].xkb_active_layout_name')
echo -n ''${lang:1:2}
}
function _tmux_client_count() {
local IFS=$'\n'
local session=''${1}
local count=$(tmux list-clients -t ''${session} | wc -l)
[ ''${count} -gt 1 ] && echo -n "+''${count} "
}
function _tmux_toggle_statusbar() {
local file="/tmp/.tmux_uber"
if [[ ! -f ''${file} ]]; then
echo "true" > ''${file}
elif $(cat ''${file}); then
echo "false" > ''${file}
else
echo "true" > ''${file}
fi
}
IFS=$'\n'
action=''${1}
session=''${2}
case "''${action}" in
"statusbar") _tmux_statusbar ;;
"client_count") _tmux_client_count ''${session} ;;
"togglestatusbar") _tmux_toggle_statusbar ;;
esac
'';
}

View file

@ -1,4 +1,3 @@
{ style, key, util, setting, ... } @args: { { style, key, util, setting, ... } @args: {
config = util.catAllText ./module args; config = util.catAllText ./module args;
script = (import ./Script.nix args).text;
} }

View file

@ -7,16 +7,15 @@
in { in {
text = '' text = ''
bind-key -n ${mod}-${key.tmux.status.toggle} set-option -g status; bind-key -n ${mod}-${key.tmux.status.toggle} set-option -g status;
bind-key -n ${mod}-${key.tmux.status.uber} run-shell 'tmux_script togglestatusbar'
set -g status-interval ${toString(setting.tmux.status.interval)} set -g status-interval ${toString(setting.tmux.status.interval)}
set -g status-position bottom set -g status-position bottom
set -g status-justify left set -g status-justify left
set -g status-style "fg=#${fg}" set -g status-style "fg=#${fg}"
set -g status-left "#[bold] #H-#S #(tmux_script client_count #S)" set -g status-left "#[bold] #H-#S "
set -g status-left-length ${toString(setting.tmux.status.length)} set -g status-left-length ${toString(setting.tmux.status.length)}
set -g status-right-length ${toString(setting.tmux.status.length)} set -g status-right-length ${toString(setting.tmux.status.length)}
set -g status-right "#(tmux_script statusbar) %d %a #[bold] %H:%M " set -g status-right " %d %a #[bold] %H:%M "
set-window-option -g window-status-separator "" set-window-option -g window-status-separator ""

View file

@ -93,8 +93,7 @@
prev = "9"; prev = "9";
}; };
status = { status = {
toggle = "F"; toggle = "f";
uber = "f";
}; };
window = { window = {
new = "Escape"; new = "Escape";