うまく動作しないSteamのショートカットを修正する

2018年8月6日

Steamのデスクトップショートカットの問題点

macOSでSteamのゲームを遊ぶ時のちょっとした不具合の話です。

Steamはゲームをインストールする時に、ショートカットがデスクトップに作られます。

ショートカットという名称ですが、実態はアプリです。

通常Steamでゲームを遊ぶためには

  1. Steamを起動する
  2. Steamのライブラリから目当てのゲームを探す
  3. Steamからゲームを起動

という手順を踏まなければならないのですが、ショートカットを使えば

  1. やりたいゲームのショートカットを開く
  2. ゲーム起動

という、Steamの操作を飛ばした起動手順になるので非常に便利です。

ですが、Steamがあらかじめ起動されていないと、このショートカットはうまく動作しません(Steamだけ起動して、ゲームが起動しない)。

macを使っている間ずっとSteamを起動しているならば問題はないのですが、ゲームしない時はSteamが起動していて欲しくないので、解決策を考えました。

Steamが起動済みでなくても、うまい感じにゲームを起動させる方法

  1. 上記コードを全て選択してコピー
  2. スクリプトエディタを起動して、新規書類を開く
  3. コピーしたコードをペースト
  4. [app id]部分(上記例では8930)を目当てのゲームのidに書き換える
  5. ファイルをアプリやスクリプト形式で保存する(名前はゲーム名+launcherとかにしておくとわかりやすい)

[app id]を調べる

  1. 起動させたいゲームのSteamのページをWebブラウザで開く
  2. 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が起動している時はうまく動作しない。

  1. Steam browser protocolはSteamが起動していないとオプションを認識できない
  2. openコマンドはSteamが起動しているとオプションを認識できない(既に起動しているので、無効化される?)

Steamが起動しているかどうかを判断して、コマンドを使い分ける必要がある ⇨ AppleScriptでごにょごにょして解決!