Guake のタブに tmux のセッション名を表示する
Guake のタブに tmux のセッション名を表示したいと思いませんか?
僕はGuake のタブに tmux のセッション名を表示したいと思います.
前提
使うものはこちら.
また,
- Guake の1タブにつき tmux のセッションが1つだけ
- Guake 自体の改造はしない
を仮定します.
Guake のタブ名
Guake のタブ名は,デフォルトで Terminal
や 端末
になっていると思います.
タブ名の変更方法
タブ名の変更は,次のコマンドでできます.
$ guake --rename-current-tab=<タブ名>
キーバインドの設定もできます.
tmux のセッション名の変更
変更は,次のように行えます.
$ tmux rename-session <セッション名>
タブ名とセッション名を同時に変更する
それぞれ独立に変更するのはダルいので,一括でできるようにしておきます.
rename-session
というコマンド名にしておきます.
$ touch rename-session $ chmod 777 rename-session
中身はこんな感じ.
#!/bin/sh -eu NAME=$1 if [ $# -ne 1 ]; then echo "Please set just 1 argument!" 1>&2 exit 1 else tmux rename-session $NAME guake --rename-current-tab=$NAME exit 0 fi
こいつによって,
$ rename-session <セッション・タブ名>
だけで両方変更されます.
カレントディレクトリ名をセッション・タブ名にする
だいたいカレントディレクトリ名をそのセッション名にすることが多いので,そのためのショートカットを作ります.
面倒なので全部 zshrc
に書きます.
まずは変更するための関数を定義します.
function rs() { NAME=`basename \`pwd\`` rename-session ${NAME/./} }
これは ctrl-s
で呼び出せるように widget 化します.
zle -N rs bindkey '^S' rs
既存のセッション名をタブに反映する
このままだと,既存のセッションに attach したときにタブ名が Terminal
のままです.
そこで,attach のタイミングでタブ名を変更するようにします.
セッション名の取得
tmux のセッション名は,次のように確認できます.
$ tmux display-message -p '#S'
tmuximum の改造
セッションの attach は全て tmuximum で行っているので,少しだけ attach 部分のコードをイジります.
*attach* ) name=$(echo "$answer" | awk '{print $4}' | sed 's/://') && guake --rename-current-tab=$name && tmux attach -t $name ;;
全容はこんな感じ.
動作はこんな感じ.
ToDo
まとめ
いかがでしたか?
今回は widget でのセッション名の指定ができませんでした.
今後誰かがやってくれることに期待ですね!