Use a tablet as a second monitor for PC wirelessly with Moonlight + Sunshine.
介紹如何使用Moonlight串流遠端的虛擬顯示器,達成用平板當作電腦第二螢幕(無線延伸螢幕)的目的。
用來當第二螢幕的平板可以是Android平板、iPad、Windows Surface平板、Linux平板、Switch……反正只要能裝Moonlight客戶端的機器就行。
圖例,用Moonlight當作Linux電腦的第二螢幕,iPad平板成為電腦的延伸桌面,視窗可以在二者之間移動。
圖例,用Moonlight當作Windows電腦的第二螢幕,iPad平板成為電腦的延伸桌面,且能夠使用觸控筆筆壓繪圖。
本文的目的與專有軟體Duet Display、Spacedesk、ASUS GlideX相同,可作為開源免費的替代方案。
1. 說明#
簡言之,此方案就是遠端桌面軟體擷取電腦螢幕。
遠端桌面軟體百百款,為何我要用Moonlight?目的主要盡可能低延遲,並且要是開源免費、跨平台的方案。
一開始我是用 Weylus方案,但是它偏向Linux設計的,Windows抓不到多個螢幕,且瀏覽器運作效能不佳,所以改用Moonlight。
選用Moonlight的原因是它針對串流遊戲最佳化的,即使是用Wifi連線延遲也很低,效能比RDP和VNC好很多,支援HDR,且電腦音效可串流到平板播放。
其實要讓平板當電腦第二螢幕,還有 USB擷取卡的作法,Moonlight比它好的地方在於它是能夠無線運作的,而且延遲也不會輸給擷取卡。
區域Wifi網路串流大多數情況下都能有60FPS,因此Moonlight不只可以當電腦第二螢幕,還可以播放影片。
Moonlight當作遠端桌面的時候,支援觸控滑鼠功能和模擬遊戲手把,如果有觸控筆的話電腦端也能接受到筆壓。
不過,Moonlight預設擷取的是電腦主螢幕的畫面,若直接串流的話就變成「鏡射模式」了。我們要讓平板上Moonlight的視窗當作電腦「第二螢幕」,從而達到「延伸螢幕」的效果,就得生一個「假螢幕」出來,讓Moonlight改擷取那個螢幕。
原理圖如下:
2. 如何製作假的第二螢幕#
此處介紹各種方案,包含硬體模擬方法與軟體模擬方法。
HDMI欺騙器#
這是最簡單的方式,HDMI欺騙器是只有隨身碟大小的螢幕,能夠讓電腦以為真的有接上顯示器。
適用各大作業系統。買個HDMI欺騙器插在獨顯的孔上,就有第二個螢幕能給Moonlight擷取了。
Linux#
X11環境下,可以用 xrandr指令做個virtual display出來。
Wayland環境的話,GNOME有 RDP Screen Share Mode,KDE則是有 krfb-virtualmonitor(但是Sunshine似乎不認這些手段所生出來的假螢幕)
Windows#
安裝 Virtual Display Dirver軟體,即可獲得一個假螢幕。
3. 安裝Sunshine伺服器#
請安裝Sunshine串流伺服器,這個版本適用Intel、AMD、Nvidia、Apple Silicon顯示卡。
Linux安裝教學 見此。
Windows安裝教學 見此。
4. 連線到Sunshine遠端桌面#
讓平板與電腦處在同一個Wifi網路下。
開啟Sunshine網頁後台界面,找到Configuration → Audio/Video,設定要擷取的螢幕。
Linux:使用指令journalctl --user-unit sunshine
就會看到Detecting monitor...
的訊息,再填入螢幕的數字。通常編號0就是電腦主螢幕,而我們要擷取的是第二個假螢幕,所以在Monitor number的欄位填入1。
Windows:請開啟「Window終端機」,執行指令:& C:\Program Files\Sunshine\tools\dxgi-info.exe
,列出所有螢幕名稱,再於Output Name欄位填入\\.\DISPLAY
開頭的螢幕名稱。
之後按下Apply重啟Sunshine伺服器。
在平板下載 Moonlight客戶端,與電腦的Sunshine伺服器配對。
開始串流之後,Moonlight應該就會抓到那個第二螢幕的畫面了!
如果不想要Moonlight串流音訊的,於客戶端的設定將「串流時將主機電腦的喇叭靜音」的選項關閉。
比較可惜的是,Moonlight手機版似乎強制固定橫向,所以平板沒辦法直向顯示電腦畫面。
5. Moonlight使用筆壓#
以Apple Pencil搭配Krita為例。
Linux版Krtia可以偵測到筆壓。
Windows無法使用筆壓可能是WinTab的問題,開啟Krita設定,將驅動改用Windows Ink並重新啟動程式就可以了。