- 1. 概要
- 2. 特徴・構文
- 3. 参考サイト
1. 概要
またぞろ、新しい形式が出てきたよ。
「leftwm」をカスタマイズしようとしたときに、コンフィグレーションファイルの形式が「.toml」から「.ron」になっていたのです。
2. 特徴・構文
以下、すべて「Gemini」伍長からの受け売りです。
RON (Rusty Object Notation) とは?
RON(Rusty Object Notation)は、その名の通り「Rust言語のデータ構造をそのまま書き出せるように設計されたオブジェクト表記法」です。
JavaScriptにおける JSON(JavaScript Object Notation)と全く同じ立ち位置のものを、Rust向けに作ったものだとイメージしていただくと非常に分かりやすいかと思います。
JSON ➔ JavaScriptのオブジェクト構文がベース
RON ➔ Rustの構造体(Struct)や列挙型(Enum)の構文がベース
なぜ TOML から RON に変わったのか?
LeftWMが設定ファイルを移行した最大の理由は、「Rustで書かれたコード(内部処理)と、設定ファイル(テキスト)の親和性が極めて高いから」です。
1. 強力な型定義とEnum(列挙型)のサポート
タイル型WMでは、「モディファイアキー(Mod4、Controlなど)」や「レイアウト(EvenHorizontal、MainAndVertStackなど)」といった、あらかじめ決められた選択肢(Enum)を多用します。
TOMLやJSONではこれらを単なる「文字列」として扱うため、タイポがあっても読み込むまで気づけません。しかしRONであれば、RustのEnum構造そのままの形で厳密に定義・パースできるため、設定のバグを劇的に減らせます。
2. 開発効率の向上(シリアライズの容易さ)
LeftWMの開発者目線で見ると、Rustのプログラム内部で持っている複雑なウィンドウ配置の設定データ構造を、変換処理(パッサー)をほとんど挟むことなく、そのまま丸ごとテキストファイルとして保存・読み込みができるため、コードが非常にシンプルになります。
RON の書き方の特徴(JSON/TOMLとの比較)
RONはJSONに似ていますが、Rustに馴染みのある方なら一目でピンとくる、以下のような特徴を持っています。
マップ(連想配列)のキーにクォーテーション(")がいらない
行末のカンマ(,)を省略せず、最後の要素にもカンマを付ける(Rustの慣例)
コメント(// や /* */)が標準で使える(JSONでは使えないので大きなメリットです)
実際の config.ron の記述例(一部)
// LeftWMの現在の設定ファイルのイメージ
Config(
modkey: "Mod4",
mousekey: "Mod4",
workspaces: [],
layouts: [
MainAndVertStack,
EvenHorizontal,
EvenVertical,
],
// カンマ区切りのリスト構造が直感的
keybind: [
(command: Execute, value: "alacritty", modifier: ["Mod4"], key: "Return"),
(command: CloseWindow, modifier: ["Mod4", "Shift"], key: "c"),
],
)
このように、全体が大きな構造体 Config(...) のようになっており、その中にキーと値を流し込んでいくスタイルになります。
最初はTOMLに比べて括弧( ( や [ )が多くて少し戸惑うかもしれませんが、「Rustの文法に準拠した、コメントが書ける厳密なJSON」と捉えていただければ、構造の把握は容易です。
3. 参考サイト
本ページは、「Gemini」伍長を参考にさせていただきました。
|
|