ディスカッション (11件)
Hammerspoonは、Luaスクリプトを用いてmacOSのシステム操作を自動化・カスタマイズできる強力なフレームワークです。ウィンドウ配置の自動化、独自ショートカットの作成、システムイベントをトリガーにした処理の実行など、その自由度は無限大。Macを極限まで使いやすくしたいエンジニアにとって、究極の自動化ツールと言えるでしょう。
設定の全貌はこんな感じ。 hs.hotkey.bind({"ctrl"}, "D", function() hs.grid.show() end) 他の凝ったウィンドウマネージャもいろいろ試したけど、結局これが一番使いやすい。(1) ctrl-dでグリッドを表示、(2) ウィンドウの左上にしたい場所のキーを打つ、(3) 右下にしたい場所のキーを打つ。これでウィンドウのリサイズ完了。
HammerspoonはMacを支える接着剤みたいなもんだね。使い始めのヒントとして、俺が使ってる機能をざっと挙げてみる: Safariの全タブをObsidianへ保存、Hyperキー(Ctrl-Opt-Cmd)に各種アプリ(Safari, Finder, Ghostty, VS Code, Notesなど)の新規ウィンドウ起動や設定リロード、画面ロック、ライトの制御、仕事タイマーなどを割り当て。AeroSpaceと連携してウィンドウのモニター間移動やレイアウト管理もしてる。他にも、特定アプリの常駐維持、ゴミ箱時のディスク解除プロンプト、Markdown URL経由でのPDFセクションジャンプとか、やりたいことは何でもできるよ。
Hammerspoonを使ってMacでタイル型ウィンドウマネージャもどきをやってる。比率ベースでリサイズする関数を作って、4つの角にショートカットを割り当ててるんだ。あと、ウィンドウを他のモニターに飛ばす機能も便利だよ。
Zoomの画面共有コントロールを隠すのに使ってる。Escキーを押したときに勝手に戻ってこないようにね。ウィンドウを見つけて、非表示にするときは画面外の座標に飛ばして、戻すときは元の位置に再設定するようなスクリプトを書いてるよ。
特定のEthernet付きUSBハブにMacBookを接続・切断したときに、Wi-Fiを自動でオン・オフするようにしてる。Wi-Fiの状態が変わるたびに通知も出すようにしてて便利だよ。
macOS向けのウィンドウ操作ツールをずっと探してて、RectangleやMagnetとか色々試した。で、Hammerspoonがあるじゃん、これで自分の理想通りに作れるって気づいたんだ。1年使ってるけど99%完璧。Firefoxとか一部のアプリでたまに挙動が怪しくなるけど、許容範囲かな。接続してるWi-Fiとモニター構成から、自宅か職場かを判別してレイアウトを一括変更する機能も重宝してる。
自画自賛で恐縮だけど、spacehammerを紹介させて。SpacemacsやDoomにインスパイアされた、Hammerspoonのモーダル操作ツールキットなんだ。これなしじゃMacで仕事できないよ。alt+spc a bでブラウザを開いたり、メディア操作をしたり、あらゆるアプリのテキストをエディタに飛ばして校正や翻訳、LLMにかけたりできる。Yabaiとかと組み合わせるのもアリ。Fennelで書いてるからREPLで即座に開発できるし、Claudeにアプリの中身を調べさせて自動化を作るのもエディタから離れずにできるんだ。
俺がHammerspoonで作ったツールをいくつか:OSの至る所でVimモードを使える「VimMode.spoon」、修飾キー+ドラッグでウィンドウ移動・リサイズができる「SkyRocket.spoon」、修飾キー長押しでキーバインド一覧を出す「HyperKey.spoon」。あと、俺の巨大な設定スクリプト集も公開してるから参考にしてみて。
Hammerspoonのメンテナです。みんなのコメントを楽しく読んでるよ。今はメインでv2を開発中なんだけど、LuaからJavaScriptに切り替える予定なんだ。みんなに嫌がられないといいんだけど(笑)。
Macを買ったら真っ先に入れるアプリの一つ。これがないMacなんて、半分壊れてるようなもんだよ。