メインコンテンツへスキップ

意外な組み合わせ Prologで書かれたX11ウィンドウマネージャーPlwm

·2 分
2025/05 Prolog ウィンドウマネージャー X11 プログラミング 開発

意外な組み合わせ Prologで書かれたX11ウィンドウマネージャーPlwm

引用元:https://news.ycombinator.com/item?id=44089424

raron 2025/05/25 22:43:53

ねえ,誰か「チュートリアルProlog」から「ガチのプロジェクトProlog」にどう移行すればいいか,教えてくれる? チュートリアルと全然違うんだよね.Prologは面白そうだけど,おもちゃレベル以上のことやろうとすると,無限再帰とか無理ゲーにぶつかるんだよ.

davidcox143 2025/05/26 01:58:07

これ,“ガチの”Prologのための最高の資料の一つだよ:https://www.metalevel.at/prolog 彼のYouTube動画もマジでヤバいくらい良いから見てみて.

ioma8 2025/05/26 08:08:20

うん,俺もそう思う.Markus Triskaは今一番良いPrologの資料だよ.超分かりやすいし,今風の書き方etc.使ってるんだよね.

sidkshatriya 2025/05/26 07:23:59

俺もそれに同意だな.マジで高品質な動画だよ.説明の丁寧さがハンパない.Prolog使うつもりがなくても,聞いてみる価値はあるよ.

i80and 2025/05/26 04:54:06

論理が中心の動詞や名詞を持つ言語が,どうして「数学じゃない」って言えんのか,ちょっと気になるんだよね.

arnsholt 2025/05/26 06:56:53

多くの人はね,数学って言うと連続数学のことだって思ってるんだ.職場で,同僚はほぼ統計家か保険数理士なんだけど,大学で数学は微積分1だけだったって冗談で言うことがあるよ.もちろん,もっと数学はやってるんだけど,それは全部CS系のやつで,論理とかグラフや木みたいな離散構造なんだ.連続系のやつとは全然違う世界なんだよね.

kqr 2025/05/26 07:17:07

こういう文化の違いは,トウモロコシの食べ方でさえ決まるんだぜ:http://bentilly.blogspot.com/2010/08/analysis-vs-algebra-pre…(弱い証拠だし,もっと強い研究で否定されてるんだけどね.)

anthk 2025/05/27 04:43:05

離散数学って,微積分で出てくる連続曲線よりずっと分かりやすいよね.

actionfromafar 2025/05/25 23:25:14

でもまあ、ある種の数学だよね。

eikenberry 2025/05/25 21:15:05

WaylandのコンポジターAPIをプロトコルに置き換えるウィンドウマネージャーサービスができたらいいな。そうすれば、Waylandやコンポジターライブラリなしで、どんな言語でもWMが作れるようになるからさ。

mackeye 2025/05/26 04:47:36

riverを見てごらんよ、まさに今こんな感じのことやってるみたいだよ!

eikenberry 2025/05/26 22:37:14

すごいニュースだね!riverのことは知ってたけど、こんな機能(プロトコル化)を計画してるなんて知らなかったよ。タイリング専用じゃなさそうだし、まさに求めてたものになりそう。ありがとう!

pyinstallwoes 2025/05/25 21:53:40

APIじゃなくてプロトコルなものがもっと増えるといいのにね。

linux2647 2025/05/25 22:27:13

違いを説明してもらえる?

fnordpiglet 2025/05/26 00:39:26

プロトコルはプリミティブと相互作用を定義し、APIは規定的で特定のインターフェースを持つ傾向がある。IETF RFCのSMTPとメールAPIの違いを考えると分かりやすいよ。APIはテストできるけど、プロトコルは仕様への準拠を確認する感じ。RPCやOOPと関係ないプロトコルもあるよ。

spicybright 2025/05/25 22:39:21

詳しいわけじゃないけど、プロトコルは特定のフォーマットで別プロセスとやり取りするものだよ。既存を置き換えるより強力だと思うな。18行のPythonで書かれたX11 WMが良い例だよ。どんな言語でも既存コードと通信できるのがプロトコルの強みだね。

xorbax 2025/05/26 04:06:14

>私のお気に入りの例は、約18行のPythonで実装されたX11ウィンドウマネージャーです。
あの、そのプロジェクトがどこにあるか知ってますか?ほとんどの人にとって例としてかなり分かりやすそうです。

alpaca128 2025/05/26 08:41:51

あのPythonプロジェクトのことはよく分からないんだけどさ、何年も前に数百行のCで書かれたこの超ミニマルなWMがすごく役に立ったんだ: https://github.com/dylanaraps/sowm
dwmとかより断然理解しやすかったね。

ChanderG 2025/05/26 10:32:21

