詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

Fork me on GitHub

結局ターミナルでメールを読むことにした

最近は集中力を高める活動をしていて手をキーボードから離したくないんだけど、Gmail のウェブビューは Tab でフォーカスしにくいんじゃ~! メール上でやりとりすることってあんまりなくて、アップデートとして送られてきたメール中のリンクをたどりたいことが主なのでこのキーボードナビゲーションの悪さは割と困る。HTML メールを表示する難しさってのがあるんだろうなあ。

ともあれ毎回マウスやトラックパッドに手を伸ばすのはやめたいので、いっそターミナルでメール読んだらいいじゃんってことで Neomutt を使ってみることにした。ターミナルの MUA(Mail User Agent)である mutt のフォークらしい。ハッカーっぽくてかっこいいよな! 以下、macOS 向け設定メモ。

アカウント設定

Gmail にアクセスするために、アプリパスワードを発行してキーチェーンに登録しておく。neomuttrc の設定には生の値のほかにコマンドを書けるのでこういう感じでいいと思う。

set imap_pass = "`security find-generic-password -a *** -s *** -w ~/Library/Keychains/login.keychain-db`"

あとは Gmail 側で IMAP に表示、としたものを全て同期することにする。最初下書きフォルダなどが何も同期されなかったんだけど、Gmail の言語設定を英語にしたら出てきた。ここは特にこだわりなかったのでこれで済ませている。日本語のラベルも英語にすると neomutt 側から確認できるようになった。

set imap_check_subscribed

HTML メールを見る

ターミナルで見るゾ! って言ってもテキストメールよりは HTML メールのほうが情報量多いのであるならこっちを見たい。auto_view と mailcap って仕組みを使って、HTML メールをいい感じに読むことができる。

# neomuttc
set mailcap_path = ~/.config/neomutt/mailcap
# text/html なパートがあったらそれを優先して描画
auto_view text/html
# mailcap
# 'v' を使って個別にパートを見るとき。w3m をインタラクティブに使う
text/html; w3m -I %{charset} -T text/html; needsterminal
# 一覧からメールを開いたとき。テキストとして描画
text/html; w3m -I %{charset} -T text/html; copiousoutput

w3m では Alt-Shift-M で外部ブラウザを起動できるので主にこれで Chrome を開く。

ほかにもメール中のリンクを開くのに urlscan というプログラムを使う方法もある。これは mutt のコンパニオンである urlview の置き換えらしいぜ。

macro index,pager \cB "<pipe-message>urlscan<Enter>"

GUI で読みたいメールの処理

などなど設定していればターミナルで十分メールは読める。とはいえ視覚的に確認したいメールもある。

毎日確認したいダッシュボードのスナップショットのようなものであれば Google Data Studioのスクリーンショットを定期的にSlackに投稿するツールを作った - 日直地獄 のような方法を使って Slack で確認する、でいい。

突然やってきたメールの場合はもう Gmail ウェブで読むしかない。Gmail API を利用すればメールの Message-Id から Gmail 上のパーマリンクを取得することもできるんだけど、認証したり API 叩いたりとややまだるっこしい。簡単にやるならメールから Meesage-Id を取得して、こんな URL を開くといい。

https://mail.google.com/mail/u/0/#search/rfc822msgid:<msgid>

Message-Id で検索した結果を開く。ここから Enter もう一回押さなきゃいけないけどねー。

メッセージを外部プログラムに渡せるのが便利

ともあれ、<pipe-message>(キーボードショートカットだと |)でメッセージの全体を外部プログラムに渡せるのが便利。上のように Message-Id から URL を開く、みたいなのもちょっとコードを書いてしまえば実現できるわけだし。

そういうわけでメールを条件に必要なアクションを起こすための部品プログラムを書いたりしている。そのうち紹介します。


ちなみに GUI アプリだと id:cockscomb に教えてもらった Mimestream ってのがよさそうだった。

はてなで一緒に働きませんか?