2020年9月22日火曜日

Thunderbird 78で消されたヘッダビューのボタンを復活させてみました (Message Header Toolbar Customize 2.0.6)

Message Header Toolbar Customize 2.0.6を公開しました。

予定にはなかったのですが、タイトルの通り、新機能が少しあります。


ツールバーボタンの追加

Thunderbird 78で、スレッド、タグ、形式を指定して転送ボタンが消されてしまったので、再現してみました。個人的には、使用頻度はそれほど高くないけど、ないならないでちょっと寂しいかなというボタンたちです。


Thunderbird 68と同じ動きになるように作っています。上記の例は「アイコンの横にテキスト」で表示していますが、もちろん、他のボタンと同じようにアイコンのみの設定にもできます。

転送ボタンは、メニューから、本文として転送するか、添付ファイルとして転送するかを選べるようになっています。ボタン部分を押すと、Thunderbirdのオプションで設定している方式で転送します。これを使うのであれば、もとの「転送」ボタンは非表示にしてしまっていいかなと思います。同じこともできるので。

なお、これらのボタンはデフォルトでは表示されません。カスタマイズウィンドウを開くと、以下のようにリストの一番下で「非表示」となっているので、表示に切り替えてください。必要に応じて表示順も変更してください。
 
 
注意点:
  • 今回追加した転送ボタンは、もとからある転送ボタンと区別するために、このリスト中では「形式を指定して転送」と表示されています。ツールバーボタンでは「転送」になっていて、表示が違うので注意してください。
  • メッセージウィンドウ(別ウィンドウで開いたとき)にも「スレッド」がありますが、表示設定にしていてもでてきません。このウィンドウではタブでスレッドが開けないためです。Thunderbird 68でもツールバーには置けるけど表示されない動作だったので、特に修正しなくてもいいかなとそのままにしています。


カスタマイズウィンドウで複数選択

もう一つの追加機能として、表示順のリストのところで複数選択できるようにしました。Ctrl+クリックで個別に選択、Shift+クリックでまとめて選択できます。複数選択すると、移動と表示/非表示の切り替えがまとめてできます。表示/非表示は、選択中の先頭の項目に合わせてまとめて変更されます。

例えば、以下の状態で表示ボタンを押すと、3つまとめて表示設定に変更できます。



その他こまごま
  • メッセージウィンドウのカスタマイズの時に、表示を選ぶリストがメッセンジャーウィンドウ(メインウィンドウ)の設定で初期化されてしまっていたのを修正しました。カスタマイズを開いたときに、現在の表示とあっていなかっただけで、設定変更はもとから問題ありません。
  • 各種ボタンを使えないときは無効化するようにしました。(例:先頭の項目を選択しているときは、上へボタンを無効化)

2020年9月19日土曜日

Message Header Toolbar Customize 2.0.5

Message Header Toolbar Customize 2.0.5を公開しました。

UI周りの調整と不具合修正のみで、新しい機能はありません。

今回から、カスタマイズウィンドウにアイコンが表示されるようになっています。だいぶ、見栄えが良くなったかなと思います。


変更点は以下になります。
  • カスタマイズウィンドウを閉じると、エラーメッセージが出るのを修正
  • 表示ボタン、非表示ボタンを一つのボタンに統合
  • 非表示設定のボタンはボタン名をグレーアウトするように変更
  • ボタンのリストにアイコン表示を追加
  • フォントサイズ、ボタンサイズを調整

アイコン設定は、アドオンのサンドボックス外のデータを参照するので、ダメもとで試してみたのですが、意外とできてしまいました。それよりも、スタイルシートの扱いのほうに手間取りました。HTML/CSSは詳しくないので、だいぶ勉強になりました。

なんか問題な気もするので、そのうち塞がれてできなくなってしまうかもしれませんね。

今回の更新で、やりたかったことはできましたので、これからは不具合修正が中心になっていくと思います。今のところ、ユーザさんは120人くらいで、ポジティブなフィードバックしかもらっていないですが、これから人が増えてくれば、他のアドオンとの組み合わせで問題が出たり、いろいろあるのかなとは思っています。


2020年9月16日水曜日

アドオンインストール時の警告について

Thunderbird 78から、アドオンインストール時に、アクセス許可を聞いてくるようになっています。ちょっとびっくりされるかもしれませんが、以前より安全性が増したということで。

で、これ2タイプあります。

1. 具体的なアクセス権を聞いてくる場合

純粋にThunderbird 78のフレームワークであるMailExtensionsだけで作られたアドオンの場合に、このような聞き方をしてきます。アドオンは、ここで書かれた以上のことはしません。


