4 ポイント 投稿者 GN⁺ 2026-03-15 | 1件のコメント | WhatsAppで共有
  • macOS 環境を Lua スクリプトで制御できるオープンソースの自動化ツールで、OS とスクリプティングエンジンをつなぐ ブリッジの役割を果たす
  • 多様な 拡張モジュール(extensions) を通じてシステム機能を公開し、これらを組み合わせてウィンドウ管理、入力制御などの複雑な作業を自動化できる
  • インストールは Homebrew または手動ダウンロードに対応しており、ユーザー設定ファイル ~/.hammerspoon/init.lua を自分で作成してはじめて動作する
  • プロジェクトは Mjolnir からフォークされ、より統合されたユーザー体験を提供しつつ、継続的に システム API の拡張拡張間の統合強化 を目指している
  • 開発者やパワーユーザーが macOS を細かく制御できる 高度な自動化プラットフォーム として定着している

Hammerspoon 概要

  • Hammerspoon は macOS(旧 OS X)向けの 強力な自動化ツール で、OS と Lua スクリプティングエンジン をつなぐブリッジとして動作する
    • ユーザーは Lua スクリプトを通じてシステムのさまざまな機能を制御できる
  • 中核機能は 拡張モジュール(extensions) によって提供され、各モジュールがシステムの特定機能を公開する
    • これにより、ウィンドウ管理、オーディオ制御、入力デバイス設定など、多様な自動化作業を実行できる

インストール方法

  • 手動インストール
    • GitHub の 最新リリース をダウンロード
    • Hammerspoon.appApplications フォルダへ移動
  • Homebrew でのインストール
    • コマンド: brew install hammerspoon --cask

初期設定と活用

プロジェクトの歴史

  • Hammerspoon は Mjolnir プロジェクトのフォーク として始まった
    • Mjolnir は最小限のアプリケーション構造を志向し、拡張を外部 Lua パッケージとして管理していた
    • Hammerspoon はこれを基盤に、より統合されたユーザー体験 を提供するために開発された

プロジェクトの今後の方向性

  • システム API の拡張範囲拡大
  • 拡張モジュール間の統合強化
  • ユーザー体験の改善

技術構成と統計

  • 主な言語構成: Objective-C 51%, Lua 24.7%, C 16.3%, HTML 5.6%, Shell 0.7%, Python 0.5%
  • GitHub 統計: 14.9k stars, 678 forks, 133人の貢献者
  • ライセンス: MIT License
  • 公式ウェブサイト: www.hammerspoon.org

主なトピックタグ

  • macOS, automation, lua, objective-c, osx, mjolnir, hammerspoon, irc