今年の始めにCで800行くらいの自作X11 WM [1] 作ったよ。長年dwm(4000行)使ってて書きたいと思ってて、steveWM [2] とTinyWM [3] の超小さいのがきっかけになったんだ。
[1] - https://github.com/ChanderG/cellwm
[2] - https://github.com/stodd1031/steveWM
[3] - https://github.com/mackstann/tinywm

vidarh 2025/05/26 11:12:46

TinyWMは僕のRubyのWMの出発点でもあったよ。どれだけちょっとあれば始められるかってことを本当に痛感させてくれるんだ。

spicybright 2025/05/27 21:13:59

もちろん!
https://github.com/mackstann/tinywm
ずいぶん前に一度動かしたことあるけど、僕には完璧に動いたよ。

packetlost 2025/05/25 23:32:15

どっちもあいまいだけど、GP(最初の投稿者)が言いたかったのは、FFIじゃなくてソケットみたいなのを使ってインターフェースしたいってことだと思うんだ。
この文脈での’プロトコル’には、Cのデータモデルとか呼び出し規約に頼れないから、追加のデータ記述レイヤーが必要になるんだよ。

rewgs 2025/05/26 05:36:31

見方はいろいろあるけど:
ー プロトコルは記述的、APIは指示的
ー プロトコルは実装されるもの、APIは実装するもの

neuroelectron 2025/05/25 23:02:09

プロトコルはSubwayの列みたいで、APIはバー&レストランみたいな感じだよ。

anthk 2025/05/27 05:00:19

プロトコル = データ構造とかコマンド含めて、チャンネル全体を定義するもの.
API = どうやって接続するか.

PeakKS 2025/05/25 23:46:03

何だって? Waylandはプロトコルだよ.APIじゃない.

quotemstr 2025/05/26 00:36:04

OPはcompositorとwindow managerを分離してprotocolで話させたいみたい。全然できるんだけど、今のWayland protocolとかにはない(たしか)。shell protocolにその片鱗があるかな?

eikenberry 2025/05/26 01:08:55

もっと高レベルで、window manager特化のprotocolのことだよ。低レベルな操作は全部飛ばしてさ。

major505 2025/05/26 12:10:55

何に一番驚くか分かんないよ。Prologでwindow managerを書いたって事実か、そもそも誰かがPrologを使ってるって事実か。

もっとコメントを表示(1)
DaiPlusPlus 2025/05/26 14:09:19

>そもそも誰かがPrologを使ってるって事実か。
これ見てよ: [URL]。面白いPrologの事実: 96〜00年、Windows NT 4の一部としてPrologプログラムが数千万人に配布されてたんだ: [URL]。今Prolog使うかって?今日NT4使ってる人がいるんだから…レトロコンピューティングとかノスタルジー的に楽しむなら、昔のラバランプを今見るのと一緒だよ。

leephillips 2025/05/25 18:43:00

すごくいいね。dwmに慣れてるなら自然に使えるはず。ただし、僕みたいにdwmのtagsをworkspaces以上(別の使い方)で使ってるなら話は別だけどね。作者はそうじゃないからtagsじゃなくてworkspacesとして実装したんだ。だから、これ(Plwm)は僕のdwmの代わりにはならないな。

ninjin 2025/05/26 04:40:47

tagsって、一度分かると本当に素晴らしいアイデアだよね。でも、それに慣れてうまく使えるようになるまで1年くらいかかったのは認めざるを得ないな。

B1FF_PSUVM 2025/05/25 19:45:47

なんか、Erlangだらけだった時のHNのトップページ思い出したな。

pona-a 2025/05/25 19:49:32

面白い豆知識: Erlang interpreterの最初のバージョンはPrologで書かれたんだって。

smikhanov 2025/05/25 22:37:01

ソースコード見てみたけど、めっちゃコンパクトだったよ。すげえな。

Y-bar 2025/05/26 09:07:04

ただコンパクトなだけじゃなくて、すごく分かりやすいコメントがいっぱい書いてあるね。いいね!

echelon 2025/05/25 22:47:56

今まで見たPrologと全然違う感じだね。論理のための宣言型言語を、ウィンドウマネージャーっていう実際アプリのためにひっくり返して使ってるなんて、マジすごいわ。ブラボー!

summarity 2025/05/26 00:52:10

ウィンドウ管理とか、制約って一般的に論理プログラミングにめっちゃ合うよね。

signa11 2025/05/26 01:48:21

X11向けだと、Schemeで書かれたのがあって、ちゃんと制約ソルバー使ってレイアウトしてたやつがあったよ。

YeGoblynQueenne 2025/05/25 19:57:15

うわー、これ試さなきゃ。ドキュメントもいっぱいあるんだ!最高!

5- 2025/05/26 11:49:09