アドオンの機能と照らし合わせて、明らかに不要なものを要求していたら、注意が必要かもしれません。

ただ、ここに挙げられているからといって、アドオンがその操作を必ずするとは限りません。アドオンの設定ファイル(manifest.json)に、アクセス権を宣言するところがあるのですが、アドオン作者が必要ないのに書いてしまう場合があります。足らないと動かないので分かるのですが、余分に要求しても動作に影響がなく気づかないので。
 
なので、ちょっとおかしいなと思ったら、ひとまずインストールはやめて、信頼できるか情報収集したほうがいいかなと思います。

上記のCheck and Sendの例もそうで、「ブラウザーのタブへのアクセス」を要求していますが実際はしていません。APIのドキュメントがわかりづらくて間違ってつけてしまっているだけです。アクティブなタブを取得する(タブをさわる)ので必要かなと思ってアクセス権を設定したのですが、これは何かURLを開いたりするときに必要なものらしくCheck and Sendの処理では不要でした。次回アップデートで削除する予定です。最後にまとめますが、他のアドオンでも同じ間違いをしてしまっています…


2. 無制限なアクセスを要求してくる場合

悩ましいのがこのタイプで、半分以上のアドオンはこれになると思います。これに驚いてこのページにたどり着いた方もいるかと思います。


これは、WebExtension Experimentsという仕組みを使っているアドオンの場合に出ます。WebExtension Experimentsは、Thunderbird 68のレガシーアドオンのように、Thunderbirdの内部を触るために使用されます。Thunderbird 78からの新しい仕組みであるMailExtensionsは制約が大きく、できることが非常に限られてしまうため、この仕組みを使っているアドオンが多いです。Thunderbird 68のアドオンを78対応したアドオンは、ほぼこれかと思います。

内部を自由に触れてThunderbirdとしては管理できないので、最悪ケースで「完全に無制限なアクセス」ということですね。

インストール後、アドオンの許可設定のところを見ると、以下のように「許可設定を必要としていない」とか、具体的なアクセス内容が書かれていたりしますが、これはあくまで一部で、WebExtension Experimentsを使って、それ以外のアクセスを必ずしています。Message Header Toolbar Customizeでは、ThunderbirdのUIに手を出しています。(ツールバーボタンの表示(collapsed属性)を変えるのと、順番を変える)


非常に怖い表現ですが、Thunderbird 68と何も変わらず、これまでもあったリスクを通知するようになっただけとも言えます。

このタイプのアドオンは、アドオン作者との信頼関係(性善説)の上に成り立っています。心配だったら、アドオン作者に思い切って聞いてみるのもいいかなと思います。


アクセス権の理由

