ついにきた!Hyprland v0.55で設定ファイルがLuaに移行!
Hyprland 0.55 announced the switch to Lua for its config files
Hyprland 0.55 announced the switch to Lua for its config files
Hyprlandはバージョン0.55において、設定ファイルの記述言語をLuaへ移行することを正式に発表しました。これにより、より柔軟で強力な設定管理が可能になります。
良い変更になるかもしれないけど、設定が壊れ続けるからHyprlandから離れちゃったよ。素晴らしいウィンドウマネージャーなのは間違いないから、安定してきたら戻るつもり。今はi3を使ってる。
今0.56を使ってたけど、変更があったなんて気づかなかった。ネット上にサンプルコードが出回るまで待って、その後はLLMに今の設定をLuaに変換させようかなと思ってる。
今さら?もう0.56が出てるよ。 https://hypr.land/news/update56/
最近、誰かのGradle Groovyのひどいコードを修正するのに時間を浪費して以来、「設定ファイルにプログラミング言語を使う」ことに対してかなり否定的な意見を持つようになった。Nixがすぐにイライラさせられる代物になるのは言うまでもないし。聞きたいんだけど、なんでわざわざ設定のためにチューリング完全な言語を求めるの?自分はSwayを使ってるけど、あれは設定の自由度が高いし、複雑なロジックが必要なときはRustで書いたプログラムを呼び出せばいいだけだからね。
Lua関連の話だけど、一つのRustプロジェクト内でLua 5.1から5.5までを扱えるようにしたプロジェクトをメンテしてる[1]。mluaや標準のC Luaよりこれを使う主な理由は、WASMや一般的なクロスコンパイルと相性がいいから、あるいは複数の異なるLuaバージョンをサポートしたい場合だね。HyprlandはC++ベースだし直接的なユースケースではないかもしれないけど、Luaに関心がある人なら面白いかもと思って。
だから自分はqtileが好きなんだ。全部Pythonで書かれてて、Pythonで何でも変更できる。どんなモジュールでもインポートできるし、何でもインストール可能。フォークせずに既存のレイアウトを拡張して面白くてカスタマイズされたWMレイアウトを作れるし、全部Pythonで完結して、WMの中でどんなPythonコードも実行できる。
それって「設定の振り子」と自分が呼んでいるものの一部だね。シンプルな設定→(複雑なことがしたくなる)→オーバーライド機能を追加→(さらに柔軟性が欲しくなる)→チューリング完全な言語を追加→(手に負えなくなり、バージョン管理外のスパゲッティコードが大量発生。リセットの時期が来る)→「シンプルな設定」へ戻る。まあいいんじゃないかな。間違ってるとは言わないし。自分もプロジェクトで何度もこのサイクルを経験してきた。見方を変えれば、これらの問題が発生するくらい長くプロジェクトが使われているのは幸せなことだよ。前向きに考えるなら、これは螺旋階段みたいなもの。次の「シンプルな設定」は、最初よりも少しだけマシなものになるはず。
Lispこそ設定ファイルに最適な言語ファミリーだと思う。ホモアイコニックだから設定の生成もシームレスだし、S式なら人間にもマシンにも読みやすい。
Hyprlandが設定ファイルでレイアウト定義できるのはいいけど、自分はniriのアプローチが好きだな。KDL(確立されたドキュメント/設定言語)を使っていて、ファイルのインポートといった便利な機能が少しだけ拡張されてる。例えば自分の設定はこれ:https://github.com/nickjj/dotfriedrice/blob/master/.config/niri/config.kdl 。結果として、予備知識がなくても自然に読める設定ファイルになるし、何か調べたいときも誰かが作った独自パターンじゃなくて公式ドキュメントにあるって確信できる。「見たままが得られる」アプローチには一定の安心感と安定感があるよね。niriの設定で変数や条件分岐、関数やループが必要だと感じたことは一度もないよ。
これが加わることで、HyprlandがPinnacleやAwesomeとどう比較されるようになるのか気になる。今のところ、独自のデスクトップ環境を作り込む上でAwesome以上のものには出会えていないんだよね。