これすごいね。Prolog詳しくないんだけど、これってPrologの論理機能使ってるの?それとも”関数的”な部分だけ?見た感じ’det’とか’semidet’ばっかで、論理的な使い方はしてなさそうに見えるんだけど、何か見落としてるかな?Prologは関数型としてもいいけど、論理機能をもっと使ってて欲しかったな。

mbrock 2025/05/26 15:03:52

実は俺も去年PrologでX11のWM作り始めたんだ。他のことにかまけて放置しちゃったけど。最初は有理制約使ってBSP分割定義するモジュールからだった。そうすれば、有効なペインレイアウトを簡単に変えられるかなと思って。

Jerry2 2025/05/26 16:01:50

JSとかCSSで実装されてるWMってあるのかな?それか少なくともJS/CSSを使えるやつとか?Web技術でウィンドウ管理したり装飾したりできたら最高だね。

bolangi 2025/05/26 04:31:41

言語の選択はさておき、plwmに似てるWMとか、何かインスピレーションになったWMとかあるのか気になるな。

jimmaswell 2025/05/26 04:53:10

全部ライブラリ入れてGentooでコンパイルしてみたんだけど、画面真っ暗でマウスカーソルしか出ないや。

johnisgood 2025/05/26 06:47:29

それってたいていのタイリングウィンドウマネージャーと同じじゃん。キーバインド見てみ?ターミナルか何か起動してみなよ。

jimmaswell 2025/05/26 18:26:44

キーバインド(あと README.md も全部)読んだけど、”launch”とかそういうコマンド期待してたのに何もなかったんだよね。”Increase number of master windows”ってのが一番有望そうだったけど何も起きなかった。唯一反応したコマンドは super+shift+q で終了するやつだけ。Xorg とか plwm のログにも異常はなかったよ。

mhd 2025/05/25 20:42:27

前からあるよ。
https://en.wikipedia.org/wiki/Scwm
あと、”GWM” ってのもあった。独自のlisp方言”WOOL”に基づいてて、少なくとも90年代初頭からあったみたい。
もっとメジャーなところだと、sawfish(elispっぽい何かを使ってたはず)とか stumpwm (Common Lisp) がいたね。

anthk 2025/05/27 05:03:06

Sawfish(一時 Gnome の公式VMだった)は Lisp のプラグインがあったね(それとも本体も Lisp で書かれてたっけ?)

pona-a 2025/05/25 20:37:18

Guile Scheme で書かれたのがこれだよ。
https://wingolog.org/archives/2008/07/31/introducing-griddy

igorhvr 2025/05/25 22:18:29

これは Lisp でカスタマイズできて、全体的にかなりイケてるよ。https://sawfish.tuxfamily.org/
もう何年も毎日楽しく使ってるんだ。:-)

tmtvl 2025/05/25 20:40:58

もうあるよ。
https://github.com/mwitmer/guile-wm
他の Scheme でも存在するかもしれないけど、FFI が Scheme 間で標準化されてないから、実装に依存しないのはなさそうかな。

DonHopkins 2025/05/25 20:47:52

1991年頃に作ったNeWSベースのX11ウィンドウマネージャーだよ。全部PostScriptで書いてて、パイメニューとかタブ付きウィンドウとかあったんだ。仮想デスクトップとかもあって、これらがシームレスに動いたんだ。リンク色々あるから見てね。僕はICCCMはマジで技術的な大災害だと思ってるよ。Jamie Zawinskiも「マッシュポテトで本棚作るみたい」って言ってる(笑)。X10時代のWMの話もあるよ。

DonHopkins 2025/05/26 15:55:38

見てくれてサンキュー!Sunは採用しなかったけど書くのは楽しかったな。ICCCMとか関連リンク、別のNeWSコード例も見てね。OWMにはXCalcのボタンを全部個別の窓として扱って、リサイズとかアイコン化できるようにするイースターエッグを仕込んでたんだ(コード付き)。XCalcはリサイズするとグリッドがずれて壊れたからね(笑)。あれはAthena Widgetがひどかった。僕らはそれ見て爆笑したけど、直してあげたかったんだ。ICCCM WMでもできなくはないけど、僕らのNeWS WMは自動でやってくれたんだよ。

anthk 2025/05/27 05:06:27

Xaw3Dってxcalcのあのジオメトリの問題、解決したっけ?

rclkrtrzckr 2025/05/25 20:12:37

”.pl”って Perl でよく使う拡張子じゃない?まさか Perl で書かれた Prolog インタプリタとか?(regex で)

ajdude 2025/05/25 20:21:19

Prolog の方が Perl より10年以上前から ”.pl” 使ってたんだよ。

tikhonj 2025/05/25 21:07:15

両方で使われてるから、ファイル拡張子だけで何の言語か推測するツールとかは混乱しちゃうよね。

jimjimjim 2025/05/25 20:23:55

Prolog は Perl より古いし、ファイル拡張子に「これはうちの!」って独占権主張する必要もないでしょ。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。