From: Siraaj Khandkar Date: Mon, 10 Oct 2022 16:37:19 +0000 (-0400) Subject: Handle named socks in tmux status X-Git-Url: https://git.xandkar.net/?p=khome.git;a=commitdiff_plain;h=921bf326e2d6ba8c67e6ba13e30957a8c4224ffe Handle named socks in tmux status --- diff --git a/home/lib/login_functions.sh b/home/lib/login_functions.sh index f435d19..b6dd8a6 100644 --- a/home/lib/login_functions.sh +++ b/home/lib/login_functions.sh @@ -674,14 +674,46 @@ status() { echo 'accounting' - printf '%stmux\n%sservers %d, clients %d\n' \ - "$indent_unit" \ - "${indent_unit}${indent_unit}" \ - "$(pgrep -l 'tmux: server' | wc -l)" \ - "$(pgrep -l 'tmux: client' | wc -l)" - # TODO sessions and clients per server - #"$(tmux list-sessions 2> /dev/null | wc -l)" \ - #"$(tmux list-clients 2> /dev/null | wc -l)" + printf '%stmux (s->c)\n' "$indent_unit" + ps -eo comm,cmd \ + | awk ' + # Expecting lines like: + # "tmux: server tmux -L pistactl new-session -d -s pistactl" + # "tmux: client tmux -L foo" + # "tmux: client tmux -Lbar" + /^tmux:/ { + # XXX This of course assumes pervasive usage of -L + # TODO Handle -S + role=$2 + split($0, sides_of_L, "-L") + split(sides_of_L[2], words_right_of_L, FS) + sock=words_right_of_L[1] + if (!sock) { + sock = "anon" + } else { + sock = "named." sock + } + roles[role]++ + socks[sock]++ + count[role, sock]++ + } + + END { + sock_sep = "" + for (sock in socks) { + printf "%s%s ", sock_sep, sock + sock_sep = "\n" + role_sep = "" + for (role in roles) { + printf "%s%d", role_sep, count[role, sock] + role_sep = "->" + } + } + printf "\n" + }' \ + | sort \ + | column -t \ + | indent "${indent_unit}${indent_unit}" echo