Ubunt 24.04 加裝XFCE桌面環境
微軟的Copilot一直推薦我使用XFCE來取代GNOME桌面:
為了讓你在 XRDP 下獲得穩定的使用者體驗,尤其是在登入後不閃退、不依賴 GNOME 和
systemd --user
,我建議你使用 XFCE 或 MATE 桌面環境,並重新配置 session 啟動鏈條。
我就信它一次, 來試試看:
🧰 1. 安裝 XFCE 桌面環境(推薦)
sudo apt update
sudo apt install xfce4 xfce4-session xfce4-goodies dbus-x11
為什麼選 XFCE:
它不依賴 systemd --user
,且在 XRDP 下表現穩定、資源消耗低。
📝 2. 編輯 /etc/xrdp/startwm.sh
請將內容改成如下:
#!/bin/sh
. /etc/profile
. ~/.profile
exec startxfce4
✅ 確保該檔案可執行:
sudo chmod +x /etc/xrdp/startwm.sh
⚙️ 3. 設定 PAM 與 D-Bus 相容性(選用)
確認 XRDP session 使用 PAM 載入環境:
sudo grep pam_systemd /etc/pam.d/xrdp-sesman || echo "session required pam_systemd.so"
如果沒有該行,可加入:
echo "session required pam_systemd.so" | sudo tee -a /etc/pam.d/xrdp-sesman
🧹 4. 清理殘留 .Xauthority
及 lock file(首次修復建議)
sudo rm -f /tmp/.X11-unix/X*
sudo rm -f /tmp/.X*-lock
rm -f ~/.Xauthority
touch ~/.Xauthority
chown ops:ops ~/.Xauthority
🚀 5. 重啟 XRDP
sudo systemctl restart xrdp
sudo systemctl restart xrdp-sesman
現在你重新連線後,應該會進入 XFCE 桌面,並且長時間不會被 session timeout 或閃退問題困擾。
--------------------------------------------
安裝 XFCE 桌面環境(sudo apt install xfce4 ...)後, 出現"正在設定lightdm"的對話框, 要我選default display manager, 我要選gdm3或lightdm? 同樣問Copilot, 它說lightdm。
--------------------------------------------
如上圖, XFCE果然簡潔有力, 就是古典的桌面, 但是我的要求是穏定, 其他再說, 所以先試看看一段時間。桌面的使用必須熟悉一下, 但似乎有些問題要先解決:
(1) XFCE裡的終端機模擬程式, 無法開啓? 但是"xfce終端機"可以正常啓動? 在桌面下方的選單, 單選的"終端機模擬程式", 其指令為exo-open --launch TerminalEmulator, 一直打不開?
🛠️ 解法:設定預設終端機程式給 exo-open
XFCE 使用 exo-preferred-applications
來設定「首選應用程式」,只要設定好 Terminal 類別即可:
✅ 方法一:圖形介面設定
- 在 XFCE 桌面上開啟 「設定」 → 「首選應用程式」
- 選擇「實用工具」分頁(Utilities)
- 在「終端機模擬程式」選項中,選擇
xfce4-terminal
或你想使用的其他程式(如xterm
)
這個錯誤訊息表示 Firefox 嘗試在顯示器 :10.0
上啟動,但 X11 授權失敗。這在使用 XRDP、VNC 或 SSH X11 轉發時非常常見。
🛠️ 解決方法
✅ 1. 設定 XAUTHORITY
環境變數
export XAUTHORITY=$HOME/.Xauthority
這告訴 Firefox 使用你目前使用者的 X 授權檔案。
✅ 4. 若使用 XRDP,請確認 session 啟動時有正確載入 .Xauthority
你可以在 ~/.xsession
或 startwm.sh
中加入:
export XAUTHORITY=$HOME/.Xauthority
1. 關閉電源管理器的休眠設定
打開 XFCE 電源管理器設定:
xfce4-power-manager-settings
在「系統」分頁中:
- 將「閒置後執行動作」設為「無動作」
- 將「蓋上筆電蓋子時」的動作也設為「無動作」
🧱 阻止系統層級的 suspend 行為
使用 systemctl
將休眠相關目標屏蔽:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
這會防止任何服務或使用者觸發休眠、睡眠或混合睡眠。
🖥️ 停用螢幕節能與 DPMS
在 XFCE 啟動時執行以下命令,或加入到啟動項目中:
xset s off
xset -dpms
xset s noblank
這些設定會停用螢幕保護、節能模式與自動關閉螢幕。
🧠 額外建議:確認 session 不會觸發 GNOME 或 systemd 的 idle suspend
如果你有混合使用 GNOME 元件或 systemd-logind,請檢查 /etc/systemd/logind.conf
:
[Login]
IdleAction=ignore
然後重啟 systemd-logind:
sudo systemctl restart systemd-logind
這樣設定後,XFCE 就不會自動休眠了。
---------------------------------------------
所以, startwm.sh 變成:
if test -r /etc/profile; then
. /etc/profile
fi
if test -r ~/.profile; then
. ~/.profile
fi
export XAUTHORITY=$HOME/.Xauthority
xset s off
# xset -dpms
xset s noblank
exec startxfce4
留言