tl;dr

動いたけどtwitterのプラグインに問題が有るので対応を…されるんだろうか…(´・_・`)

と思ってたら製作者様から反応頂き無事修正出来ることを確認しました!(2016/01/03 更新)

本文

macにはSpotlightなる機能があるよね、あ、まず此処でmac以外の方は解散です。んでこれはOS全体を検索してくれる+ちょっとした機能のランチャなんですね、環境設定の所から検索するリソース設定できて、一々マウスを動かさなくてもショートカット1つでmac上のあらゆる場所からアプリケーションを呼び出せたり辞書検索できたりして便利なんですけど、これもっと機能追加したら便利なランチャになるんでね?というのがflashlightです。 www.danshihack.com

丁度夏季長期休暇も終わり、「心機一転まずは環境の見直しでもするかー」という感じでmacをいじくり回していた私はこれに目が止まり折角なので入れてみようと思ったら動かない。 そして長い戦いが始まったのです(体感3時間)

はい面倒な話は抜きにして解決策ですね、まずこちら

Steps to make Flashlight work on 10.10.4 (doesn't work for El Capitan) · GitHub

日本人で反応している方もいらっしゃいました

qiita.com

成程これを使えばいいんですね!

動かない…

(動いた方はここで解散です、お疲れ様でした)

というか貼られているapple scriptなるもの、Identifier cant follow this Identifierとか言って全く動作しないんだけど?

とはいえいくらググっても(そういえば英語ではgooglingと言うらしいですね、最近知りました)コレ以外の有効な方法は見当たらないし… でも何となく諦め付かないし…とグダグタ格闘した末「動いたthx!」という賞賛のコメントを恨めしくスクロールしていくと…

For anyone getting syntax error: Identifier cant follow this Identifier, even after closing Flashlight, restart your mac, close Flashlight again, then run the script. Tested on 10.10.5!

ええ、いつもどおりの灯台下暗し、解決策は真下に有りました、というかこんな方法コメントした方はどうやって見つけたんだ。本当に感謝しか無い…

とはいえこのコメントからは真意を掴みきれず、この後30分以上は閉じては再起動、スクリプトを実行しては〜を繰り返していたと記憶しています。結果はこうです。

  • まず先ほどの解決策の通りにスクリプトを書いてアプリケーションの形式で保存する
  • ここでIdentifierが云々と言って動かなくても取り敢えず保存
  • システム環境設定の「ユーザとグループ」を開く
  • ログイン項目の実行するアプリに先程保存したスクリプトとflashlightを登録
  • flashlightの隠すにチェックを入れる(flashlightの画面が起動時に邪魔なので
  • flashlightをdisableに
  • PCを再起動、ログアウトでもおk
  • ログインしたらflashlightを再びenable→disable
  • スクリプト実行
  • なぜか動く

「途中のログイン実行登録後からでも良くね?」

はい、そうだと思います。取り敢えず自分が動いた例の詳細を上げたので、大事なのはやはりeven after closing Flashlight, restart your mac, close Flashlight again, then run the scriptでしょう。flashlightがdisableの状態で次回もログイン実行されるようになればOKです。

あらゆる状態からショートカット1つでツイートしたかった

これで各種webサービスからロック、シャットダウンといった操作までワンショートカットでアクセスできるようになり、快適度が増しました、しかし一番の見所はflashlight用のtwitterクライアントが有ることです。

noppefoxwolf.hateblo.jp

これは正に思考の標準出力をtwitterにリダイレクトするが如き神クライアントでありまして、メール読んだりググったりシェルをいじっている最中にもワンショートカットでツイートできてしまう代物なのです。 しかしこれには現状問題点が有ります。Mac OS X のNFD問題です…つまりこの夜狐アンビエントを介したツイートは他のOSから見ると濁点が分離して見えてしまうということですね…(´・_・`) 何卒作者様対応をお願いします…

製作者様から反応を頂きました (2016/01/03 更新)

という流れで解決することが出来ました。思わぬお年玉です、有難う御座いました!! 少し補足すると、書き換えるスクリプトは~/Library/FlashlightPlugins/NightFoxAmbient.bundle/plugin.pyの100行目付近で、以下がコピペ用となります。 関数norm_unistrは新規に追加し、元のmessage = message.encode(utf8)からmessage = norm_unistr("NFC", message, "utf8")へ変更して下さい。

from unicodedata import normalize
def norm_unistr(form, string, encoding):
    s = normalize(form, string)
    return s.encode(encoding)

def run(message):
    import os, pipes, json
    from requests_oauthlib import OAuth1Session
    from applescript import asrun, asquote

    # message = message.encode(utf8)

    message = norm_unistr("NFC", message, "utf8")

これが恐らくOSX Yosemiteにおける最速のツイートツールです、TLが見れないのですが寧ろTLを追う作業効率低下を避けつつ呟く事ができるのでメリットと言えるでしょう。

実はブログ始めに「始めました」だけだとアレだなぁと思い書いた記事だったのですが…これからは純な技術ネタ以外も投稿していきたいと思います。