桌上型電腦和筆電使用Linux,不論是Ubuntu還是Arch,都會遇到字太小需要放大,或是螢幕需要縮小的情況。
螢幕解析度超過1080p的HiDPI螢幕,Linux可能就會有縮放(scale)問題。
這邊列出一些解決方式,並討論如何給個別APP縮放大小。
這裡使用的通訊協定為X,儘管未來Wayland是主流。據說Wayland未來會改善縮放問題,不過目前KDE Wayland尚有縮放字體模糊的問題,此外Nvidia驅動支援不完善,所以日常使用我仍是以X為主。
1. 全域螢幕縮放
1.1. GNOME
如果覺得GNOME的界面太小,就到系統設定→無障礙輔助,開啟「大型文字」。
此功能對小尺寸的螢幕很有效。
如果想要使用特定螢幕縮放比例,需要額外安裝gnome-tweaks
套件,在應用程式列表找到「調校」才能使用非整數倍縮放(Fractional Scaling)。注意此縮放方式可能導致效能降低。
1.2. KDE
在KDE的系統設定→顯示與螢幕設定全域縮放比例。
調整比例需重新開機才會生效。
系統設定→外觀,細調字型大小。
1.3. xrandr指令
除了用圖形界面調縮放比例外,用xrandr指令直接改縮放比例也是可以的。xrandr指令能夠設定螢幕方向、解析度、縮放比例。如果需要連接多個顯示器,xrandr的指令會很有用。
取得目前螢幕的代號
|
|
縮放比例為目前螢幕的縮放比例乘算,假如目前螢幕是100%縮放,1.25就是縮放為125%。
|
|
多個顯示器能個別指定縮放比例
|
|
2. 個別應用程式縮放
不縮放整個螢幕,而是讓個別應用程式以特定縮放比例開啟。
2.1. 使用run_scaled
run_scaled是一個封裝xpra的指令稿,讓應用程式以特定比例啟動。
run_scaled有些應用程式開不起來,且字體會變模糊,所以我不喜歡用這個。
- 首先要安裝
run_scaled
:
|
|
- 接著用run_scaled從終端機啟動應用程式。
|
|
2.2. 使用環境變數
透過指定環境變數,使應用程式按照程式框架的縮放比例來變換大小。
例如開啟終端機,輸入GDK_SCALE=2 firefox
會以二倍縮放啟動Firefox。
鬼才知道要執行的程式是用什麼框架寫的…?但Linux的程式大部分都是開源的,去看一下該程式的原始碼就大概知道該程式是用什麼框架寫的。
KDE的應用程式通常都是QT,GNOME則是GTK。近年來跨平台的還有Electron。
將環境變數加入~/.bashrc
,這樣登入就會自動對所有應用程式生效。
KDE有一個好用的功能:對應用程式列表的圖示按右鍵,就能個別設定環境變數。
下面說明個別的環境變數用法。
GTK
使用GDK_SCALE=2
和GDK_DPI_SCALE=0.5
來縮放應用程式。
GDK_SCALE
也會一併縮放Java 9以上撰寫的程式,以及Mono(.Net)程式。
QT
QT5.6以後的程式可以用QT_AUTO_SCREEN_SCALE_FACTOR=1
讓應用程式跟隨系統縮放。
或者是用QT_SCALE_FACTOR=2
變數,強制指定應用程式的縮放比例。
Electron
執行Electron程式時加上--force-device-scale-factor=2
引數,用於縮放螢幕。
Java (AWT/Swing)
Java 9以下的程式使用sun.java2d.uiScale
引數設定縮放比例。
|
|
Wine (Windows exe相容層)
執行winecfg
指令,在圖形的頁面調整DPI。