LinuxでVRChat(with Proton)のワールド起動リンクを動かす

2022/03/04追記 : どうやらこの方法だと、インスタンスIDが入ってないリンクでフリーズするみたいです。
対処方法ご存知の方いましたら教えてください... 

# はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/9180dfdc-13b6-0238-1c9e-7f151dd85f8a.png)

SteamでVRChatをインストールすると、普通なら上みたいなページの`LAUNCH WORLD`をクリックするだけで該当のワールドに飛べるようになるはずなんですが、Linuxだとそこらへんの設定が自動で行われないようなのでざっくりその方法を書いておきます。
ちなみに、当方Arch Linuxでやってるので、Ubuntuとかだとまたやり方が違うかもしれないのでご承知おきください。

# 超絶ざっくり説明でわかる人向け

この`LAUNCH WORLD`リンクは`vrchat://`のURLスキームが入ってるので、要は`vrchat://`のURLスキームが開かれたらProton経由でVRChatを開くように`xdg-mime`とかで設定してやればおｋ。

# やり方

## 1. VRChatとProtonのインストール先を確認する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/e42b7214-9707-f3e7-b766-6d3652b96845.png)

SteamからVRChat並びにProton X.X(Xはバージョン番号)を右クリックして、`Properties`を開いて`LOCAL FILES`タブを開くと、`Browse`ってボタンがあるので、それをクリックすると既定のファイルマネージャーがインストール先を開いてくれます。

デフォルトのインストール先のままなら
`/home/[ユーザー名]/.local/share/Steam/steamapps/common/VRChat/`
と
`/home/[ユーザー名]/.local/share/Steam/steamapps/common/Proton X.X/`
のはず


ちなみに、AURからProtonをインストールしている場合は、
`/usr/share/steam/compatibilitytools.d/proton/`
にProtonがインストールされてます。

## 2. VRChatのCOMPAT_DATA_PATHを探す。

基本的には
`[VRChatがインストールされてるSteamライブラリフォルダ]/steamapps/compatdata/[ゲームID(VRChatの場合438100)]`
にあります。

デフォルトなら
`/home/[ユーザー名]/.local/share/Steam/steamapps/compatdata/438100/`
になってるはず。

## 3. デスクトップエントリを作成する。

`~/.local/share/applications/`
または
`/usr/share/applications/`
下にデスクトップエントリを作成します。
名前は`vrchat.desktop`とかが良いと思います。

```terminal
$ vim ~/.local/share/applications/vrchat.desktop
```

して、以下のように記述します。
([ユーザー名]や[VRChatのcompatdata]等は適宜書き換え)
`Exec`の`--no-vr`オプションはVRモードで起動させたい場合は省略してください。

```shell:vrchat.desktop
[Desktop Entry]
Type=Application
Version=1.0 # 多分なくても良い
Name=VRChat
Comment=VR Communication software # 多分なくても良い
Path=[VRChatのインストール先ディレクトリ]
Exec=env STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/[ユーザー名]/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=[VRChatのcompatdata] [protonのインストール先ディレクトリ]/proton run launch.exe --no-vr %u 
Icon=[アイコンのパス] # アイコン用意するの面倒ならなくても良い
Categories=Game; # アプリケーションメニューでカテゴリ分けされなくても良いならなくても良い
MimeType=x-scheme-handler/vrchat;
```

私の場合はこんな感じになりました

```shell:vrchat.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=VRChat
Comment=VR Communication software
Path=/home/ytjvdcm/.local/share/Steam/steamapps/common/VRChat
Exec=env STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/ytjvdcm/.local/share/Steam/ STEAM_COMPAT_DATA_PATH=/home/ytjvdcm/.local/share/Steam/steamapps/compatdata/438100/ /usr/share/steam/compatibilitytools.d/proton/proton run launch.exe --no-vr %u 
Icon=/home/ytjvdcm/Pictures/vrc.png
Categories=Game;
MimeType=x-scheme-handler/vrchat;

```

正常に登録できていれば、各DEのアプリケーションメニューとかにVRChatが増えてるはずです。

## 4. URLスキームを登録

以下のコマンドでURLスキームを登録します。

```terminal
$ xdg-mime default vrchat.desktop x-scheme-handler/vrchat
```

## 5. 起動する。

適当なブラウザで`LAUNCH WORLD`してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/bae1364f-b718-4a06-3cc9-713f4637d84e.png)

こんなのが出てきたら、`プログラムを選択(A)`を選んで

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/9ee60f54-21e0-789b-32cc-7eb24ec41c9d.png)

こんなのが出てきたら、`VRChat`を選んで`リンクを開く(O)`を押して

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/20dee7af-208a-a7da-052c-dd73d7a0bd24.png)

VRChatが起動して
注 : ここで**ウィンドウサイズがデフォルトに戻ってたり**、**さっきまでログインしていたのに何故かログイン画面に飛ばされたり**してたら、多分compatdataのパス指定が間違ってます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144572/9e6e0c76-a197-a40d-2126-74740b8f8820.png)

無事ワールドに入れたら成功です。
お疲れ様でした。

# 参考文献

- [デスクトップエントリ - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA)
- [xdg-utils - ArchWiki](https://wiki.archlinux.jp/index.php/Xdg-utils)
- [Desktop Entry Specification](https://specifications.freedesktop.org/desktop-entry-spec/latest/)