引言

从 X11 切换到 Wayland,表面上只是更换登录界面中的会话类型,实际上却涉及整个 Linux 桌面输入、显示和窗口管理机制的变化。

在 X11 环境中,应用程序可以直接获取窗口、键盘、鼠标和屏幕信息;而在 Wayland 环境中,这些能力大多由桌面合成器统一控制。对于 KDE Plasma 来说,这个合成器就是 KWin。

因此,完成登录并看到桌面,并不代表迁移已经结束。鼠标、输入法、显示缩放、窗口规则、绘图板、截图、录屏和旧自动化脚本,都可能需要重新检查。

本文整理一套较完整的 KDE Plasma Wayland 迁移检查思路。

一、先确认当前会话确实是 Wayland

最基本的检查是:

echo "$XDG_SESSION_TYPE"

正常结果应为:

wayland

也可以检查 KWin 进程:

pgrep -a 'kwin_wayland|kwin_x11|Xwayland'

通常会看到:

  • kwin_wayland
  • Xwayland

其中,kwin_wayland 表示 Plasma 当前运行在 Wayland 模式;Xwayland 是兼容旧 X11 应用的服务,并不代表系统仍然运行在完整的 X11 桌面会话中。

二、重新检查输入设备

Wayland 下,鼠标和触控板不再由 xinput 直接管理,而是由 KWin 调用 libinput 处理。

迁移后应检查:

  • 鼠标速度和加速度
  • 自然滚动
  • 左右键切换
  • 触控板轻触点击
  • 双指滚动
  • 禁用输入设备
  • 多个无线接收器产生的逻辑设备

常见问题是:同一个无线接收器会生成多个输入节点,例如:

  • Mouse
  • Consumer Control
  • Keyboard
  • System Control

KDE 可能把设置保存到了其中一个节点,而实际滚轮事件来自另一个节点。

正确排查链路应是:

物理设备
→ /dev/input/event*
→ KWin InputDevice对象
→ KWin运行时属性
→ kcminputrc配置段

不能仅凭系统设置界面中的设备名称判断。

三、重新检查显示缩放

Wayland 使用逻辑坐标管理窗口。

例如,一块物理分辨率为:

3840×2160

并设置:

缩放 150%

那么桌面的逻辑尺寸约为:

2560×1440

这并不表示显示器被降到了 2560×1440,而是窗口和界面使用逻辑像素布局。

迁移时应区分:

  • 物理输出模式
  • 逻辑桌面尺寸
  • 缩放比例
  • 窗口规则中的位置和大小

检查输出可以使用:

kscreen-doctor -o

该命令应在本地图形终端中运行。普通 SSH 终端如果没有连接当前图形会话,可能无法正确读取 KScreen 状态。

四、重新审计窗口规则

KDE 的窗口规则在 X11 下通常依赖:

  • WM_CLASS
  • 窗口标题
  • 窗口角色
  • 固定坐标
  • 固定尺寸

原生 Wayland 应用的窗口身份可能与 X11 版本不同。一个应用从 XWayland 切换到原生 Wayland 后,旧规则可能完全无法匹配。

高风险规则包括:

  • 精确匹配 Window Class
  • 固定物理像素坐标
  • 固定窗口尺寸
  • 固定屏幕编号
  • 依赖动态标题的规则

迁移后应重新使用 KDE 的“检测窗口属性”功能采集应用身份,并根据当前缩放重新计算逻辑坐标。

五、检查输入法

Wayland 下的输入法路径与 X11 不同。

在 KDE Plasma 中,Fcitx5通常应由:

系统设置
→ 键盘
→ 虚拟键盘
→ Fcitx 5

交给 KWin 管理。

同时,为兼容 XWayland 应用,可以通过:

~/.config/environment.d/

设置:

XMODIFIERS=@im=fcitx

不应简单沿用旧 .xprofile 中所有 X11 输入法变量,更不应仅因为 GTK_IM_MODULEQT_IM_MODULE 没有出现在 systemd 用户环境中,就断定输入法配置失败。

六、检查旧 X11 脚本

以下命令在 Wayland 原生环境中通常不能继续按原方式工作:

xrandr
xinput
xsetwacom
xdotool
wmctrl
xprop
xwininfo

需要搜索:

~/.xprofile
~/.profile
~/.config/autostart/
~/.config/plasma-workspace/env/
~/.local/share/applications/
~/.local/bin/
~/bin/

判断这些脚本:

  • 是否仍在自动启动
  • 是否只影响 XWayland
  • 是否已经完全失效
  • 是否需要为 X11 和 Wayland 分别设置分支

不要仅因为文件中存在 X11 命令就立即删除。历史脚本如果没有进入当前启动链,可以暂时保留作为回退工具。

七、检查截图、录屏和屏幕共享

Wayland 不允许普通应用直接抓取整个屏幕,因此截图和屏幕共享通常依赖:

  • xdg-desktop-portal
  • xdg-desktop-portal-kde
  • PipeWire
  • 会话管理器

应实际测试:

  • Spectacle截图
  • 区域截图
  • 浏览器共享屏幕
  • 共享单个窗口
  • 录屏工具
  • 文件选择器

日志中存在 Portal 警告,不等于功能一定损坏。只有在功能实际失败时,才应该结合故障发生时间分析日志。

八、检查绘图板与特殊输入设备

Wacom等绘图板在 X11 下经常使用:

xsetwacom

但 Wayland 下设备通常由 KWin 管理。

需要重新测试:

  • 映射显示器
  • 旋转方向
  • 有效区域
  • 按键映射
  • USB和蓝牙连接
  • 不同连接方式下的设备身份

xsetwacom 脚本可以暂时保留,但不应继续被视为 Wayland 下的正式配置方式。

九、不要把正常现象误判为故障

迁移审计中经常出现以下误判:

  • XWayland进程存在,所以系统仍在使用X11
  • libinput list-devices 显示自然滚动关闭,所以KDE设置没有生效
  • SSH中 kscreen-doctor 失败,所以显示配置损坏
  • Portal日志有错误,所以截图一定失效
  • 没有全局 GTK_IM_MODULE,所以Fcitx5配置错误
  • KWin没有使用Vulkan渲染,所以Wayland异常

这些现象都需要结合运行时状态和实际功能测试判断。

结语

从 X11 迁移到 Wayland,不应被理解为单纯更换显示协议,而应被视为一次桌面配置体系迁移。

最可靠的方法是同时检查:

配置文件
+运行时状态
+实际交互测试

只有三者一致,才能确认问题真正解决。Wayland带来了更严格的安全边界和更现代的显示模型,但也要求过去依赖X11全局控制能力的工作流重新设计。

Leave a Reply

Your email address will not be published. Required fields are marked *