快轉到主要內容

Moonlight自動調整Linux遠端桌面解析度,解決黑邊問題

分類   Linux系統 Self-hosting自架
標籤   Moonlight Game Streaming Linux
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

問題點:Moonlight遠端Linux桌面解析度與客戶端不符,導致文字看起來太小或者出現黑邊。我希望可以像TeamViewer那樣自動縮放,將遠端Linux桌面的解析度調整為客戶端解析度。

從這樣

變成這樣

Moonlight客戶端雖然可以指定解析度,但是電腦端的Sunshine並不會跟著變化。所以我們得設定hook,利用Sunshine的「Custom Application」功能,自訂啟動桌面後執行指令,自動執行xrandr調整解析度與縮放,關閉遠端桌面之後再自動切回去。

本文討論的內容僅適用X11,因為Wayland沒有統一調整桌面解析度的指令。

1. 測試xrandr指令
#

以我的情況來說,客戶端iPad Air 6的解析度是2360x1640,比例大約是3:2。如果不追求這麼高畫質,那麼用同為3:2比例的1475x1025就夠了(iPad解析度除以1.6)。

因為如果直接設定為2360x1640的話,電腦顯示器必須支援2K以上解析度否則會「超出範圍」,還有高解析度得設定全域螢幕縮放,字在iPad才不會看起來太小。直接用低解析度就不用再設定全域螢幕縮放了。

於Sunshine後台設定前,先手動執行一次xrandr指令,確認真的能修改解析度再繼續。

  1. Ubuntu安裝以下套件
sudo apt install x11-xserver-utils
  1. 一般16:9的螢幕不會支援3:2這種比例,所以得強制新增Modeline。使用cvt指令計算1475x1025的Modeline所需參數,取整後解析度會略有變化,變成1480x1025
cvt -r 1475 1025 60
  1. 新增Modeline
xrandr --newmode "1480x1025R"  103.50  1480 1528 1560 1640  1025 1028 1038 1055 +hsync -vsync
  1. 查看目前使用的螢幕為何
xrandr -q
  1. 將Modeline新增到HDMI-1
xrandr --addmode HDMI-1 "1480x1025R"
  1. 指定解析度。螢幕應該會閃一下之後螢幕被拉伸。
xrandr --output HDMI-1 --mode "1480x1025R"
  1. 如果要設定全域縮放1.5倍的話:
xrandr --output HDMI-1 --mode "1480x1025R" --scale 1.5x1.5
  1. 重設螢幕解析度為1920x1080:
xrandr --output HDMI-1 --mode "1920x1080"

2. 調整Sunshine後台的指令
#

  1. 我們新增指令稿,第一個是變更解析度
vim ~/.local/bin/changeresolution.sh
  1. 填入指令:
xrandr --newmode "1480x1025R"  103.50  1480 1528 1560 1640  1025 1028 1038 1055 +hsync -vsync

xrandr --addmode HDMI-1 "1480x1025R"

xrandr --output HDMI-1 --mode "1480x1025R"
  1. 再來是重置解析度的指令稿
vim ~/.local/bin/resetresolution.sh
  1. 填入指令:
xrandr --output HDMI-1 --mode "1920x1080"
  1. 賦予執行權限
chmod +x ~/.local/bin/changeresolution.sh
chmod +x ~/.local/bin/resetresolution.sh
  1. 安裝Sunshine伺服器。

  2. 開啟後台的Applications頁面,點選Desktop(你也可以另外新增其他程式)

  3. 找到Do Command和Undo Command欄位

  4. 填入指令稿的絕對路徑:bash /home/user/.local/bin/changeresolution.shbash /home/user/.local/bin/resetesolution.sh

  5. 點選下方Save

  6. 用Moonlight連線前需要把解析度設定為Full以符合iPad解析度。

  7. 點選Desktop,電腦解析度應該就會自動變化了。

  8. 要觸發解析度重置,必須點Quit APP中止桌面工作階段。

相關文章

Sunshine:Linux版Moonlight教學,自架免費雲端串流遊戲服務+遠端桌面
分類   Linux系統 Self-hosting自架 Linux玩遊戲
標籤   Moonlight Game Streaming Cloud Gaming Remote Desktop Steam Linux
用RustDesk連線到headless的樹莓派Linux伺服器
分類   Linux系統 Self-hosting自架
標籤   RustDesk Remote Deskop Linux X Window Raspberry Pi
Cockpit教學:用網頁瀏覽器管理QEMU/KVM虛擬機,替代Virt Manager
分類   Linux系統 Self-hosting自架
標籤   Libvirt PCI Passthrough GPU Passthrough QEMU-KVM Podman Docker Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。