プロジェクト

全般

プロフィール

提案 #1578

未完了

Emacsのfaceのように継承構造を持ったフォント・配色の設定機能が欲しい

Shibafu Midorino さんがほぼ3年前に追加. ほぼ3年前に更新.

ステータス:
実装待ち
優先度:
通常
対象バージョン:
-
プラグイン名:
ブランチ:

説明

動機

Mastodon, Twitter, 他…といったように多くのWorldが存在すると、フォントや配色の設定をいくつも変更しなければならず、面倒です。
何かしら、まとめて設定できる仕組みがあってほしい。

提案

Emacsの Face のように、継承構造を持ったスタイル設定を導入したいです。
説明上、このスタイル設定の定義情報について(Emacsから借用して) "Face" と呼ぶことにします。

さて、mikutterに当てはめて考えると、次のようなスタイル設定のツリーができるかなと想像しています。

* Default
`-- Message
    |-- Mastodon Status
    `-- Twitter Tweet

このツリーは、クラスベースオブジェクト指向プログラミングの継承構造に近い振る舞いをします。
たとえばあるノードのフォントファミリー属性を得ようとした時、そのノードにおいて結果が未定義であれば親ノードに再帰的に問い合わせます。

また、ユーザーは設定を通して、各ノードに対して属性を上書きすることができます。
Default faceにフォントを設定すれば、あらゆるトゥートやツイートのフォントが一括で変更されます。
トゥートだけ色を変えたいのであれば、トゥートの設定だけを変える……ということもできますね。

Face Layer Font Color
Default Default (Faceごとの既定値) Sans 10 #000000
User (ユーザー設定) Noto Sans CJK JP 12
Message Default
User
Mastodon Status Default
User #303030
表示に使用される値 Noto Sans CJK JP 12 #303030

Faceの定義はプラグインのロードフェーズで登録されたDiva Modelからは自動生成を試みたいですね。
タイムライン表示対象に関しては、プラグイン側に追加の手間をかけたくないです。

一方、Subpartsを追加するようなプラグインに関しては、自分で新しいFaceを作成することになると思います。
この際、コアで提供するFaceの中から役割の近いものを継承元として選んでもらうことで、ユーザーの設定がなるべく尊重されるようにしてもらうのが理想です。


関連するチケット

関連している 提案 #1581: Color Model分類待ちtoshi_a 初音操作

toshi_a 初音 さんがほぼ3年前に更新

  • ステータス分類待ち から 実装待ち に変更

toshi_a 初音 さんがほぼ3年前に更新

他の形式にエクスポート: Atom PDF