2008/09/23

screenで40より大きな番号を設定する方法

GNU Screen の初期設定では作成できるウィンドウの上限は40ですが、これだと不都合が生じるときがあります。ここではそれ以上の数を設定する方法をまとめます。

複数のサーバに対して設定ファイルを編集するウィンドウ、コマンドを実行するウィンドウ、ログをtailするウィンドウ、などとしているとあっという間にウィンドウの数が二桁になります。

ウィンドウ番号が一桁のものは「C-a ウィンドウ番号」と簡単にアクセスできますので、私はそれらを頻繁に利用するウィンドウ用として空けておきたいので、10番以降を用途別、たとえばWebサーバは10番台、DBサーバは20番台等と決めて作業していますが、デフォルトではウィンドウは40までしか作成できず、私の今の用途ではちょっと足りません。

調べてみると、これは .screenrcで変更できるものではなく、コンパイル時に指定するようです。

わざわざバイナリが用意されている screenをそのためだけにコンパイルするのも気が引けますが、ちょうど開発版では縦分割やレイアウトなど正式リリースが待たれる機能が実装されていますので、それらを試用すべく開発版をコンパイルして使っています。
% cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/screen co screen
% cd screen/src
% export CFLAGS='-DMAXWIN=100'
% ./configure --prefix=/usr/local --enable-colors256
% make
% make install
100個のウィンドウを作成したことはないですが、これでウィンドウ番号を99まで設定でき、「~の作業は21番のウィンドウ」「50番台はログをtailしているウィンドウ」「あまり使わないのは90番台」などとウィンドウ番号によるカテゴライズに幅がもてるようになりました。(私はdefzombieでログアウトしたウィンドを閉じない設定にしてるのでウィンドウ番号は固定のほうが都合がよい)

設定する方法と言っておいて実はコンパイルオプションでしたというのはズルい気がしますが、一応変更できたことをメモします。

なお、一桁番号のウィンドウへの切り替えはデフォルトで「C-a 0」~「C-a 9」と定義されていますが、二桁以上の番号に対しても同じ手順で切り替えできるよう、「C-a ' ウィンドウ番号」(select)もよく使います。