最後に、私のアドオンのアクセス許可要求とその理由をまとめておきます。変なことはしていないので安心してください。

  • Check and Send
    • メールアカウントとそのフォルダーへのアクセス
      差出人ごとの設定、差出人情報のポップアップのために差出人情報にアクセスしています。
    • アドレス帳および連絡先の読み取りと変更
      宛先がアドレス帳にあるか/ないかのチェックに使用しています。変更はしていません。
    • 編集および送信するメッセージの読み取りと変更
      送信処理への割り込みと、宛先、件名、本文のチェックのための読み出しをしています。
    • ブラウザーのタブへのアクセス
      誤設定でこれに該当する処理はありません。次回更新で削除します。
      v2.0.13で削除しました。
  • EnForward
    • メールアカウントとそのフォルダーへのアクセス
      オプションでメール送信に使う差出人(サーバ)を指定するために、差出人情報を読みだしています。
    • 編集および送信するメッセージの読み取りと変更
      メール作成ウィンドウで宛先、件名を設定するために使用しています。
    • メッセージの読み取りとマーク付け、タグ付け
      利用できるタグを取得するために使用しています。
    • ブラウザーのタブへのアクセス
      誤設定でこれに該当する処理はありません。次回更新で削除します。
    • 無制限のアクセス(WebExtension Experiments)
      送信メッセージの作成(ローカルに一時ファイルを作成)、メッセージの送信をしています。
  • Evernote Tab
    • ブラウザーのタブへのアクセス
      EvernoteのWebページをタブに開くのに使用しています。
    • ナビゲーション中のブラウザーアクティビティへのアクセス
      タブでEvernoteの操作をするため、Cookieを使用するために使用しています。
  • Maximize Message Pane
    • メールアカウントとそのフォルダーへのアクセス
      フォルダ選択の変更を検知するのに使用しています。これをトリガにメッセージペインの最大化を解除しています。
    • メッセージの読み取りとマーク付け、タグ付け
      表示メッセージの変更を検知するのに使用しています。添付ファイルビューがメッセージ表示のたびに出てきてしまうので、これをトリガに添付ファイルビューを非表示にしています。
    • 無制限のアクセス(WebExtension Experiments)
      メッセージペインなどを非表示にする(collapsed=true)のに使用しています。
  • Message Header Toolbar Customize
    • 無制限のアクセス(WebExtension Experiments)
      ツールバーボタンの非表示(collapsed=true)、ボタンの並べ替えに使用しています。
  • New Tab Button
    • ブラウザーのタブへのアクセス
      誤設定でこれに該当する処理はありません。次回更新で削除します。
    • 無制限のアクセス(WebExtension Experiments)
      メッセージをタブで開くのに使用しています。(WebページのURLを開くAPIはあるのに、メッセージを開くAPIがないため)
  • Priority Switcher
    • メールアカウントとそのフォルダーへのアクセス
      選択中のフォルダのサーバタイプを取得するのに使用しています。IMAPのときだけソースを書き換えるオプションや、ソース書き換えのときのIMAP用の特別処理がいるかどうかの判断に使っています。
    • メッセージの移動、コピー、削除
      ソース書き換えの時に、もとのメッセージを削除するために使用しています。
    • メッセージの読み取りとマーク、タグ付け
      重要度ヘッダ(X-Priority等)の読み出し、ソース書き換えのためのメッセージ全体の読み出し、スター付きの判定のために使用しています。
    • 無制限のアクセス(WebExtension Experiments)
      重要度の変更をしています。また、ソース書き換えのためにローカルに一時ファイルを作成し、それをThunderbirdのデータベースに登録しています。
  • Tag Popup
    • メッセージの読み取りとマーク、タグ付け
      利用可能なタグの読み出し、メッセージにつけられたタグの読み出し、メッセージへのタグ追加/削除のために使用しています。
    • ブラウザーのタブへのアクセス
      誤設定でこれに該当する処理はありません。次回更新で削除します。
    • 無制限のアクセス(WebExtension Experiments)
      ヘッダビューでタグのつけ外しをするため、ヘッダビューのクリックの検出、タグラベルの追加をしています。


2020年9月13日日曜日

ヘッダビューのツールバーに空白、区切り線を追加する


Message Header Toolbar Customize v2.0.4で、スペースと区切り線を追加できるようにしました。

ダウンロード


利用頻度は高くないかもしれませんが、Thunderbird 68ではできていたので。こんな感じにできるようになります。



カスタマイズウィンドウに、以下のように「スペース」と「区切り線」ボタンが追加されています。ボタンを押すと、リストで選択中の項目の前にスペース/区切り線が追加されます。上へ/下へで移動することもできます。追加したスペース/区切り線を削除したい場合は、「非表示」ボタンをおしてください。通常はボタン名に「(非表示)」がつくだけですが、スペース/区切り線の場合は削除されます。



また、これはThunderbird 68にはなかったのですが、メールを複数選択したときのツールバー(アーカイブと削除)の表示も変えられるようにしました。カスタマイズウィンドウに「複数選択時のツールバーにも適用する」というチェックボックスがあるので、これをチェックしてください。こんな感じで、アイコン表示だけにできたりします。


要望があったのでやってみたのですが、これはちょっと微妙かもしれません。そんなにスペースに困るわけでもないですし、誤操作してしまいそうな気もします。アイコン表示に統一感が欲しい方は試してみてください。

2020年9月8日火曜日

Thunderbird 78のメッセージヘッダビューのツールバーをカスタマイズする

Thunderbird 78から、メッセージヘッダビューにあるツールバーが固定になっています。

以下のバグが挙がっていますが、対応にはしばらくかかりそうです。

[Bug 1556261] Implement message header button customisation

で、アイコンの横に文字があり場所をとっていやなので、アドオンで対処してみました。欲しい方もいらっしゃると思うので、公開します。あくまで、上記バグが対応されるまでのワークアラウンドと考えてください。

Message Header Toolbar Customize

メッセージヘッダのツールバーをこんな感じに変更できます。

■Thunderbird 78デフォルト(変更前)


■アドオンで変更後
表示をアイコンのみ、迷惑メールボタンを非表示、その他メニューを一番後ろに移動しています。




設定方法

設定は、以下から行います。
  • ツールバーの「その他」ボタンにある「ツールバーをカスタマイズ」
  • ツールバーの右クリックメニュー
※アドオンのオプションからの設定は、v2.0.3で廃止しました。
 

