提案 #1487
完了
不必要な gtk plugin への依存関係を削除したい
Shibafu Midorino さんが3年以上前に追加.
3年以上前に更新.
説明
gtk (場合によってはgui) が無い環境でもそのまま使える、または使いたいプラグインはそれなりにありそうですが、あまり整理されていないように思います。
mastodon プラグインみたいに、依存がなければ修正なしに daemon 化して使えたのに… みたいなものが他にもないか?というのが動機です。
消せそうなら依存を消す作業をやるつもりです。
gtk プラグインを依存関係に入れているプラグイン¶
とりあえず30分くらいかけて眺めた結果。
対応済 |
プラグイン |
Gtk moduleへの参照 |
依存を消せそうか |
感想 |
✓ |
activity |
✓ |
✓ |
defactivityはGUIに関係なく呼び出しが通ってほしい。tabは別プラグインで良さそうだし、簡単に分離できそう |
|
aspectframe |
|
✓ |
なんでやろなあ(すっとぼけ) |
|
bugreport |
✓ |
|
|
|
console |
✓ |
|
|
✓ |
extract |
✓ |
✓ |
tab周りはGTK以外のToolkitにも流用できそうで、設定UIは別プラグイン化したいかも |
|
intent_selector |
✓ |
|
|
✓ |
mastodon |
✓ |
|
簡単には整理できないですが、分けたい…… |
|
modelviewer |
✓ |
|
|
✓ |
openimg |
✓ |
|
|
✓ |
proxy |
|
✓ |
まったく依存してなくてビビった |
|
quickstep |
✓ |
|
|
✓ |
quoted_message |
✓ |
✓ |
Gtk::Clipboard 依存だけなので簡単そう |
|
search |
|
✓ |
|
|
settings |
✓ |
|
DSLは使いたいが... |
|
shortcutkey |
✓ |
|
|
|
skin_setting_gtk |
✓ |
|
|
少なくとも書いてる範囲は賛成です。
大抵のプラグインは、Gtk依存部分を別プラグインにして、元プラグインにも依存させる形で切り出せるはずです(DSLを提供するsettingと、それをGtkで表現するsetting_gtk)。
settings はnativewidget DSLメソッドがあるので大変そう。何年もかけてちょっとずつ整理していますが、今やろうとするとどれくらい難しいのかはわからないです。
quickstep は、意図的にGtkに依存させています。quickstepはイベントやフィルタを用いたAPI定義を提供することが本質で、そのUIをGtkで実装したものに過ぎません。極端な話ほかのUIツールキットでGUIを再実装するなら、そのUIツールキット用のquickstepを実装します。
aspectframe, mastodon は、複数の機能が単一のプラグインにまとまってしまっているので、機能単位ごとにプラグイン化していく戦略が良さそうです。
(もちろんこのチケットではGtk依存機能の切り出しだけで良い)
- 担当者 を Shibafu Midorino にセット
1回マークアップ失敗して全てが大きな文字になった…
activity¶
activity, activity_setting, activity_gtk に分割
extract¶
extract, extract_gtk に分割
mastodon¶
mastodon, mastodon_custom_post, mastodon_gtk, mastodon_setting に分割
openimg¶
openimg, openimg_gtk に分割
proxy¶
gtkへの依存関係を削除
quoted_message¶
clipboard_write event で置き換え、gtkへの依存関係を削除
photo_support は、依存関係としてはgtk pluginとの関係を持っていませんが、実装上はgdk_pixbuf2 gemに依存しており実質的にgtkへの依存と見做せる状態です。
gemのAPIを使っている場所は1行だけなんですが、こんな風に決め打ってしまっても十分そうだと考えています。意見いただけませんか?
拡張子は GitHubのヘルプページ から拾って決め打ちました。
もう大したことないのでインラインにしています。
それによって無意味になった定数のほうは……保守的にするならこうですが、多分誰も使ってないんじゃないかなあという気も。
diff --git a/plugin/photo_support/photo_support.rb b/plugin/photo_support/photo_support.rb
index 7cacd2b6..8489082b 100644
--- a/plugin/photo_support/photo_support.rb
+++ b/plugin/photo_support/photo_support.rb
@@ -5,9 +5,11 @@ require 'httpclient'
require 'json'
module Plugin::PhotoSupport
- SUPPORTED_IMAGE_FORMATS = GdkPixbuf::Pixbuf.formats.flat_map{|f| f.extensions }.freeze
+ SUPPORTED_IMAGE_FORMATS = %w[jpeg jpg png gif].freeze
+ deprecate_constant :SUPPORTED_IMAGE_FORMATS
+
INSTAGRAM_PATTERN = %r{\Ahttps?://(?:instagr\.am|(?:www\.)?instagram\.com)/p/([a-zA-Z0-9_\-]+)/}
- GITHUB_IMAGE_PATTERN = %r<\Ahttps://github\.com/(\w+/\w+)/blob/(.*\.(?:#{SUPPORTED_IMAGE_FORMATS.join('|')}))\z>
+ GITHUB_IMAGE_PATTERN = %r<\Ahttps://github\.com/(\w+/\w+)/blob/(.*\.(?:jpe?g|png|gif))\z>
YOUTUBE_PATTERN = %r<\Ahttps?://(?:www\.youtube\.com/watch\?v=|youtu\.be/)(\w+)>
NICOVIDEO_PATTERN = %r<\Ahttps?://(?:(?:www|sp)\.nicovideo\.jp/watch|nico\.ms)/([sn][mo][1-9]\d*)>
SUPPORTED_IMAGE_FORMATS
の扱いは、コメントに書いてくれたパッチでOKです。多分誰も使ってないですが、消すのはメジャーバージョンアップのときにしたいです。
とりあえず現時点までの作業成果で、Mastodonをsubscribeするmikutterdをだいぶ簡単に作れるくらいまで進みました。
あと残ってるものはこんな感じかと。
リストアップできてないものも考慮すると、この作業って #1380 と被ってきますね。
やれそう/やりたい¶
一応やれそうだが、あまり重要でない¶
- console
- intent_selector
- modelviewer
- quickstep
- search
- skin_setting_gtk
- ステータス を 実装待ち から レビュー待ち に変更
- ブランチ を topic/1487-remove-gtk-depend にセット
一旦ここまでで作業を切って、レビューをお願いしたいと思います。変更前と同様に動けばオッケーですかね。
- 関連している 提案 #1490: settingsプラグインのGtk依存をやめる を追加
他の形式にエクスポート: Atom
PDF