うまく動作しないSteamのショートカットを修正する
Steamのデスクトップショートカットの問題点
macOSでSteamのゲームを遊ぶ時のちょっとした不具合の話です。
Steamはゲームをインストールする時に、ショートカットがデスクトップに作られます。
ショートカットという名称ですが、実態はアプリです。
通常Steamでゲームを遊ぶためには
- Steamを起動する
- Steamのライブラリから目当てのゲームを探す
- Steamからゲームを起動
という手順を踏まなければならないのですが、ショートカットを使えば
- やりたいゲームのショートカットを開く
- ゲーム起動
という、Steamの操作を飛ばした起動手順になるので非常に便利です。
ですが、Steamがあらかじめ起動されていないと、このショートカットはうまく動作しません(Steamだけ起動して、ゲームが起動しない)。
macを使っている間ずっとSteamを起動しているならば問題はないのですが、ゲームしない時はSteamが起動していて欲しくないので、解決策を考えました。
Steamが起動済みでなくても、うまい感じにゲームを起動させる方法
- 上記コードを全て選択してコピー
- スクリプトエディタを起動して、新規書類を開く
- コピーしたコードをペースト
- [app id]部分(上記例では8930)を目当てのゲームのidに書き換える
- ファイルをアプリやスクリプト形式で保存する(名前はゲーム名+launcherとかにしておくとわかりやすい)
[app id]を調べる
- 起動させたいゲームのSteamのページをWebブラウザで開く
- URL文字列の数字部分が[app id]
既存のショートカットの問題点と改良点
Steamのデスクトップショートカットの実態はシェルスクリプトをアプリケーション形式としてラッピングしたものっぽくて、以下のようなコマンドを叩いているだけみたいです。
open steam://run/[app id]
このコマンドはsteam browser protocol という仕組みを利用したものなんですが、Steamが起動していない場合は、「steam://」以降のオプションが引き渡されないで終わってしまうみたいです。
Steamが起動していない時に、オプションを認識してもらいたい時は「open」コマンドのオプションとして指定するのがいいっぽい。
open /Applications/Steam.app --args -start steam://rungameid/[app id]
ただ上記のコマンドはSteamが起動している時はうまく動作しない。
- Steam browser protocolはSteamが起動していないとオプションを認識できない
- openコマンドはSteamが起動しているとオプションを認識できない(既に起動しているので、無効化される?)
Steamが起動しているかどうかを判断して、コマンドを使い分ける必要がある ⇨ AppleScriptでごにょごにょして解決!