NetBSD Advent Calendar 2020 24日目の記事です。
今日はウインドウマネージャのctwmについて、設定周りの話をしようと思います。
NetBSDとctwm
1日目の記事でも紹介していますが、NetBSDでは長いあいだデフォルトのウインドウマネージャとしてtwmが採用されていましたが、NetBSD-9.1からctwmに切り替えられました。
個人的にはctwmは軽量で機能的にも使いやすいという印象であり、VNC等を経由してGUIを使用するような場合に有用です。
ただ、デフォルトの設定だとちょっと煩わしい挙動や表示であるため、使いやすくするための設定項目をいくつか紹介できればと思います。
ctwmの設定
個人用の.ctwmrcを用意する
ctwmのデフォルト設定は /etc/X11/ctwm/system.ctwmrc
に記載されています。必要な設定のみ個人向けにカスタムしたいため、 ~/.ctwmrc
にファイルをコピーして編集します。
$ cp /etc/X11/ctwm/system.ctwmrc ~/.ctwmrc
右クリックでメニューを出さないようにする
1日目の記事でも紹介しましたが、デフォルトではマウスの左クリックでメニューが表示されます(右クリックでも同じメニューが出ます...)。VNC等でGUIを表示している際に、VNCのウインドウにアクティブにするつもりでクリックしたらメニューが表示され、運悪く"Restart CTWM"をクリックしてしまうという事故が発生しかねないため、以下のように Button1
に紐づく動作をコメントアウトすることで左クリックによるメニュー表示を無効化します。
#Button1 = : root : f.menu "NetBSD"
フォーカスしているウインドウを強調表示する
ctwmでは、マウスカーソルの下にあるウインドウに対して自動的にフォーカスが当たるという挙動になっています。これは便利な挙動ですが、マウスカーソルに注目しないとフォーカスが当たっているウインドウが識別しずらいことがあります。
このような場合には、 NoTitleHightlight
をコメントアウトすることで、フォーカスが当たっているウインドウを強調表示することができます。表示的にはtwmのような強調表示になります。
Windowsみたいなボタン配置にする
ウインドウの左上にはリサイズと閉じるボタンが表示されるのですが、twmのようなワイヤーフレームをマウスでドラッグしながらリサイズするという挙動になっています。Webブラウザやペイントツール等をよく使用する場合は、単に現在のウインドウサイズと最大化したウインドウを交互に切り替えるほうが便利だったりします。
このような場合には、ウインドウの左側に配置するボタンを定義することで対応できます。以下のように、 RightTitleButton
に設定した項目がウインドウの左側に(設定した順で)表示されます。この例では最大化ボタンと閉じるボタンが表示されます。
RightTitleButton ":xpm:resize" = f.fullzoom
RightTitleButton ":xpm:cross" = f.delete
アイコンマネージャの表示をトグルする
ウインドウを最小化すると、画面右上にある「アイコンマネージャ」にアイコン化された状態でウインドウが格納されます。画面全体を使用したい場合にアイコンマネージャも隠したいことがあり、その場合は f.hideiconmgr
と f.showiconmgr
を呼び出すことで表示をトグルできます。
以下の例では右クリックメニューにアイコンマネージャの表示・非表示を追加しています。
menu "NetBSD"
{
"NetBSD" f.title
...
" Hide Iconmgr" f.hideiconmgr
" Show Iconmgr" f.showiconmgr
...
}
ワークスペースの表示をトグルする
ctwmには仮想デスクトップ機能があり、ワークスペースマネージャでそれぞれの仮想デスクトップを切り替えることができます。慣れてくるとショートカットキーで仮想デスクトップを切り替えるようになり、必要な時だけワークスペースマネージャを表示したくなってきます。
このような場合には、 f.toggleworkspacemgr
を呼び出すことで表示・非表示を切り替えることができます。
(なぜかワークスペースマネージャーの場合は「(表示を)トグルする」という機能ひとつで示現されており、アイコンマネージャの場合と異なる感じですね...)
menu "NetBSD"
{
"NetBSD" f.title
...
" Toggle Workspacemgr" f.toggleworkspacemgr
...
}
デフォルト設定とのdiff
ここまで紹介してきた設定について、デフォルト設定との差分を示します。
$ diff -u /etc/X11/ctwm/system.ctwmrc ~/.ctwmrc
--- /etc/X11/ctwm/system.ctwmrc 2020-11-07 02:42:05.075695725 +0900
+++ /home/nbsd/.ctwmrc 2020-12-15 01:07:19.704196666 +0900
@@ -93,7 +93,7 @@
WindowRing
WarpRingOnScreen
-NoTitleHighlight
+#NoTitleHighlight
TitleButtonShadowDepth 1
TitleShadowDepth 1
@@ -104,7 +104,8 @@
FramePadding 0
LeftTitleButton ":xpm:dot" = f.menu "titleops"
-RightTitleButton ":xpm:resize" = f.resize
+RightTitleButton ":xpm:iconify" = f.iconify
+RightTitleButton ":xpm:resize" = f.fullzoom
RightTitleButton ":xpm:cross" = f.delete
BorderWidth 4
@@ -196,6 +197,10 @@
" Clock" !"xclock -digital &"
" XEyes" !"xeyes &"
"" f.separator
+ " Hide Iconmgr" f.hideiconmgr
+ " Show Iconmgr" f.showiconmgr
+ " Toggle Workspacemgr" f.toggleworkspacemgr
+ "" f.separator
" Applications" f.menu "appmenu"
"" f.separator
" Restart CTWM" f.twmrc
まとめ
ctwmをちょっと便利に使うための設定について紹介しました。ここでは紹介しきれませんでしたが、ショートカットキー等の設定やカラー設定等についても調べてみると面白そうです。