Ubuntu 24.04 における Chrome Remote Desktop 音声対応構築
これもマニア向けCRDインストール忘備録です
ステップ1: CRD のインストールと動作確認
ステップ2: /opt/google/chrome-remote-desktop の改変(同一セッション使用)
以下のように /opt/google/chrome-remote-desktop/chrome-remote-desktop
を編集。
FIRST_X_DISPLAY_NUMBER = 20
↓
FIRST_X_DISPLAY_NUMBER = 0
該当部分をコメントアウト:
# while os.path.exists(X_LOCK_FILE_TEMPLATE % display):
# display += 1
# self._launch_server(server_args)
# if not self._launch_pre_session():
# self.launch_desktop_session()
display = self.get_unused_display_number()
self.child_env["DISPLAY"] = ":%d" % display
ステップ3: CRD が作成する FIFO へ PipeWire 音声を転送
/run/user/1000/crd_audio#XXXXX/fifo_output
)が作成されるpactl load-module module-pipe-sink file=/run/user/1000/crd_audio#*/fifo_output
sink_name=chrome_remote_desktop_session
paplay --device=chrome_remote_desktop_session /usr/share/sounds/freedesktop/stereo/complete.oga
ステップ4: 仮想 Sink 自動検出・登録スクリプトの作成
~/.config/crd-audio/load-crd-sink.sh
を作成:
#!/bin/bash
FIFO=$(ls -d /run/user/$(id -u)/crd_audio#*/fifo_output 2>/dev/null | head -n1)
[ -n "$FIFO" ] && pactl load-module module-pipe-sink file="$FIFO"
sink_name=chrome_remote_desktop_session
権限付与:
chmod +x ~/.config/crd-audio/load-crd-sink.sh
ステップ5: systemd --user による仮想 Sink 自動起動
~/.config/systemd/user/crd-audio-sink.service
を作成:
[Unit]
Description=Load CRD virtual audio sink
After=default.target
[Service]
Type=oneshot
ExecStart=%h/.config/crd-audio/load-crd-sink.sh
[Install]
WantedBy=default.target
有効化と起動:
systemctl --user daemon-reload
systemctl --user enable --now crd-audio-sink.service
ステップ6: 動作確認と再起動後の永続性チェック
- CRD で GNOME 同一セッションが表示されること
- 接続後に FIFO が自動検出され仮想 Sink が登録されていること
- 音声出力が
chrome_remote_desktop_session
へ流れていること(例:YouTube 再生) - 再起動後も自動的に音声が出力されること
構成図(概要)
[ PipeWire Audio Apps ] │ ▼ [module-pipe-sink] → /run/user/1000/crd_audio#/fifo_output → CRD → Remote Client
補足事項
- PipeWire 1.0.5 で動作確認
- CRD 公式は仮想セッションを想定しているため、同一セッション構成は非公式改変
まとめ
この手順により、Ubuntu 24.04 における Chrome Remote Desktop で「同一セッション + 音声対応」を安定構築できます。 PipeWire を活かし、仮想 Sink → FIFO 経由で CRD に音声を転送します。systemd --user による自動化も含め、完全自動構成を実現しています。
その忘備録です
Ubuntu 24.04でChrome Remote Desktopをローカルセッション&音声付きで使う方法(PipeWire対応)
🎯 やりたいこと
Ubuntu 24.04 環境で 既存のローカルセッション(:0)に Chrome Remote Desktop(CRD)で接続し、さらに PipeWire を使って音声もリモート転送する環境を構築します。
- 仮想XやXfce不要
- GNOMEそのまま使える
- 音声もリモート転送(YouTube再生OK)
- systemdで自動起動&永続化
🧩 構成図
[アプリ音声]
↓
[PipeWire/PulseAudio]
↓
[仮想 Sink: chrome_remote_desktop_session]
↓
[FIFO: /run/user/1000/crd_audio#XXXX/fifo_output]
↓
[Chrome Remote Desktop]
↓
[クライアントに音声配信]
🛠 手順一覧
① CRD 本体スクリプトのカスタマイズ
ファイル: /opt/google/chrome-remote-desktop/chrome-remote-desktop
DISPLAY番号を :0 に固定:
FIRST_X_DISPLAY_NUMBER = 0
仮想Xサーバー起動をスキップ:
# self._launch_server(server_args)
# if not self._launch_pre_session():
# self.launch_desktop_session()
display = self.get_unused_display_number()
self.child_env["DISPLAY"] = ":%d" % display
音声のみ有効化:
host_id = self.host_config.get("host_id")
self.setup_audio(host_id, backoff_time)
② PipeWire用 Sink ノードをpipewire.confに追記
ファイル: /run/user/1000/crd_audio#XXXX/pipewire.conf
の末尾(context.objects
内)に追加:
{ factory = spa-node-factory
args = {
factory.name = support.node.sink
node.name = "fifo_output"
media.class = "Audio/Sink"
audio.format = "S16LE"
audio.rate = 48000
audio.channels = 2
audio.position = [ FL FR ]
stream.props = {
node.name = "chrome_remote_desktop_session"
node.description = "Chrome Remote Desktop FIFO Output"
}
device = {
object.path = "/run/user/1000/crd_audio#XXXX/fifo_output"
}
}
}
③ 自動化スクリプトの作成
ファイル: ~/.config/crd-audio/load-crd-sink.sh
#!/bin/bash
FIFO=$(ls -d /run/user/1000/crd_audio#*/fifo_output 2>/dev/null | head -n1)
if [ -n "$FIFO" ]; then
pkill -f pipewire.*crd_audio
sleep 5
pactl load-module module-pipe-sink file="$FIFO" sink_name=chrome_remote_desktop_session
conf_dir=$(dirname "$FIFO")
pipewire -c "$conf_dir/pipewire.conf" &
else
echo "FIFO not found after timeout"
exit 1
fi
作成後は実行権限を付与し、所有者をユーザー自身に変更:
chmod +x ~/.config/crd-audio/load-crd-sink.sh
sudo chown $USER:$USER ~/.config/crd-audio/load-crd-sink.sh
④ systemd ユーザーサービスで自動起動
ファイル: ~/.config/systemd/user/crd-audio-sink.service
[Unit]
Description=Load CRD virtual audio sink
After=chrome-remote-desktop@$user.service
Requires=chrome-remote-desktop@$user.service
[Service]
ExecStart=/home/$user/.config/crd-audio/load-crd-sink.sh
Restart=on-failure
[Install]
WantedBy=default.target
有効化:
systemctl --user daemon-reload
systemctl --user enable --now crd-audio-sink.service
✅ 確認方法
FIFO が生成されているか:
ls /run/user/1000/crd_audio#*/fifo_output
Sink が登録されているか:
pactl list short sinks
音声テスト:
paplay --device=chrome_remote_desktop_session /usr/share/sounds/freedesktop/stereo/complete.oga
📌 まとめ
- 仮想X不要、GNOMEそのままで接続
- PipeWire経由で音声をFIFOに転送
- systemdユーザーサービスで再起動後も自動化
💬 最後に
この構成は非常にニッチかつ便利です。Xfceや仮想セッションの導入なしに、既存のデスクトップをそのまま音声付きでリモート操作できます。PipeWire環境でCRDを最大限活用したい方におすすめです。
- 今日:
- 昨日:
- 累計: