Steam Deck のスクリーンショットをクラウドと自動同期する
Steam Deck でスクリーンショットを取ったとき、いちいち内蔵アップローダーでアップロードするのが面倒すぎる。Dropbox などのクラウドストレージに自動で同期してほしい。 systemd のパス監視を使ってファイルが追加されたときだけ同期するので、ゲームへの負荷的な影響はない。
手順
作業はデスクトップモードに移行したうえで SSH 経由で行っている。
Rclone の設定
ローカルとクラウドの同期は Rclone におまかせする。40 以上のクラウドストレージに対応しているので、好きなクラウドと同期できる。僕は Dropbox との同期を設定する。 まずは Rclone をインストールする。といっても、適当な場所にシングルバイナリを配置するだけだ。
code:bash
mkdir ~/.local/bin
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
cp rclone ~/.local/bin
chmod 755 ~/.local/bin/rclone
cd ..
rf -rm rclone-*-linux-amd64*
次にクラウドの設定をする。ここでは Dropbox の設定を進めている。途中でブラウザが立ち上がるので、ここだけは Konsole 上から作業するのが良い。(SSH 経由だとブラウザが立ち上がらない)
code:console
$ ~/.local/bin/rclone config
n) New remote
d) Delete remote
q) Quit config
e/n/d/q> n
name> dropbox
Type of storage to configure.
Choose a number from below, or type in your own value
XX / Dropbox
\ "dropbox"
Storage> dropbox
Option client_id.
OAuth Client Id. Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>
Edit advanced config?
y) Yes
n) No (default)
y/n>
Use web browser to automatically authenticate rclone with remote?
* Say Y if the machine running rclone has a web browser you can use
* Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes (default)
n) No
y/n>
--------------------
app_key =
app_secret =
token = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX_XXXX_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
スクリーンショットの同期設定
スクリーンショットの同期スクリプトを作って ~/.local/bin/sync_pictures.bash に保存する。 chmod +x ~/.local/bin/sync_pictures.bash で実行権限を付けておこう。
code:bash
RCLONE_BIN="${HOME}/.local/bin/rclone"
REMOTE_NAME="dropbox"
REMOTE_DIR="PC/Pictures/SteamDeck"
SOURCE_DIR="${HOME}/Pictures"
${RCLONE_BIN} sync "${SOURCE_DIR}" "${REMOTE_NAME}:${REMOTE_DIR}"
いったん同期スクリプトを実行して、正常に完了するか確認しておく。自分は初回同期時に SOURCE_DIR が空だったので、クラウド側 REMOTE_DIR の中身が全部削除された。
以下の内容を ~/.config/systemd/user/sync_pictures.service に書き込む。
code:ini
Description=Sync Steam Screenshots
Type=oneshot
ExecStart=%h/.local/bin/sync_pictures.bash
以下の内容を ~/.config/systemd/user/sync_pictures.path に書き込む。
code:ini
Description=Sync Steam Screenshots
PathModified=%h/Pictures
Unit=sync_pictures.service
WantedBy=default.target
systemd Unit を有効にして起動する。
code:bash
sudo systemctl daemon-reload
systemctl --user enable sync_pictures.path
systemctl --user start sync_pictures.path
ちゃんと起動しているか確認しよう。
code:console
$ systemctl --user status sync_pictures.path
● sync_pictures.path - Sync Steam Screenshots
Loaded: loaded (/home/deck/.config/systemd/user/sync_pictures.path; enabled; preset: enabled)
Active: active (waiting) since Sun 2023-03-19 09:59:13 JST; 32s ago
Until: Sun 2023-03-19 09:59:13 JST; 32s ago
Triggers: ● sync_pictures.service
Mar 19 09:59:13 steamdeck systemd1048: Started Sync Steam Screenshots. ファイルを作ってみて、クラウドに同期されるか確認する。
code:bash
touch ~/Pictures/test
Steam 側のスクリーンショット保存設定
デスクトップモードで Steam の設定を起動して、「ゲーム中」のスクリーンショットフォルダを Pictures に設定する。あと、圧縮されていないコピーを保存するにチェックを入れる。これをしないと設定したフォルダに保存されない。
https://gyazo.com/8bd01389f66b7fafcee1c068f9c77d60
ゲームモードに戻って完了
Steam + R1 でスクリーンショットを取ってみよう。自動的にクラウドに同期されるはずだ。
https://gyazo.com/c977e4bd3a7571ea1eafdb8a803581dd