📁

macOS Tahoe (v26)で"Visual Code Studioで開く"を作る

に公開

この記事を書いた理由

macOS 26以前ではFinderのツールバーでVSCodeを開けるAutomatorを使用していたのですが、仕様変更によりツールバーにAutomatorを設置できなくなってしまい動かず、さらに元からあるクイックアクションの"Visual Studio Codeで開く"も使えないためそれの代替案を考え、同じ悩みで困っている方の手助けになればと思いこの記事を書きました。

結論

Automatorは使用せず、ショートカットを使用して、フォルダ右クリック→クイックアクション→VSCodeで開くを実行できるようにしました。

ショートカットを作成

ショートカット.appを開き、ショートカットを新規作成します。
名称はVSCodeで開くなど好きな名前を設定してください。
ショートカットアプリの設定画面
右上のⓘをクリックし、Finderを有効化する

ショートカットアプリの設定画面
受け取る内容を"フォルダ"のみにする

シェルスクリプトを実行を追加し、以下のコードを入力

# PATH補強(Shortcuts経由だと PATH が最小限になりがち)
PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"

# 現在のログインユーザー名を取得
USER_NAME="$(stat -f %Su /dev/console)"
USER_HOME="/Users/$USER_NAME"

# codeコマンドが使える場合はそれを優先
if command -v code >/dev/null 2>&1; then
  sudo -u "$USER_NAME" /usr/bin/env -i HOME="$USER_HOME" PATH="$PATH" \
    code -n \
      --user-data-dir="$USER_HOME/Library/Application Support/Code" \
      --extensions-dir="$USER_HOME/.vscode/extensions" \
      "$@"
else
  sudo -u "$USER_NAME" /usr/bin/open -na "Visual Studio Code" --args \
    --user-data-dir="$USER_HOME/Library/Application Support/Code" \
    --extensions-dir="$USER_HOME/.vscode/extensions" \
    "$@"
fi

詳細設定は以下のように設定する

シェル:zsh /bin/zsh
入力:ショートカットの入力
入力を渡す方法:引数として
管理者として実行:✅

動かしてみる

動かしてみる
作成したショートカットが表示され、実行するとVSCodeが立ち上がり、開くことができました。

つまづいたこと

完成のコードを入力する前に以下のコードで試したらエラーが出ました。

エラーコード

PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"

if command -v code >/dev/null 2>&1; then
  /usr/bin/env -i HOME="$HOME" PATH="$PATH" code -n "$@"
else
  /usr/bin/open -n -a "Visual Studio Code" "$@"
fi

日本語訳

プログラムのユーザーデータを書き込めません。

システムエラーが発生しました (EACCES: アクセス拒否,
mkdir/var/root/Library/ApplicationSupport/Code/CachedData/385651c938df8a906869babee516bffdOddb9829')以下のディレクトリが書き込み可能であることを確認してください:~/Library/Application Support/Code~/vscode/extensions

エラー直すのに試した方法

壊れた権限を直す

sudo chown -R "$USER" ~/Library/Application\ Support/Code ~/.vscode

スクリプトを書き換える(完成系と同じものです)

# シェル: /bin/zsh
# 入力を引数として渡す: ON

# PATH補強(Shortcuts経由だと PATH が最小限になりがち)
PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"

# 現在のログインユーザー名を取得
USER_NAME="$(stat -f %Su /dev/console)"
USER_HOME="/Users/$USER_NAME"

# codeコマンドが使える場合はそれを優先
if command -v code >/dev/null 2>&1; then
  sudo -u "$USER_NAME" /usr/bin/env -i HOME="$USER_HOME" PATH="$PATH" \
    code -n \
      --user-data-dir="$USER_HOME/Library/Application Support/Code" \
      --extensions-dir="$USER_HOME/.vscode/extensions" \
      "$@"
else
  sudo -u "$USER_NAME" /usr/bin/open -na "Visual Studio Code" --args \
    --user-data-dir="$USER_HOME/Library/Application Support/Code" \
    --extensions-dir="$USER_HOME/.vscode/extensions" \
    "$@"
fi

無事に動くようになりました

Discussion