動機
windowを任意の場所に追加できないことが不満だった。歯抜けのwindow番号があるときにwindowを追加すると歯抜けの中で一番若い番号に作成される。作成後に移動できるがコマンドが覚えられないし、手間がかかる。また歯抜け状態を一括で無くしたいとも思っていた。仕様
windowリストを配列のように操作できること。歯抜けの部分はnullが格納されている要素と考える。メソッドはpush,insert,compactの3種類。insertは引数を伴わない場合は現在選択しているwindowの番号+1がデフォルト値になる。
実装方法
screen -Q [command] の出力をパースすることで歯抜けの状態や、現在選択しているwindowを知ることができる。この情報を元にwindowリストを操作する。言語はPerl。コアモジュールのみ使用している。
使い方
インストール
cpanm Term::GnuScreen::WindowArrayLike;
もしくはMinillaを使用しているのでgithubからリポジトリを取得してminil install。
Qオプションがない場合、新しいバージョンのscreenをインストールしてください。
screenから呼び出し
# .screenrc
# push is [C-t l p]
escape ^Tt
bind l command -c window_array_like
bind -c window_array_like p exec perl -e 'use Term::GnuScreen::WindowArrayLike; Term::GnuScreen::WindowArrayLike->new->push'
.screenrcを設定して任意のキーに割り当てて使用する。上記はC-t + l + p でpushメソッドが実行される。このように2キー(lとp)を登録したい場合は、-cで任意のクラス名を割り当てて使用する。
TODO
insertに任意の引数を渡せるようにする.screenrc設定がわからないscreenコマンドが遅い