mikutter plugin

そもそも何故mikutterを使っているかという話から。

以前はKrile StarryEyes *1を使っていました。このクライアントは公式のCK/CSがtwitter側に無効化されているため、各ユーザがCK/CSを取って使うことが推奨されていました。私は自分のアカウントでCK/CSを取得し、ソースにも手を入れながら、ほそぼそとtwitterを使い、時にはkarno氏にpull-reqを送ることもありました。

例の凍結騒ぎの前後で、私が使っていたCK/CSのwrite performが禁止され、新たに作ることもできなくなったため、代わりのクライアントを探すことになりました。

ちょうどその頃、Windows10向けにWindows Subsystem for Linux(WSL)がリリースされ、Xを使うアプリケーションも動くという話を耳にした私は、WSL上でmikutterを動かすことにしました。日本語入力に若干難があるものの、意外と普通に使えたので、そのまま移行することにしました。

そんなわけでWSL上でmikutterを動かし、mikutter pluginを書いています。

cobodo / Repositories · GitHub

順不同で紹介していこうと思います。

NSFW系プラグイン

GitHub - cobodo/mikutter_subparts_nsfw: NSFWフラグが立っているModelに注意書きを追加します

GitHub - cobodo/mikutter_extract_nsfw: NSFWフラグが立っているModelだけを抽出するmikutterプラグイン

twittermastodonから受信したメッセージには、添付した画像や本文が、いわゆるNSFW*2であることを示すフラグが付いています。これを見て表示を追加するのが、 mikutter_subparts_nsfw プラグイン、NSFWフラグが立っているものを絞り込むのが、 mikutter_extract_nsfw プラグインです。

前者はフラグを可視化するだけのもので、職場のmikutterにこれを入れても特に何か得をするわけではありません。

後者は絞り込むので、抽出タブの条件でNOTと組み合せれば、NSFWフラグが立ったメッセージを一切表示しないようにすることが可能です。

メディア抽出プラグイン

GitHub - cobodo/mikutter_extract_media: 抽出タブの絞り込み条件に「メディアを含む」を追加するmikutterプラグイン

画像や動画等のメディアを含むメッセージを抽出する条件を追加するプラグインです。以前はtwitterからmediaであると通知されたもののみを対象としていましたが、現在はmikutterのPhoto filterを利用し、http://d250g2.com 等の画像とみなせるURLも抽出するようになっています。

投稿欄へURL追加

GitHub - cobodo/mikutter_append_url: 選択したstatusのURLを投稿欄に追加するmikutterプラグイン

選択したメッセージのURLを投稿欄へ文字列として追加するコマンドを提供するプラグインです。私はダブルクリックに割り当てています。 複数のメッセージをまとめて引用するメッセージを作る際に重宝します。後述の霊言プラグインとは違い、投稿欄に追加するだけで実際の投稿はしません。

justsize

GitHub - cobodo/mikutter_justsize: postboxに残り文字数ではなく現在の文字数を表示するmikutterプラグイン

twitterが複雑なアルゴリズムで280文字対応したり、mastodonが500文字制限だったりと、投稿欄の残り文字数を140からカウントダウンする意味は薄れてきています。そこで投稿欄の残り文字数表示を、単純に文字数をカウントして表示するだけのものに変更するプラグインです。

一括FavRTボタン

GitHub - cobodo/mikutter_favrt: 左下の変な緑のアイコンでfav&RTするやつ

各メッセージのユーザアイコン上には、左上に返信、右上にRT、右下にふぁぼのボタンがありますが、左下の緑のアイコンには何の動作も割り当てられていません。ここに、ふぁぼとRTを同時に行う機能を付けるプラグインです。

paplay

GitHub - cobodo/mikutter-paplay

mikutterは標準ではaplayコマンドを使ってALSAによるサウンド再生を行いますが、paplayコマンドを使ってpulseaudioによるサウンド再生を行うプラグインです。標準のalsaプラグインの、呼び出すコマンドとオプションを書き換えただけのものです。

WSLにはサウンドデバイスがなく、ALSAでサウンドを再生させることはできません。しかしWindows側でpulseaudioデーモンを常駐させ、WSL側のpulseaudioクライアントからTCPWindows側のpulseaudioデーモンにリクエストを送ることで、サウンドを再生することができます。

mikutterでpulseaudioを使ってサウンド再生させるプラグインとしては、GitHub - toshia/mikutter-pulseaudio: mikutterの効果音をPulseAudioを通して再生するがあります。しかしWSL環境では、このプラグインが利用するpacmdコマンドによる再生はどうやらできないようでした。しかしpaplayコマンドでは鳴るため、とりあえずこのプラグインを作った、という経緯があります。

WSL環境でもpacmdコマンドを使って音を鳴らせるようにするdefault.paやclient.confの設定がわかれば必要ないのですが、そちらを模索するのは断念しました。

mikutter Worldon

GitHub - cobodo/mikutter-worldon

mikutterでmastodonを使うプラグインです。今、最も力を入れています。

mikutterでmastodonを使うプラグインとしては、他にmikutter丼や、mikutodonがあります。

これらに対するWorldonの特徴は、以下のような感じです。

  • mikutter 3.6のworldに対応
  • mikutter 3.6のspellに対応
  • リストのストリーミング受信
  • 返信先や引用toot/tweetの展開表示およびスレッド表示対応
  • subparts-imageや、sub_parts_client等の表示に対応

mikutter 3.6では大きな変更がいろいろと入りました。worldは、twitter以外のサービスに対するアカウントの管理を統一的に行えるようにするものです。mikutodonもdevブランチでworldが使えるらしいので、Worldonが唯一というわけではありません。

spellは、複数のDiva Modelに対するアクションを統一的に扱える仕組みです。コマンドとは異なり、特定のModel間に固有の動作を書くのに適しています。mikutter 3.6では、投稿や返信はcompose spell、retweetはshare spell、ふぁぼはfavorite spellなど、spellを軸にして動作が記述されています。twitterとは異なるworldにおいても、spellを書くことで、投稿欄からの投稿や、返信・ふぁぼ・RTの各ボタンが効くようになります*3

mastodonのリスト機能はまだ登場して間もないため、対応しているクライアントは少ないですが、パラメータを少し変えるだけで対応できるので、実はホームタイムラインや連合タイムライン等と難易度は変わりません。

その他、Modelに必要な(最低限の)メソッドを実装していくことにより、他のプラグインと協調して動かせることを目指しています。

とはいえ、比較的大規模なプラグインなので、完成度はお察しというところです。チャレンジャーな方のみどうぞ。

霊言プラグイン

GitHub - cobodo/mikutter-reigen

霊言コマンドを追加するプラグインです。twittermastodon(Worldon)プラグインを両方利用し、相互に引用メッセージを送ります。

まとめ

霊言プラグインジョークで作りましたが、ほかのものは(一応)実用的なものを目指したつもりです。

pull requestはいつでもお待ちしています。

*1:現在は残念ながら開発終了

*2:Not Suitable For WorkやNot Safe For Workの略

*3:ふぁぼボタンに関して、これは実は間違っていて、message.favorite メソッドが呼ばれるので、Worldonではこのメソッドからspellを呼んでいます。