#!/bin/zsh if [[ -z "$DISPLAY" ]]; then echo "no DISPLAY set" >/dev/stderr exit 1 fi if [[ -n "$XDG_DATA_HOME" ]]; then tmux_sesssion_dir=$XDG_DATA_HOME/tmux_session else tmux_sesssion_dir=$HOME/.local/share/tmux_session fi typeset -A sessions if [[ -f $tmux_sesssion_dir/$DISPLAY ]]; then while IFS=: read session workspace; do sessions[${session}]=$workspace done <$tmux_sesssion_dir/$DISPLAY fi wmctrl -l | while read winid workspace host title; do case $title in (*tmux::*:*) session=${${title##*tmux::}%%:*} sessions[${session}]=$workspace ;; esac done for session in ${(ko)sessions}; do print -r -- "${session}:${sessions[${session}]}" done >$tmux_sesssion_dir/$DISPLAY