Skip to main content

银河麒麟桌面 V11 wayland 切换为 X11

现在已经确认了:你当前图形会话确实是 Wayland

echo $XDG_SESSION_TYPE
wayland

并且你的环境是:

  • 银河麒麟桌面 V11

  • UKUI

  • LightDM

  • NVIDIA 驱动已安装(截图里有 xserver-xorg-video-nvidia-570

这类环境可以直接强制切换到 X11。

先创建 LightDM 配置:

sudo mkdir -p /etc/lightdm/lightdm.conf.d
sudo nano /etc/lightdm/lightdm.conf.d/99-force-x11.conf

写入:

[Seat:*]
type=xlocal
xserver-command=X

保存后,再创建 UKUI 会话默认配置:

sudo nano /usr/share/xsessions/ukui.desktop

检查是否存在以下内容(没有就添加):

[Desktop Entry]
Name=UKUI
Comment=UKUI Desktop Environment
Exec=ukui-session
Type=Application
DesktopNames=UKUI

然后重启 LightDM:

sudo systemctl restart lightdm

如果当前在图形界面里操作,执行上面命令会直接退出桌面,所以更稳妥的是:

sudo reboot

重启后登录,再验证:

echo $XDG_SESSION_TYPE

应变成:

x11

如果重启后仍显示 wayland,说明 UKUI V11 的 Wayland 会话被单独指定了。继续执行下面命令查看系统有哪些会话:

ls /usr/share/wayland-sessions/
ls /usr/share/xsessions/

把输出发来,我再告诉你如何把默认会话从 ukui-wayland 改成 ukui-x11

从结果看,LightDM 配置里没有指定 user-session,所以不是这里覆盖的。现在几乎可以确定是 银河麒麟的 kylin-wlcom(Wayland 组件)在启动链里强制接管了会话

执行下面这个定位命令:

grep -R "kylin-wlcom" /etc /usr /var 2>/dev/null

重点找类似下面内容:

user-session=kylin-wlcom

或:

Exec=kylin-wlcom

不过根据你当前环境,更快的办法是直接把默认 Wayland 会话移走,让 LightDM 只能看到 X11 会话。

先备份:

sudo mv /usr/share/wayland-sessions/kylin-wlcom.desktop \
/usr/share/wayland-sessions/kylin-wlcom.desktop.bak

然后重启:

sudo reboot

登录后验证:

echo $XDG_SESSION_TYPE

预期:

x11

如果以后要恢复 Wayland:

sudo mv /usr/share/wayland-sessions/kylin-wlcom.desktop.bak \
/usr/share/wayland-sessions/kylin-wlcom.desktop
sudo reboot

这一步的原理是:你已经确认系统里存在唯一的 X11 会话:

/usr/share/xsessions/ukui.desktop

而 Wayland 会话只有:

/usr/share/wayland-sessions/kylin-wlcom.desktop

移走 kylin-wlcom.desktop 后,登录管理器就只能启动 UKUI 的 X11 会话。

做完后把:

echo $XDG_SESSION_TYPE

的结果发一下。