commit - d14c9a0db672cd5c36115dc99313cb011929dbb4
commit + 24d85999d2fc8915aad15646326da25605ea3bee
blob - 42305fe90d50f021c9cf3b13443db25b478c1d1e
blob + 66dfff5b8f9a7347aeaf4ac06c595779ecc09fce
--- hosts/void/default.nix
+++ hosts/void/default.nix
ugrep
teip
remind
+ zmx
];
lsp = [
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
+#!/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
_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
host=$(_prompt_host)
take=$(_prompt_takeover)
nix=$(_prompt_nix)
+ zmx=$(_prompt_zmx)
l1="$_CORNER_TL$pwd"
if [ -n "$git" ]; then
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
+#!/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
+#!/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)