我有個夢想,就是在一個Linux桌面無縫體驗另一個桌面環境,而不需要虛擬機。
比如在Arch Linux跑Fedora容器,體驗最新版GNOME或KDE,看看最新的界面長怎樣。
Distrobox可以做到這點。儘管Distrobox能直接跑容器內的圖形程式,跑桌面環境有點多餘。
Distrobox作者宣稱這是實驗性功能, 他的作法是在容器裝桌面環境後,將Desktop Entry加到宿主機的Diaplay Manager,這樣登入時就可以進入容器內部。
但我不想這樣,因為得登出現有工作階段。我比較想要「一個螢幕二個桌面環境」,像是Microsoft WSLg一樣。
我想到的辦法是用Weston或Xephyr跑nested session,如此便可二個桌面環境重疊。
1. 新增容器#
選用Fedora的理由是他的套件很新,且還算穩定。
想跑Ubuntu版GNOME的可以參考這篇的環境變數: 在 WSL2 中使用 Ubuntu 桌面環境
在宿主機安裝 Distrobox
新增最新穩定版Fedora容器
distrobox create --name fedora-gnome --image fedora --home ~/distrobox/fedora-gnome
distrobox enter fedora-gnome
cd
- 登入後掛載必要目錄
sudo umount /run/systemd/system
sudo rmdir /run/systemd/system
sudo ln -s /run/host/run/systemd/system /run/systemd
sudo mkdir /run/dbus
sudo ln -s /run/host/run/dbus/system_bus_socket /run/dbus/
- 安裝GNOME套件
sudo dnf install @gnome-desktop
2. 啟動桌面環境#
- 開一個新的終端機,在宿主機安裝Xephyr
sudo pacman -S xorg-server-xephyr
- 新增Xephyr視窗。
-resizeable
會導致黑螢幕所以不使用。
Xephyr -br -ac -noreset -screen 1280x720 :1
- 回到Distrobox的終端機,使用以下環境變數啟動GNOME X11工作階段
export XDG_CURRENT_DESKTOP=GNOME
export XDG_CURRENT_DIR=GNOME
export DISPLAY=:1
gnome-shell --x11 &
- Xephyr視窗就會出現GNOME了。
對桌面按右鍵,調整解析度讓視窗變小。
理論上GNOME顯示應該只有容器內的程式才對,但有趣的是宿主機的Flatpak程式在容器內部也看得到。
有些程式可能無法從應用程式列表開啟,這時請從Distrobox的終端機啟動,看看錯誤訊息為何。
3. 啟動其他桌面環境的作法#
如果GNOME開不起來,可以嘗試其他桌面環境。
Fedora的KDE套件:@kde-desktop
,啟動方法:startplasma-x11
XFCE:@xfce-desktop-environment
,啟動方法:startxfce4
Cinammon:@cinnamon-desktop
,啟動方法:cinammon-session