TeXShop の外部エディタとして CotEditor を使う
TeXShop のエディタを使っているとよくカーソルが行方不明になるので、カーソルのいる行の色を変えるとかしたかったのだけど、できなさそうなんでいっそ CotEditor を外部エディタとして使うことにした。TeXShop のエディタには検索が使いにくいなど、他にも不満な点があるし。
ちなみに CotEditor でカーソルのある行の色を変える方法は以下。チェックを入れて、上の赤で囲ったところにチェックを入れて、下で色を設定。
CotEditor は2010年くらいから使っているけど最近は以前よりもかなり安定していて素晴らしいエディタだと思います。とか言いつつ、今日までスクリプトを使えることを知らなかった。
ここから本編
まず TeX Wiki からリンクの貼られていた以下の記事を参考にさせていただいて、
TeXShop と外部エディタの連携skalldan.wordpress.com
以下のような AppleScript を書いた。
tell application "CotEditor" try set texfileOnCot to the file of the front document set path2texfile to texfileOnCot as text set posixpath to POSIX path of path2texfile tell application "TeXShop" activate try -- opendoc(posixpath) -- should use this but I couldn't open(posixpath) set texfileOnTS to front document tell texfileOnTS to latexinteractive tell texfileOnTS to close end try end tell on error display dialog "Error!" beep 1 end try end tell
AppleScript はたまにしか書かないのでよくわからない。エラー処理とかも適当。コメントアウトしてる opendoc()
っていう関数は TeXShop で Help
> Notes on AppleScript in TeXShop
と辿ると見れる PDF にこっちを使えって書いてあったんだけど、よく分からなかった。
このスクリプトを、~/Library/Application Scripts/com.coteditor.CotEditor
に置く。このときに設定したファイル名が、CotEditor 上でのショートカットになる。Cmd+T に設定したかったけど後述のようにできないので、Cmd+Opt+T にするべく、cot2texshop.@~t.scpt
いうファイル名にした。そうするとメニューにはこんな風に表示される。
これで CotEditor で TeX ファイルを編集しているときに、Cmd+Opt+T を押すと TeXShop がコンパイルしてくれる。この辺りのことについては、以下の記事を参考にさせていただきました。
なお7年前の記事なので今とスクリプトを置く場所が異なるようです。また、この記事では Cmd+T は Show Fonts
に割り当てられているとなっているけど、僕の環境ではそうなっていない。僕の使っている CotEditor のバージョンは 3.1.3 なので、macOS Sierra だと Cmd+T でタブが開くっぽい (El Capitan を使っているのでメニューからは見えないが)。たぶんこのせいで Cmd+T は使えなくなっているのだろう。
なお CotEditor のスクリプトについて詳しくは、Help
> CotEditor Scripting Manual
> About Scripting
と進んでいけばファイル名の規則などが書いてあるヘルプドキュメントにたどり着けるはず。
あと、Cmd+Opt+T を押す前に、Cmd+S を押して保存しておかないと編集が反映されない。AppleScript 内に保存する動作を入れても良いかも。
あとあと、AppleScript を使わずとも CotEditor には強力なスクリプト機能があることをあとから知った。これを使えば、TeXShop を呼び出す必要もないのでそっちのほうが良いかも。TeXShop を呼び出す利点は、Ctrl+Cmd+A で aux ファイルを消せたり、Shift+Cmd+B で BibTeX を実行するといったショートカットが使えることかな。
その他参考リンク
AppleScript を書くときは毎回お世話になっております。
Mac の Chrome で Cmd + Shift + B が使えないとき
表記のことで困っているにも関わらずしばらく放置していたのだが、ふとしたことで解決した。結論からいうと私の場合は Clipy というアプリにショートカットが取られていた。
Cmd + shift + B は Mac の Chrome でブックマークバーの表示と非表示を切り替えるショートカット。これが数ヶ月前から動作していなかったのだが、押しても何も起こらないので原因が分からなかった。ところが先ほどタブを復元しようとして Cmd + shift + T を押したら、最近インストールした Todoist が予期せずアクティブになった。常駐している Todoist がショートカットを取ってしまっているということだ。これのおかげで Cmd + shift + B でも同じことが起こっていると予想でき、調べてみると Clipy にショートカットが設定してあった。
というわけで解決。
参考リンク
Clipy の公式サイトはこちら。
Clipy の前身となった ClipMenu も同じショートカットが使われているみたい。 apple.stackexchange.com
Ruby で Wunderlist の API を使う
ログイン情報をヘッダーに設定するというところではまった。以下にユーザー名を取得するスクリプトを載せる。
と同様にクライアントIDとアクセストークンを取得すれば使える。リストをいじるなどは “https://a.wunderlist.com/api/v1/user” の部分を他のに変える。上記のリンクや、公式のドキュメントを参照。
以下、スクリプト。
#!/usr/bin/ruby # coding: utf-8 require "oauth2" require "json" client_id = "CLIENT ID" access_token = "ACCESS TOKEN" client = OAuth2::Client.new("dummy", "dummy") token = OAuth2::AccessToken.new(client, "dummy") # client と token は インスタンスを作りさえすればよいので、client_id, client_secret, access token を入れるべきところは "dummy" とした。 response = token.get("https://a.wunderlist.com/api/v1/user",:headers => {'X-Access-Token' => access_token, 'X-Client-ID' => client_id}) hash_body = JSON.load(response.body) name = hash_body["name"] puts "You have logged in as #{name}."
Reference
Window 10 を自分好みに設定する
先日 Windows 10 の入った Huawei Matebook を買って、Windows7 以来に Windows をちゃんと使ってるのだけど色々な設定方法がめっっっっっちゃ見つけにくい。「設定」アプリと「コントロールパネル」が乱立してるのが一因だけど、階層が深かったり複雑だったりで一度調べても忘れてしまうので、ここにまとめていく。
タッチパッドの右下をクリックすると右クリックになるのを無効化する
これは調べずとも簡単に見つかった。設定→マウス&タッチパッドでいける。
この下に3本指、4本指の設定もある。そのうち設定しようかな。本当はもっと色々設定したいのでドライバをそのうち探す。
ツールバーのカスタマイズ
デフォルトだとツールバーに表示されるアプリのアイコンがデカすぎるので、ツールバーの何もないところを右クリック → 設定 からアイコンを小さくする。同じ場所からツールバーの位置も変えられるけど、左にしたら使いにくそうだったので下のままにしておいた。Mac を使うときは Dock は左側にしているけど、これは Windows のタスクバー (タスクトレイ) に当たるもの (Mac での呼び方はたぶんツールバー) が上にあるからできるのだと気づいた。 Windows の場合、ツールバーとタスクバーがくっついてるので、これを左にするとごちゃごちゃして使いにくい。
アイコンを小さくすると自動的に左下にある検索窓 (下図) も消えてくれる。
もしアイコンは大きいままで、検索窓だけを残したい場合は、ツールバーの何もないところを右クリック → 検索(?) と進んで、検索アイコンを表示か、隠すかを選ぶ。
この検索は Mac の Spotlight のように使えてなかなか良い。以前の Windows の検索はひどすぎて、今はなき Google Desktop を初めて使ったときはその威力に感動したものだった。
To do
IME の切り替え
キーボード配列
フォント
Amazon Prime Music の曲名表示の言語は (今のところ) 変更できない
Amazon Prime Music を使っていて、洋楽の曲名・アーティスト名がカタカナだったり、日本ローカルな曲名になっていたりして不便*1なので、変更できないか試してみたが、結論としてはできない。Spotify や Apple Music ならそんなことはないよね。
まず音楽聴くのに使っている Kindle Fire の言語設定を英語にしたり、amazon.co.jp や music.amazon.jp での表示言語を英語にしてみたけど、効果はなかったので Amazon に問い合わせてみた。
返事は以下の通り。
Amazon.co.jpをご利用いただき、ありがとうございます。
このたびは、当サイトのご利用に際し、ご不便をおかけいたしましたことをお詫びします。
誠に申し訳ありませんが、サイトやKindle端末自体の言語設定を変更した場合でも、曲名などの商品データへは言語の変更は反映されませんことをご了承ください。
○○様よりいただきましたご意見をもとに、今後、質の高いサービスならびにより便利なサイトを提供できるよう努めてまいります。
Amazon.co.jp のまたのご利用をお待ちしております。
今後に期待。しかし洋楽なんて、海外のデータをそのまま使えばいいのに、なんでわざわざローカライズするんだろうか。
ついでに、Prime Music でよく分からない挙動なのが、以下。
+ が自分のライブラリに追加するボタンなんだけど、これを押すと、検索からアルバムを表示したときに、追加した曲だけ別のアルバムとして表示される。うまく説明できないけど、上のスクリーンショットの例だと、トラック2の Walikng In Your Foot Steps とトラック7の Every Breath You Take が下に表示されてて困る。
SONY の電子ペーパー DPT-S1 を Box と同期する
前置き
PDF 形式の論文を読んで書き込みするのに便利な SONY の電子ペーパー DTP-S1 だけど、実際はじっくり読むときしか使わない。ちょっとどんなことが書いてあったっけ、とかを調べるときは、 Mac 上で Spotlight で素早く見つけてささーっと読む *1 。というわけで Mac と DTP-S1 を常に同期しておきたい。
しかし DTP-S1 で使えるネットワークドライブは WebDAV のみ。というわけでこれまでは無料の WebDAV サーバーを借りて、でも Mac の Finder は WebDAV の扱いがだめだめ、あと WebDAV はオンラインのときしか使えないので、Dropbox のフォルダと WebDAV を同期するスクリプトを書いてどうにかしてた。
ownCloud は WebDAV なので暇になったらサーバーを建てようなどと思っていたら、 Box は無料アカウントでも WebDAV が使えるということを知ったので乗り換えてみた。ちなみに、 Dropbox も DropDAV というサードパーティのサービス (有料) を使えば WebDAV が使える。
やり方
にあるように、WebDAV サーバーとして https://dav.box.com/dav
を設定する。DTP-S1 上での入力画面は以下の通り。ポートは Box の説明ページに情報がなかったが 443
で OK だった。ログイン名は Box アカウントのメールアドレス、パスワードは Box のパスワード。「同期用フォルダーパス」は論文とかを入れたディレクトリの名前を入れる。「送信先フォルダー一覧用パス」もよく分からないけど同じにしている。
今のところ、特に問題なく使えている。
アフィコーナー
- DTP-S1 はあまりに強気な価格設定なのであまり持ってる人もいなそうだけど便利なので布教していきたい。半額だったら文句なくおすすめできる。
- WebDAV と言えば、東芝の FlashAir を持っているけどあまり活用できてないので何かやりたい。
DTP-S1 は現在 Amazon だとやたら高いのでソニーストアのリンクを貼っておく。以前は 98,000 円くらいだったと思うのだが今は 79,800 円になったらしい。もう一声!
http://pur.store.sony.jp/digital-paper/products/DPT-S1/DPT-S1_purchase/pur.store.sony.jp
Nextcloud でやる場合 (2020/08/12 追記)
Docker で立てた Nextcloud を家の LAN 内で使っているが、以下のような設定で同期できた。
サーバー: [サーバーのIPアドレス]/remote.php/webdav
サーバー: [サーバーのIPアドレス]/nextcloud/remote.php/dav/files/[ユーザー名]
*2
ポート: [ポート番号]
サーバーのところにポート番号も含めてしまうと同期できなかった。
参考リンク
TMinuit の使い方 (ROOT)
という記事を少し前に Qiita に書いた。
Qiita には初めて投稿したけど、新着記事の流れがそんなに速くないんで、そこから来てくれる人が多い模様。マイナーな記事なのに一気に 100 PV くらいついて、なんだか気が引けてしまう。ROOT は物理屋さん以外の人も使ったらいいと思うので、たまに Qiita に投稿して布教を図りたいと思いますが、同時に何も気にせず書ける場所も欲しいなと感じたので、技術ブログ的なものを始めてみました。技術的な内容に限らず好き勝手に書く予定。Markdown 使えるの便利。
はてなブログをつくるにあたって5年前くらいに書いてたはてなダイアリーを読んでみた (既に非公開になっていたが)。色々若いなって感じだった。昔の自分の頑張ってる姿を読むのはモチベ向上に良いな、と思った。