One
透過 VNC 遠端管理 Steam Deck

本文亦提供以下語言版本: English


Steam Deck 實際上就是一台內建了遊戲控制器的小型遊戲用個人電腦,搭載了類似遊戲主機介面的「遊戲模式」(Gaming Mode)來取代傳統電腦的「桌面模式」(Desktop Mode)。不過很難想像玩家們會願意為了它放棄自己的非 Steam 遊戲收藏,亦或那些目前不相容於 Steam 官方 Proton 轉譯層的遊戲。更多時候你會發現你需要經常性的在兩個模式間切換,但在 7 吋大的螢幕上使用桌面模式實在不是一個理想的方式;如果不想要被虛擬鍵盤佔據一半的螢幕,你還會需要一副額外的實體鍵盤。這些聽起來對於「玩遊戲」這件事而言實在有些繁瑣。

幸運的是,SteamOS 3.x 本質上就是一個客製化版本的 Arch Linux,我們可以利用既有的 Linux 工具來讓我們的生活更容易一些:在你的電腦上遠端管理 Steam Deck 的桌面模式。

切換至桌面模式

為了要安裝非 Steam 官方的軟體,我們需要先將主機切換至桌面模式。在 Steam Deck 上按一下 鍵,接著於選單中選擇「電源 > 切換至桌面」。桌面模式目前僅有英文介面。

切換至桌面模式 按一下 鍵 > 電源 > 切換至桌面。

設定使用者密碼

桌面模式中預設的使用者帳號 (deck) 並沒有設定密碼。不過為了之後要進行的操作所需我們必須先為它設置一個密碼。我們可以透過 SteamOS 的圖形介面(GUI)進行設定。這項操作建議使用外接鍵盤,但你也可以透過遊戲控制器上的 + 組合鍵叫出虛擬鍵盤來使用。

變更密碼 透過「Application Launcher > Settings > System Settings > Users > Your Account > Change Password」來設定密碼。

如果你偏好使用指令介面(CLI),也可以在 Konsole (位於「Application Launcher > System > Konsole」)中透過 passwd 指令來變更密碼。請注意指令介面下輸入的密碼不會顯示,輸入完後只要按下 [Enter] 鍵完成設定即可:

(deck@steamdeck ~)$ passwd
New password:
Retype new password:
passwd: password updated successfully

開啟 Secure Shell(SSH)

取自維基百科:

Secure Shell (簡稱 SSH)是一種加密的網路傳輸協定,可在不安全的網路中為網路服務提供安全的傳輸環境。常見的用途是遠端登入系統和遠端執行命令。

SteamOS 內建了 SSH 服務但基於安全原因預設為停用。如果想要透過指令模式在電腦上遠端操作 Steam Deck,你可以選擇將它開啟。此步驟為選擇性。

開啟的方式為在 Konsole 內使用下列指令,並依照提示輸入上一步中我們設定好的使用這密碼:

(deck@steamdeck ~)$ sudo systemctl enable sshd.service
Created symlink /etc/systemd/system/multi-user.target.wants/sshd.service → /usr/lib/systemd/system/sshd.service.
(deck@steamdeck ~)$ sudo systemctl start sshd.service

「Enable」表示服務將會在下次開機起隨系統自動啟動,而「Start」表示會在目前的工作階段啟用服務。要停用或停止運行中的 SSH 服務,只需要將指令中的對應參數改為 disablestop 即可。基於安全因素,建議在不使用時將此服務關閉。

Decky Loader

SteamOS 在系統更新時會將 /home(使用者個人目錄,包含系統本身以外的使用者相關的資料和設定值)之外的系統檔案全部還原回初始狀態,上述的變更在每次系統更新後都需要再次執行。如果不想要每次更新後都重複這些步驟(記錄顯示,SteamOS 在首年內推出了 90 次系統更新),可以考慮安裝「Decky Loader」和其中的「System Toolbox」套件以便直接在遊戲模式下開啟或關閉 SSH 服務,且不用擔心系統更新後需要重新手動設定。

Decky Loader Decky Loader 和 System Toolbox 套件。

設置 Virtual Network Computing(VNC)

取自維基百科:

Virtual Network Computing(簡稱 VNC),為一種使用 RFB 協定的圖形化桌面分享及遠端操作軟體。此軟體藉由網路,可傳送鍵盤與滑鼠的動作及即時的螢幕畫面。

簡而言之,它可以讓你在電腦上遠端操作你的 Steam Deck 桌面模式。SteamOS 目前無任何內建的 VNC 伺服器,也未在 Flathub(系統內建的 App Store)內提供,所以我們必須要透過 Arch Linux 的套件管理工具 pacman 來安裝。

有鑒於這個流程及其冗長乏味且每次系統更新後都需要重新執行,這裡提供一個自動化指令代碼。只要將下方的指令貼在 Konsole 內執行(需要網路連線。另外,由於 GitHub 網址路徑很長,你可以選擇直接於 Steam Deck 桌面模式中的瀏覽器內瀏覽本文章來複製貼上這行指令,或者透過 SSH 來執行):

sh -c "$(curl -fsSL https://gist.githubusercontent.com/x43x61x69/9a5a231a25426e8a2cc0f7c24cfdaed9/raw/vnc_install.sh?$RANDOM)"

這個指令代碼會為再次安裝建立快捷方式,往後將不會再需要複製此指令。一旦執行完成,桌面上將會出現一個新的「VNC」資料夾,其中包含所有你需要的功能快捷方式,需要時只要雙擊圖示即可。例如:雙擊「Start VNC」將會啟動 VNC 服務(螢幕上不會顯示任何東西,但實際上有在運行)。現在你可以透過 VNC 檢視程式來遠端連線至 Steam Deck 的 IP 位置。在 macOS 中,內建了一個名為「螢幕共享」的 VNC 檢視程式:

螢幕共享 透過 macOS 內建的「螢幕共享」來遠端存取 Steam Deck。

這個指令代碼包含什麼功能?

  • 自動開啟與關閉 SteamOS 系統的唯讀保護。
  • 初始化 pacman 的金鑰。
  • 安裝 x11vnc 伺服器。
  • 建立啟動與停用 VNC 服務的快捷方式。
  • 建立重設 VNC 密碼的快捷方式。
  • 建立系統更新後重新安裝 VNC 快捷方式。
  • 建立登入後自動啟動 VNC 服務的指令代碼。

只個指令代碼可以安全地重複執行,所以不必擔心初期操作失敗。

啟動後自動執行

部分的人會建議設置一個系統服務來讓 VNC 服務自動啟動。但為求簡潔起見,這裡建議透過圖形介面來設定:

  • Application Launcher > System > System Settings > Startup and Shutdown > + Add… > Login Script.
  • 選擇桌面「VNC」資料夾中的「vnc_startup.sh」。

啟動指令代碼

當然,這個步驟是選擇性的。你也可以選擇透過快捷方式手動啟用或停用 VNC 服務。