rcmdnk's blog

MenuBarGmail_200_200

MacでGmailを確認する際にメニューバーに未読メールの通知があると便利で、 それを実現するアプリはいくつかありますが、 必要なラベルの選択やフィルター機能と言ったものまで付いてるものが無かったので 自分で作ったのが MenuBarGmail です。

そのMenuBarGmailをちょっとアップデートしたのでそれについて。

Sponsored Links

ソースコードはGitHubにあります。

インストールはHomebrewで

$ brew cask install rcmdnk/rcmdnkcask/menubargmail

とするかGitHubのレポジトリのreleasesから最新のものをダウンロード、解凍して 中にあるMenuBarGmail.appを/Applicationsに入れてください。

クリックして立ち上げると 最初にGmailのアカウントに関する認証をブラウザを立ち上げて行います。

認証を許可すると 下の様な封筒アイコンと、未読数がメニューバーに現れます。

20151117_menubargmaillabels.jpg

デフォルトではInboxの未読数だけを見ますが、 ラベルの設定や、指定したラベルの中でもさらにFilterを設定して 必要なメールだけの未読数を数えて表示することも出来ます。

基本的にはこの未読通知を表示させておいて 後はブラウザでちゃんと確認、という使い方をしていますが、 メールの内容の表示や、メールの既読化、未読メールに対する返信 などと言った機能もあります。

今回のアップデート

今回のアップデートはネットワークが切れたりした時に メールを確認に行って失敗するとそこで止まって応答しなくなってしまう、 と言う酷いバグのフィックスです。

このバグ自体は随分前に直していたんですが、 OSをアップデート後、アプリにコンパイルすると上手く起動出来なくて アプリの作成が出来てませんでした。

MenuBarGmailはPythonで作っていて、 rumpsというモジュールを使っています。

さらに作ったスクリプトを py2app を使ってアプリ化しています。

スクリプトの状態で走らせると上手く起動出来るのですが、 アプリ化して起動すると Open Console/Terminateというボタンとともに MenuBarGmail Errorというエラーポップアップが出てきます。

Open Consoleをしてコンソールで見てみると

Detected missing constraints for . It cannot be placed because there are not enough constraints to fully define the size and origin. Add the missing constraints, or set translatesAutoresizingMaskIntoConstraints=YES and constraints will be generated for you. If this view is laid out manually on macOS 10.12 and later, you may choose to not call [super layout] from your override. Set a breakpoint on DETECTED_MISSING_CONSTRAINTS to debug. This error will only be logged once.

こんな感じのエラーが。

中にmacOS 10.12ウンタラカンタラとあるので OSのアップデートにrumpsなりpy2appが対応してないのかな、 と思ってしばらく放っておいたのですが、 今回pipでインストールしてあるモジュールを一通り新しくして もう一度やってみたらこのエラーがでなくなりました。

ということでとりあえず使えるかな、と思ったら今度はメールが全然取得出来ない状態。 調べてみると最初に作った時に sslモジュールで起こった問題 と同じことが他で起こってるようでした。

sslモジュールの中ではhttplib2モジュールの中にあるcacerts.txtと言うテキストファイルを読んでるのですが、 py2appではモジュール群をzipファイルに纏めた形でアプリの中に収納しています。 この中にあるテキストファイルを読もうとするのでそこでエラーが出ます。

なのでこのテキストファイルを別途アプリの中に収納し、 それを読める様にモジュールをちょっといじって入れる様なことをしていました。

これと同じことがhttplib2の中でも起こっていたので同様に パスを指定する部分をいじって入れることで上手く動くようになりました。

Sponsored Links
Sponsored Links

« GNU Screen 4.6.1リリース Firefoxの検索で単語全体でなく一部でも検索出来る様にする »