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 類別即可:

✅ 方法一:圖形介面設定

  1. 在 XFCE 桌面上開啟 「設定」 → 「首選應用程式」
  2. 選擇「實用工具」分頁(Utilities)
  3. 在「終端機模擬程式」選項中,選擇 xfce4-terminal 或你想使用的其他程式(如 xterm
這樣設好後, 左上角的"應用程式"下拉選單裡的"終端機模擬程式", 和中間下方的"終端機模擬程式"圖示, 按下後才會出現正常的命令列工具(其實就是xfce終端機)。我也試過其他選項, 如GNOME終端機, 都不能正常啓動。

(2) xfce中的firefox無法啓動? 觀察到log: Authorization required, but no authorization protocol specified Error: cannot open display: :10.0

這個錯誤訊息表示 Firefox 嘗試在顯示器 :10.0 上啟動,但 X11 授權失敗。這在使用 XRDP、VNC 或 SSH X11 轉發時非常常見。

🛠️ 解決方法

✅ 1. 設定 XAUTHORITY 環境變數

export XAUTHORITY=$HOME/.Xauthority

這告訴 Firefox 使用你目前使用者的 X 授權檔案。

✅ 4. 若使用 XRDP,請確認 session 啟動時有正確載入 .Xauthority

你可以在 ~/.xsessionstartwm.sh 中加入:

export XAUTHORITY=$HOME/.Xauthority

我選擇在startwm.sh中加入:export XAUTHORITY=$HOME/.Xauthority

(3) xfce會自己suspend? 一小段時間不使用後, 機器自己休眠了, 因為是要當伺服器用, 所以不能休眠。讓 XFCE 完全不自動休眠:

⚙️ 停用 XFCE 的自動休眠功能

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

----------------------------------------------


留言

這個網誌中的熱門文章

D-BUS學習筆記

Cisco Switch學習筆記: EtherChannel

Cisco Switch學習筆記: interface的封包錯誤統計