1件のコメント

 
GN⁺ 2026-03-15
Hacker News のコメント
  • Hammerspoon は、自分の Mac 全体をひとつにまとめる接着剤のような存在
    Safari のタブを Obsidian の文書にダンプしたり、Hyper キー組み合わせ(Ctrl+Opt+Cmd) で Safari、Finder、Terminal、VS Code、Notes など主要アプリを新しいウィンドウで開いたりしている
    AeroSpace と連携してウィンドウを別のモニターへ移動したり、2つのウィンドウを並べたり、入れ替えたり、すべてのウィンドウを1つのワークスペースに集めたりと、さまざまな自動化を設定している
    さらに、バックグラウンドアプリが落ちたら自動で再起動し、ディスクイメージがゴミ箱に入れられたらアンマウントするよう促すプロンプトも出す
    Skim と連携して、Markdown リンクから PDF の特定セクションへジャンプする機能もある

    • 自分は2つの用途にしか使っていない — Teams のウィンドウ一覧を確認して会議中なら HomeAssistant に Webhook を送って 照明プリセット を切り替え、ical カレンダーを取得して15分以内に会議があれば「pending」プリセットに切り替える
      もともとは Outlook の共有リンクを使っていたが、認証が必要になったため Apple Calendar を経由するようにした。ただ、予定の40%しか同期されないのは今でも謎
    • Safari のタブを Obsidian にダンプする方法が気になる。簡単な機能なのか、それとも共有できるスクリプトがあるのか知りたい
    • 本当に印象的な 「spooning」。自分はウィンドウ管理にしか使っていないが、そのおかげで macOS がずっと使いやすくなった
    • 設定ファイルを共有してもらえないか気になる
    • 例のおかげで、自分もどう活用できるかアイデアが湧いた
  • 以前は tiling window manager が好きだったが、Mac では視覚的に複雑なアプリを多く使うので、画面配置のほうが重要になった
    メール、IDE、ブラウザー、ターミナル、チャットアプリそれぞれに合わせた ウィンドウサイズのプリセット を作り、Hammerspoon のショートカットで切り替えている
    IDE がビルド中でもブラウザーを開いて下部ログを確認できるし、モーダルショートカットでアプリ切り替えも速い
    多段階モーダルという考え方が興味深い

  • Hammerspoon の メンテナー として、現在 Lua から JavaScript へ移行する v2 を開発中

    • Lua が好きで、Hammerspoon は Lua を使うほぼ唯一の理由だったので、JS に変わるのは残念だが現実的な選択だと思う
    • 長年使ってきたユーザーとして、Lua から移行する理由は気になるが、とにかく素晴らしいアプリなので感謝している
    • 「18日後にリリースですか?」と冗談まじりに期待を表している
    • v2 の ビジョン とアーキテクチャ変更の理由、JS を選んだ背景が気になる
    • AppleScript の JavaScript 対応と シナジー が生まれるかもしれない点も気になる
  • 自分のプロジェクト Spacehammer は、Spacemacs/Doom に着想を得た Hammerspoon のモーダルツールキット
    「alt+spc a b」でブラウザーを開いたり、「alt+spc m j/k」で音量を調整したり、どんなアプリのテキストでも Emacs で編集できる
    Fennel で書かれていて、REPL を通じてリアルタイム開発ができ、Yabai のようなウィンドウマネージャーともよく連携する

    • 「音量調整キーはキーボードにあるのに…」という冗談。ただし Touch Bar Mac ユーザーなら理解できる
  • 自分は Hammerspoon で 疑似タイル型ウィンドウマネージャー を実装している
    ウィンドウを画面比率で再配置し、ショートカットでモニター間の移動もできる

    • AeroSpace を勧める。i3 ユーザーにはなじみやすい動作をする
    • 自分も似たように使っているが、左・中央・右の配置まで追加している。数式でウィンドウサイズを計算するのは 奇妙だけど最高
    • hammerspoon-shiftit を使っている。死んだ ShiftIt を完璧に再現したプロジェクト
    • 自分も hyper+矢印でウィンドウを動かし、hyper+enter でフルスクリーンに切り替える。自然なウィンドウ移動の感覚 が気に入っている
    • miro-windows-manager プラグインが好き。半分表示や3分割配置を循環させるのに便利
  • 最近初めて Hammerspoon を使ってみたが、メニューバーアプリのオプションに ショートカットを直接割り当てる ために ChatGPT が AppleScript でスクリプトを書いてくれた
    本当にすごくて、これからもっと多くの自動化を試してみるつもり

  • Zoom の画面共有コントロールを隠すスクリプトを作り、ESC を押しても再表示されないようにしている

    • 「これだけでもインストールする価値がある」という反応を得た
  • 自分の設定全体はたった1行
    ctrl + Dグリッドインターフェース を表示して、ウィンドウを好きな位置に調整する
    他のウィンドウマネージャーよりシンプルで直感的

    • 「こんな機能があるとは知らなかった」と驚いている。hs.grid.setGrid('4x4') でグリッドサイズを変えたり、hs.grid.ui.textSize で文字サイズを調整したりもできる
    • 自分も似た機能を使っているが、片側だけをリサイズするなど、もっと柔軟に構成している
    • 複数デバイス間での設定同期は dotfile 地獄 になることがある。それでもマウスを使わずにウィンドウを操作できる数少ない現代的ツールだ
    • ターミナルで Ctrl+D と衝突しないのか気になる
  • 自分も Hammerspoon のおかげで ウィンドウ切り替えのストレス から解放された
    Cmd+1〜9 で Chrome のウィンドウを切り替え、Cmd+0 で選択ダイアログを開く
    自分の設定ファイル を見ると、ウィンドウ名を記憶して再起動後も維持するようになっている

  • Hammerspoon は Mac の Automator より強力
    Automator が今では JavaScriptCore をサポートしているように、Hammerspoon も Lua の代わりに JS を使うなら Node パッケージをそのまま活用できるはず
    Lua で書き直さなければならないなら、かなり苦労しそう