HammerspoonでmacOSの自動化をマスターしよう

HammerspoonでmacOSの自動化をマスターする:スマートなワークフローへの入り口

HammerspoonはmacOS向けの革新的なデスクトップ自動化ツールです。システムレベルのAPIと柔軟なLuaスクリプトエンジンを橋渡しすることで、カスタムLuaスクリプトの作成を通じてシステムを強力に制御できます。繰り返しの多いタスクの簡略化、ウィンドウの精密な管理、システムイベントへの応答など、Hammerspoonは理想のワークフローを構築するためのフレームワークを提供します。

はじめに:Hammerspoonとの最初のステップ

Hammerspoonの旅を始めるには、最新のリリースをダウンロードし、アプリケーションフォルダにインストールしてください。初回起動時に、必要なアクセシビリティ権限の付与を求められます。セットアップが完了したら、メニューバーのアイコンをクリックし、「Open Config」を選択することでHammerspoonの設定にアクセスできます。包括的なAPIドキュメントについては、公式のHammerspoon APIドキュメントを参照し、利用可能な拡張機能や関数を探索してください。

Luaスクリプティングの力

Luaは軽量でありながら強力なプログラミング言語で、複雑な自動化スクリプトに最適です。「Learn Lua in Y minutes」のような簡単なチュートリアルは、Luaが初めての方に最適な入門点となります。

主要機能と実践的な例:

1. Hello Worldと通知: 基本から始めましょう。Hammerspoonでは、ホットキーをバインドしてアクションをトリガーできます。簡単な例として、キーの組み合わせをバインドして、hs.alert.show() を使用した「Hello World!」通知、または hs.notify.new() を介したmacOSネイティブ通知を表示する方法を示します。

hs.hotkey.bind({"cmd", "alt", "ctrl"}, "W", function()
  hs.alert.show("Hello World!")
end)

2. Spoons:既製のプラグイン: 「Spoons」は、Hammerspoonの機能を拡張する既製のプラグインです。例えば、「AClock」Spoonをインストールして、カスタムホットキーで表示を切り替えることができます。

hs.loadSpoon("AClock")
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "C", function()
  spoon.AClock:toggleShow()
end)

3. ウィンドウ管理: ウィンドウをあなたの思い通りに操作しましょう。Hammerspoonはウィンドウフレームの操作に優れています。ウィンドウを正確に移動させたり、画面の半分にフィットするようにリサイズしたり、hs.layout を使用して複雑なマルチウィンドウレイアウトを作成したりできます。Nethackにインスパイアされた直感的なウィンドウ移動をキーにバインドすることも可能です。

-- フォーカスされているウィンドウを左に10ピクセル移動させる
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "H", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  f.x = f.x - 10
  win:setFrame(f)
end)

-- フォーカスされているウィンドウを画面の左半分に移動させる
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "Left", function()
  local win = hs.window.focusedWindow()
  local f = win:frame()
  local screen = win:screen()
  local max = screen:frame()
  f.x = max.x
  f.y = max.y
  f.w = max.w / 2
  f.h = max.h
  win:setFrame(f)
end)

4. ウィンドウフィルター: hs.window.filter を使用して、自動化にコンテキストを持たせることができます。このモジュールを使用すると、アプリケーション、ウィンドウのプロパティ、またはカスタム述語に基づいてルールを適用でき、スクリプトの実行タイミングを正確に制御できます。実用的な例としては、SafariからMessagesにペーストする際にペーストボードをクリーンアップし、予期しないリンク展開を防ぐことが挙げられます。

5. 設定のリロード: Hammerspoonの設定を自動的にリロードすることで、開発プロセスを効率化できます。手動リロード用のホットキーをバインドする (hs.reload()) か、hs.pathwatcher を使用して設定ディレクトリの変更を監視し、自動リロードをトリガーすることができます。

6. アプリケーションメニューとの連携: アプリケーションメニューでの操作を自動化します。Hammerspoonはメニュー項目を見つけて選択できるため、SafariのUser Agent文字列の切り替えなど、アプリケーション機能を制御できます。

7. メニューバー項目とシステムイベント: hs.menubar を使用してカスタムメニューバー項目を作成し、ステータスを表示したりアクションをトリガーしたりできます。また、アプリケーションのアクティベーション (hs.application.watcher)、Wi-Fiネットワークの変更 (hs.wifi.watcher)、USBデバイスの接続 (hs.usb.watcher) などのシステムイベントに応答することも可能です。

8. 高度な自動化: Hammerspoonの機能は、ペーストブロックの解除、AppleScriptの実行、iTunesやSpotifyなどのメディアアプリケーションの制御、視覚的なフィードバックのための画面描画、iMessage/SMSの送信、さらにはURL経由でのHammerspoon自体の自動化まで多岐にわたります。

Hammerspoonはオープンソースソフトウェアの力の証であり、Macユーザーがデジタルライフをカスタマイズし自動化するための比類なき柔軟性を提供します。ぜひ飛び込んで、例を試して、Hammerspoonが日常のコンピューティング体験をどのように変革できるかを発見してください。

この記事を共有