commit 24d85999d2fc8915aad15646326da25605ea3bee from: mtmn date: Mon Aug 3 09:40:59 2026 UTC install zmx commit - d14c9a0db672cd5c36115dc99313cb011929dbb4 commit + 24d85999d2fc8915aad15646326da25605ea3bee blob - 42305fe90d50f021c9cf3b13443db25b478c1d1e blob + 66dfff5b8f9a7347aeaf4ac06c595779ecc09fce --- hosts/void/default.nix +++ hosts/void/default.nix @@ -174,6 +174,7 @@ ugrep teip remind + zmx ]; lsp = [ @@ -194,6 +195,7 @@ lisp = [ haunt gnu-shepherd + roswell ]; lua = lib.concatLists [ blob - e49f7d0640ae9968947d4d5f725bc4aae227528c blob + bf938e6ac21d43a61ba6ca00fdeb182a0e54b5db Binary files hosts/work/default.nix and hosts/work/default.nix differ blob - /dev/null blob + eb3da54739097f6f57c3cc2580a50f7e52308d57 (mode 644) --- /dev/null +++ modules/mixins/dotfiles/config/bash/rc/zmx @@ -0,0 +1,5 @@ +#!/bin/bash + +if command -v zmx >/dev/null 2>&1; then + eval "$(zmx completions bash)" +fi blob - 4f269c8e6f4e31f84838071ab458104cb7dc1414 blob + cd9f31609dbd41cfdba9fd5488948d47e179fb97 --- modules/mixins/dotfiles/config/shell/rc/prompt-functions +++ modules/mixins/dotfiles/config/shell/rc/prompt-functions @@ -64,6 +64,11 @@ _prompt_host() { _seg "$C_3" "$_HOSTNAME" } +_prompt_zmx() { + [ -n "${ZMX_SESSION-}" ] || return + _seg "$C_6" "[$ZMX_SESSION]" +} + _prompt_takeover() { owner=$(stat -c %U . 2>/dev/null) || return if [ "$owner" = "$_UID_USER" ]; then @@ -92,6 +97,7 @@ _get_ps1() { host=$(_prompt_host) take=$(_prompt_takeover) nix=$(_prompt_nix) + zmx=$(_prompt_zmx) l1="$_CORNER_TL$pwd" if [ -n "$git" ]; then @@ -105,6 +111,9 @@ _get_ps1() { if [ -n "$host" ]; then l2="$l2$sep$host" fi + if [ -n "$zmx" ]; then + l2="$l2$sep$zmx" + fi if [ -n "$take" ]; then l2="$l2$sep$take" fi blob - /dev/null blob + f6133448b065644915b0936535b3e7177a72db09 (mode 644) --- /dev/null +++ modules/mixins/dotfiles/config/shell/rc/zmx @@ -0,0 +1,39 @@ +#!/bin/sh + +alias zmls='zmx list' + +zx() { + if [ -n "${ZMX_SESSION-}" ]; then + printf 'already in zmx session %s; detach with ctrl+\\ first\n' \ + "$ZMX_SESSION" >&2 + return 1 + fi + + if [ $# -gt 0 ]; then + zmx attach "$1" + return + fi + + tab=$(printf '\t') + sessions=$(zmx list 2>/dev/null | awk -v FS="$tab" '{ + delete f + for (i = 1; i <= NF; i++) { + sub(/^[[:space:]]+/, "", $i) + key = substr($i, 1, index($i, "=") - 1) + f[key] = substr($i, index($i, "=") + 1) + } + printf "%-20s clients:%-2s %s\n", f["name"], f["clients"], f["start_dir"] + }') + + result=$(printf '%s' "$sessions" | fzf --exact --print-query \ + --preview 'zmx history {1} | tail -n 500' \ + --preview-window 'right:60%') + fzf_exit=$? + [ $fzf_exit -eq 130 ] && return + + selection=$(printf '%s' "$result" | tail -1) + [ -z "$selection" ] && return + session=${selection%% *} + + zmx attach "$session" +} blob - /dev/null blob + 4ea6306a04bc9a831e81ea0364d1381494b68499 (mode 644) --- /dev/null +++ modules/mixins/dotfiles/config/zsh/rc/zmx @@ -0,0 +1,11 @@ +#!/bin/zsh + +if (( $+commands[zmx] )); then + eval "$(zmx completions zsh)" +fi + +_zmx_title() { + [[ -n $ZMX_SESSION ]] || return + printf '\033]2;%s\007' "$ZMX_SESSION" +} +precmd_functions+=(_zmx_title)