Ghostty on macOS を URI ssh:// に対応させる備忘録

Environment
Photo by hyt.

Ghostty on macOS を URI ssh:// に対応させる備忘録です.

結論から書くと,

AppleScript と組み合わせて実現!

します.

Amazon.co.jp: Ghostty完全入門: GPUで動く次世代ターミナルの導入から日本語環境構築まで eBook : Ren: Kindleストア
Amazon.co.jp: Ghostty完全入門: GPUで動く次世代ターミナルの導入から日本語環境構築まで eBook : Ren: Kindleストア

何をしたいのか?

タイトルの通りですが,念のためもう少し詳しく書くと,ブラウザで ssh://mypc.local のようなリンクをクリックすると,そのURLを受け取って ghostty の新しいウィンドウで ssh コマンドとして実行します.これにより,ssh 接続先をブックマーク等で管理したい訳ですね.

なお,macOS の terminal の場合ははじめからこの動作ですし,老舗の iTerm2 を使う場合も,

  1. preferences/setting を開く(Cmd + , )
  2. Profile を開く
  3. General タブを開く
  4. URL schemes セクションの ssh チェックボックスを有効化する
  5. macOS で iTerm2 を ssh のデフォルトハンドラとして設定する

で可能です.

Amazon.co.jp: Ghostty完全入門: GPUで動く次世代ターミナルの導入から日本語環境構築まで eBook : Ren: Kindleストア
Amazon.co.jp: Ghostty完全入門: GPUで動く次世代ターミナルの導入から日本語環境構築まで eBook : Ren: Kindleストア

設定の詳細

前提条件

Ghostty のネイティブ AppScript 対応機能を利用していますので,Ghostty は ver 1.3.0 以降でなければならないようです.

AppleScript

macOS のスクリプトエディタに,

on open location this_URL
  set ssh_cmd to "ssh " & quoted form of this_URL
  
  tell application "Ghostty"
    set cfg to new surface configuration
    set command of cfg to ssh_cmd
    new window with configuration cfg
    activate
  end tell
end open location

入力します.ssh セッション切断後もウィンドウを閉じないままにしたい場合は,set ssh_cmd … を

set ssh_cmd to "/bin/zsh -c \"ssh " & quoted form of this_URL & " ; exec zsh\""

に書き換えてください.その後,このコードをスクリプトファイルではなく「アプリケーション」として書き出してください.なお,アプリ起動時に「press Run to run this script」と聞かれたくない場合は,アプリとして書き出すときに「起動画面を表示」のチェックが外れているか確認してください.

なお,ターミナルから,

# アプリケーションフォルダに保存している場合のコマンド
defaults write "/Applications/Ghostty SSH Handler.app/Contents/Info" OSAAppletShowStartupScreen -bool false

のようにする方法もあるようですが,これをしてしまうと,次の URI スキームの登録で編集する Info.plist がバイナリ化されてしまい,編集できなくなってしまうことに注意してください(URI スキーム登録後であれば問題ないと思います).

以下,アプリ名を「Ghostty SSH Handler」としたとして続けます.

URI スキームの登録

Finder で保存した Ghostty SSH Handler.app を右クリックして「パッケージの内容を表示」を選択します.

Contents フォルダ内の Info.plist をエディタで開き,ファイルの最後にある </dict> と </plist> の直前に以下のコードを挿入して上書き保存します.

CFBundleURLTypes    
        CFBundleURLName
        SSH Handler
        CFBundleURLSchemes
            ssh

あとはこのアプリを1度だけダブルクリックして起動すればハンドラが登録され,以後,Chrome などで ssh://mypc.local などの URL をクリックすれば Ghostty 経由で ssh 接続できるはずです.しかし,この場合は macOS の Dock(ドッグ)に「Ghostty SSH Handler」が残ってしまい,正直ちょっと目障りなので,以下,これを表示させないよう設定します.

Dock(ドッグ)に表示させないようにする

これは以下のコマンドをターミナルから実行するだけです.なお,Ghostty SSH Handler.app アプリを /Application フォルダに保存しているとします.

# 書き込み
defaults write "/Applications/Ghostty SSH Handler.app/Contents/Info" LSUIElement -bool true
defaults write "/Applications/Ghostty SSH Handler.app/Contents/Info" LSBackgroundOnly -bool true

# 書き込みチェック(1が帰ってくれば正常に書き込めている)
defaults read "/Applications/Ghostty SSH Handler.app/Contents/Info" LSUIElement
defaults read "/Applications/Ghostty SSH Handler.app/Contents/Info" LSBackgroundOnly

以上!

アジャイルサムライ−達人開発者への道− | Jonathan Rasmusson, 西村 直人, 角谷 信太郎, 近藤 修平, 角掛 拓未 |本 | 通販 | Amazon
AmazonでJonathan Rasmusson, 西村 直人, 角谷 信太郎, 近藤 修平, 角掛 拓未のアジャイルサムライ−達人開発者への道−。アマゾンならポイント還元本が多数。Jonathan Rasmusson, 西村 直人, 角...
Environment
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました