Project

General

Profile

Actions

提案 #1578

open

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

Added by Shibafu Midorino 9 months ago. Updated 9 months ago.

Status:
実装待ち
Priority:
通常
Target version:
-
プラグイン名:
ブランチ:

Description

動機

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の中から役割の近いものを継承元として選んでもらうことで、ユーザーの設定がなるべく尊重されるようにしてもらうのが理想です。


Related issues

Related to 提案 #1581: Color Model分類待ちtoshi_a 初音Actions
Actions #1

Updated by toshi_a 初音 9 months ago

  • Status changed from 分類待ち to 実装待ち
Actions #2

Updated by toshi_a 初音 9 months ago

Actions

Also available in: Atom PDF