v2.0.3から、メインウィンドウとメッセージウィンドウそれぞれで設定できるようにしました。v2.0.2からバージョンアップされた方は、メッセージウィンドウのツールバーがデフォルトに戻っているので、再設定してください。

ボタンのアイコン表示
「表示」のところで、ボタンのアイコン表示を切り替えます。以下から選んでください。
  • アイコンの横にテキスト
  • アイコンのみ
  • テキストのみ
「アイコンの横にテキスト」にする方はいないと思いますが、一応いれておきました。

ボタンの順序、非表示の設定
「表示順」のところで変更します。メッセージヘッダビューのツールバーにあるボタンが列挙されているので、上へ/下へボタンで順序を設定してください。ツールバーには、上にあるものから順に表示されます。

表示したくないボタンがある場合は、非表示ボタンをおしてください。非表示にすると、ボタン名のところに「(非表示)」が表示されます。非表示にしたものを元に戻すときは、表示ボタンを押してください。

リセットボタンは、Thunderbirdのもとの並びに戻すときに使用します。リセットを押すと、Thunderbirdを再起動するようにメッセージがでるので、Thunderbirdを立ち上げなおしてください。
 
 
制限事項

いくつか制限事項があります。
  • IDを持たないボタンには対応できません。基本は大丈夫ですが、ツールバーに独自のエレメントを追加するような特殊なアドオンがあると、うまく動かないかもしれません。
  • 非表示設定は、ボタンを隠している(collapsed)しているだけで、削除はされていません。何かの機能によって、再表示されることがあるかもしれません。
  • アドオンを削除すると、ツールバーはもとに戻ります。
  • アドオンのデバッグで一時的に追加されているボタンには対応できません。

 

更新履歴など

バージョンアップでいくつか機能追加をしています。以下のリリースノートを参考にしてください。また、アドオンインストール時の警告についてまとめているので、こちらも参考にしてください。


 
 



2020年9月6日日曜日

MailExtensions版 Priority Switcher

Thunderbird 78用のPriority Switcherを作成しました。

Priority Switcher 2.0.1

旧バージョンと比べてだいぶ操作が変わっているので、簡単に説明します。前のほうがいいというところもあると思いますが、制限が多くこのような形になってしまいました。


重要度の表示、変更

旧バージョンでは、スレッドペインにアイコンを追加して、重要度の表示や切り替えをしていましたが、MailExtensions化にともないできなくなってしまいました。(がんばって実装したらできるのかもしれませんが…)

そこで、これらの機能をツールバーボタンに集約しました。以下のように、ツールバーボタンのアイコンとテキストで、選択中のメッセージの重要度を表示します。



また、ボタンをクリックすると、以下のようにポップアップが表示されます。ここでラジオボックスをクリックすると、重要度を変更できます。リセットをクリックすると、元の重要度に戻ります。



コンテキストメニューにも、ポップアップと同様のメニューがあるので、そちらからも変更できます。

ちなみに、スレッドペインへのアドオンでの項目追加は、開発元へ要望としては挙がっています。これが対応されたら、スレッドペインでの重要度表示、切り替えも対応検討します。

Add an API to allow adding columns to the message list


メッセージソースの書き換え

これは、旧バージョンと同じ仕様です。

重要度を変更した際、デフォルト設定では、Thunderbirdのインデックスファイル(.msf)のみを書き換えます。この場合、以下の制限があります。
  • インデックスファイルを再構築すると重要度がもとに戻ってしまう。フォルダの修復などをすると発生。
  • IMAPで別のメールクライアントでメッセージを開いても、重要度の変更は反映されない(もとの重要度のまま)。

これを回避するには、メッセージ本体を書き換える必要があります。ポップアップ、コンテキストメニューに「ソースを書き換え」というのがあるので、これを実行すると、新たに重要度を書き換えたメッセージを作成し、古いメッセージを削除します。メールのコピー、編集、削除が発生するので、メールのサイズや環境によっては、少し時間がかかります。

また、この書き換え処理を、重要度を変更したとに自動で実施するオプションもあります。選択肢として、
  • 常時自動で書き換える
  • IMAPサーバのときのみ、自動で書き換える
が選べます。

インデックスファイルの再構築は、それほど起こることではないと思うので、自動書き換えをする場合は「IMAPのときのみ」の運用がいいかなと思います。

また、この書き換えは、IMAPサーバによってはうまく動かないかもしれません。その場合は、私がそのサーバを使って確認することができないので、仕様とさせてください。実は、Gmail IMAPがその筆頭で、ワークアラウンドを入れて動くようにしています。


重要度ヘッダ

