リモートで使っているPCはWindows10ですがサポートが秋までとの事で11にするかどうか又はUbuntuにしてしまおうかと思いUbuntuのインストール、リモート用にCHROME REMOTE DESUKTOPを設定していましたが音が鳴らないので困っていましたがChatGPTが解決してくれました
その忘備録です
Ubuntu 24.04でChrome Remote Desktopをローカルセッション&音声付きで使う方法(PipeWire対応)
その忘備録です
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を最大限活用したい方におすすめです。