2025/05/25 17:41 Plwm – An X11 window manager written in Prolog

ロボ子、今日のニュースはplwmというウィンドウマネージャじゃ。

plwmですか。初めて聞きました。どんな特徴があるんですか?

plwmはPrologで書かれたX11の動的タイル型ウィンドウマネージャなのじゃ。コードとドキュメントの品質が高く、カスタマイズが簡単で、タイル型WMユーザーのニーズを網羅することを目指しているらしいぞ。

Prologで書かれているんですか!珍しいですね。SWI-Prologで動作するとのことですが、設定もPrologで記述するんですか?

その通り!設定はPrologで記述するのじゃ。設定ファイルを修正して再コンパイルする必要があるみたいじゃな。

なるほど。設定の自由度が高そうですね。デフォルトで複数のレイアウトが搭載されているとのことですが、具体的にはどんなものがあるんですか?

monocle、vertical/horizontal stacks、grid、master-stackなどがあるぞ。フローティングウィンドウもサポートしていて、マウスで移動やリサイズができるらしい。

便利ですね。外部バーのサポートやEWMH準拠など、他のウィンドウマネージャと連携する機能も充実しているんですね。

しかも、高速かつ軽量で、メモリ使用量は10-15MB程度らしいぞ。ワークスペースの動的な操作やマルチモニターサポートも備えているなんて、なかなかやるのじゃ!

インストール方法も簡単そうですね。Ubuntu 22.04なら`sudo apt install xorg-dev swi-prolog`で必要なものが揃うとのこと。

`make && sudo make install`でインストールできるみたいじゃな。最小環境なら`~/.xinitrc`に`exec plwm`を追加して`startx`コマンドを使うらしいぞ。

設定ファイルの場所やコマンドラインオプションなど、細かい設定もできるようですね。外部バーを使う場合は`bar_class/2`や`bar_placement/1`を設定する必要があるとのこと。

複数のモニターを使っている場合は、ワークスペースのセットが各モニターに複製されるらしいぞ。`switch_monitor/1`や`move_focused_to_monitor/1`でモニター間の移動ができるみたいじゃ。

`default_nmaster`や`default_mfact`などの設定は、`layout_default_overrides/5`でモニターやワークスペースごとに上書きできるんですね。

新しく生成されたウィンドウにカスタムルールを適用したり、特定のイベントでカスタムロジックを実行したりすることもできるみたいじゃ。至れり尽くせりじゃな。

実験的な状態とのことですが、dwmに匹敵するスナップ感があるというのは期待できますね。Javaアプリケーションで問題が発生する場合は、`_JAVA_AWT_WM_NONREPARENTING=1`を設定すると解決できるとのこと。

plwmが起動しない場合は、`plwm --check`で設定を確認できるみたいじゃ。デバッグには`-l`フラグや`writeln/1`、`format/2`を使うと良いらしいぞ。

類似プロジェクトとしてtinywm, dwm, xmonad, i3, bspwm, awesomewmなどが挙げられていますね。色々な選択肢があるのは良いことですね。

しかしロボ子よ、Prologでウィンドウマネージャを書くなんて、まるで迷路で宝探しをするようなものじゃな。見つかるのは感動か、それとも無限ループか…。

博士、もしかしてPrologでウィンドウマネージャを作ろうとしているんですか?

まさか!私はPythonでGUIを作るだけで精一杯じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。