重要度を表すメールヘッダはいくつかありますが、ThunderbirdはX-Priorityしかみていません。今回、新規に作り直すにあたって、過去要望されていたほかのヘッダも見るオプションを作りました。ただし、あくまで、Priority Switcherのアイコン表示だけで、スレッドペインの重要度欄には影響しません。

オプションに、「Importance, Priority, X-MSMail-Priorityも解釈する」という項目があるので、これを有効にしてください。デフォルトではOFFになっています。

解釈するメールヘッダとアイコン表示の関係は以下になります。

アイコン表示
X-Priority
Importance
Priority
X-MSMail-Priority
最高
1
High
Urgent
High
2
-
-
-
標準
3
Normal
Normal
Normal
4
-
-
-
最低
5
Low
Non-urgent
Low
 
この機能は、実装したものの、これらのヘッダがあるメールがなく、動作確認できていません。おかしい動きがあれば、教えてください。


メッセージ削除時の重要度チェック

重要度が高いメッセージ、スター付きのメッセージの削除時に警告をだすことができます。旧バージョンでは、Thunderbirdの削除機能をつぶしてやっていましたが、今回は、Thunderbirdの機能はそのまま残し、Priority Switcherの機能として実装しました。ちょっとここは、不満のある方も多いと思いますが、MailExtensionsの制約として許してください。

まず、オプションを開いて、チェックの条件を設定してください。
  • 警告を表示する重要度(デフォルト:高以上)
  • スター付きのメッセージの削除で警告するかどうか(デフォルト:ON)
  • 迷惑メールはチェックから除外するかどうか(デフォルト:ON)
を設定できます。

最後の迷惑メールの設定は、ONのままでいいかと思います。迷惑メールフィルタの精度がよくない場合は、チェックを外しておいたほうが安全かもしれません。

設定ができたら、ポップアップ、コンテキストメニューに「重要度をチェックしてメッセージを削除」というのがあるので、メッセージを選択した状態でこれを実行してください。選択しているメッセージに設定した条件にマッチしたものがあると、以下のアラートが出ます。(味気なくてすみません…)



削除してよければ、「削除」、やめたければ「キャンセル」または×ボタンを押してください。「高重要度のメッセージを除く」をチェックして「削除」ボタンを押すと、条件にマッチしたメッセージを除外して削除ができます。

警告ウィンドウが表示されているときに、メッセージの選択を変更して削除を押しても、前の選択状態で削除を実行するので注意してください。モーダルダイアログで選択変更できないようにできればよかったのですが、これも、MailExtensionsの仕様でできませんでした。

このチェック付き削除は、キーボードショートカットからも実行できます。デフォルトではOFFになっているので、キーを設定して使用してください。キー設定は、アドオンマネージャを開いて、歯車ボタンの「拡張機能のショートカットキーの管理」からできます。

また、コンテキストメニュー、ツールバーボタン(ゴミ箱アイコンのとき。後述。)をShiftキーを押しながら実行すると、メッセージをゴミ箱に移動するのではなく、完全に削除します。


ツールバーボタンのコマンドの選択

MailExtensionsの制約で、アドオンはツールバーボタンを一個しか持てません。そのため、1つのツールバーボタンに機能を詰め込んでいます。オプションに「ツールバーコマンド」のセクションがあるので、ここで好みの設定に変えてください。

設定項目は、
  • 重要度を変更する
  • 重要度をチェックしてメッセージを削除する
の2つがあって、この組み合わせで、ツールバーボタンの表示、動作が変わります。

重要度を変更する
重要度をチェックしてメッセージを削除する
アイコン
ポップアップ
X
X
重要度表示
表示される。「重要度をチェックしてメッセージを削除」も表示される。
X
-
重要度表示
表示される。「重要度をチェックしてメッセージを削除」は表示されない。
-
X
ゴミ箱アイコン
表示されない。ボタンをクリックすると「重要度をチェックしてメッセージを削除」が実行される。
-
-
重要度表示
表示されない。ボタンをクリックしても何も起きない。
 
3番目(ゴミ箱アイコン)は、前記の「メール削除時の重要度チェック」に不満な方へのワークアラウンドのつもりで用意しました。重要度の表示と変更がツールバーボタンでできなくなりますが、通常のゴミ箱ボタンのように使用できます。削除機能は別アドオンに切り出そうかとも思ったのですが、バージョンアップで難民が出そうなので、苦肉の策ですがこの方法をとりました。


簡単にといいながら、結構かいてしまいました。使い方は以上になります。バグや要望等ありましたら、コメントにお願いします。



人気の投稿(過去7日間)