跳到主要内容 WSL2 Ubuntu 下使用 WSLg 搭建 KDE 完整桌面体验 | 极客日志
Shell / Bash
WSL2 Ubuntu 下使用 WSLg 搭建 KDE 完整桌面体验 介绍如何在 Windows WSL2 环境下通过 WSLg 和 XWayland 为 Ubuntu 配置完整的 KDE Plasma 桌面系统。主要步骤包括安装 Kubuntu 桌面与 LightDM 显示管理器,修复 WSLg 的 X11 Unix Socket 挂载问题,替换 Xorg 启动脚本以调用 Xwayland,并配置自动登录及分辨率。此外还包含音频服务(PulseAudio)配置及 NVIDIA 显卡直通的环境变量设置。最终实现稳 60 帧的本地桌面体验,支持 GPU 加速,但需注意剪切板互通及快捷键冲突等限制。
奶糖兔 发布于 2026/3/24 更新于 2026/4/17 26K 浏览
WSL2 Ubuntu 下使用 WSLg 搭建 KDE 完整桌面体验
环境 Windows 10 专业版 22H2
WSL: 2.6.3.0
Ubuntu: 24.04.3 LTS
KDE: 5(XWayland 只支持这个)
前言 通过 WSL2 实现了不错的双桌面系统体验。参考了 Github 上的教程,但他只做了 GNOME 桌面的教程。由于我的电脑分辨率是非整数倍缩放,而 GNOME 对于非整数倍缩放的支持异常糟糕,且打开设置响应慢,因此换成了 KDE。
需要注意的是一旦使用了这个教程,WSLg 将全权被桌面接管,无法体验 Windows 与 Linux 那种无缝交互的感觉,即应用直接投影到桌面,但我觉得用任务栏分开 Windows 和 Linux 也不错。
这个教程是基于XWayland (X11)的,而不是Wayland ,会有一些 BUG,比如非整数倍缩放时,KDE 的任务栏不会缩放,但是其他界面正常缩放。分辨率可能会有问题,但可以修复。
另,无法共用剪切板 ,因为 WSLg 被桌面拦截导致无法拉起剪切板服务,你可能需要一些软件来实现这个功能,比如KDE Connect 。可能会在 26.04 或者下一个 WSL 版本修复。
又或者你可以选择不将 WSLg 应用拦截在系统桌面,这样体验不完整,不像是一个桌面系统,部分应用,比如在 KDE 中打开火狐会通过 WSLg 投影到 Windows 而非运行在 KDE,体验差。
WSLg 可能无法如预期般工作,因为 Wayland 套接字对一切程序都禁用了,而且并非所有应用都能支持。但如果你想原生使用 Wayland 应用,可以用命令
export XDG_RUNTIME_DIR=$HOME /runtime-dir
注意:
KDE 登陆器 SDDM 无法唤起,只有纯 Wayland 环境下能唤起会话窗口,故本教程更换为 LightDM。
纯 Wayland 教程,Github 作者也写了,有一些无法实现的功能,比如无法全屏,没有登陆器,不支持从 Windows 复制粘贴剪贴板
第一步:安装 KDE Plasma + LightDM sudo apt install kubuntu-desktop xwayland lightdm -y
第二步:修复 WSLg 的 X11 Unix Socket WSLg 将 X11 socket 挂载在 /mnt/wslg/.X11-unix/X0,但该路径在 /tmp/.X11-unix/ 下为只读链接。需通过 systemd 服务修复:
sudo systemctl edit --full --force wslg-fix.service
[Unit]
After =wslg.service
[Service]
Type =on eshot
ExecStart =-/usr/bin/umount /tmp/.X11-unix
ExecStart =/usr/bin/rm -rf /tmp/.X11-unix
ExecStart =/usr/bin/mkdir -m1777 /tmp/.X11-unix
ExecStart =/usr/bin/ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0
ExecStart =/usr/bin/chmod 0666 /mnt/wslg/runtime-dir/wayland-0 .lock
[Install]
WantedBy =multi-user.target
sudo systemctl enable --now wslg-fix.service
我们还需要移除所有对 Wayland 的引用,否则一些应用(比如 gnome 终端)会在桌面壳层外打开(投影到 windows 中):
sudo ln -s /dev/null /etc/systemd/user/wslg-session.service
第三步:替换 Xorg 为 XWayland 启动脚本 让显示管理器调用 Xwayland 而非传统 Xorg
sudo nano /usr/bin/Xorg.Xwayland
#!/bin/bash
for arg do
shift
case $arg in
vt*) set -- "$@ " "${arg//vt/tty} " ;;
-keeptty) ;;
-novtswitch) ;;
*) set -- "$@ " "$arg " ;;
esac
done
if [ ! -d $HOME /runtime-dir ]; then
mkdir $HOME /runtime-dir
ln -s /mnt/wslg/runtime-dir/wayland-0 /mnt/wslg/runtime-dir/wayland-0.lock $HOME /runtime-dir/
fi
export XDG_RUNTIME_DIR=$HOME /runtime-dir
for displayNumber in $(seq 1 100); do
[ ! -e /tmp/.X11-unix/X$displayNumber ] && break
done
command =("/usr/bin/Xwayland" "${displayNumber} " "-geometry" "2560x1600" "-fullscreen" "$@ " )
systemd-cat -t /usr/bin/Xorg echo "Starting Xwayland:" "${command[@]} "
exec "${command[@]} "
sudo chmod +x /usr/bin/Xorg.Xwayland
sudo dpkg-divert --local --add --rename /usr/bin/Xorg
sudo update-alternatives --install /usr/bin/Xorg Xorg /usr/bin/Xorg.Xwayland 100
X11 环境:一键写入 .xprofile 固定分辨率
xrandr --output XWAYLAND0 --mode 2560x1600 --rate 59.99 --primary
chmod +x ~/.xprofile
source ~/.xprofile
第四步:配置 LightDM 自动登录(可选) 因为 WSLg 默认读取最大分辨率,会显得登录界面小的看不清,LightDM 还不和 KDE 绑定读取统一配置文件,倒不如设置成自动登录。如果你喜欢的话可以自己设置美化。
sudo nano /etc/lightdm/lightdm.conf
[Seat:*]
autologin-user =your_username
user-session =plasma
第五步:设置默认启动目标 sudo systemctl set-default multi-user.target
第六步:启动 KDE Plasma 桌面 sudo systemctl start graphical.target
需要自行设置缩放,缩放除了对任务栏不生效,其它均生效(x11 应用),运行起来虽然锁定 60 帧,但流畅程度比虚拟机强太多了,至少我按下键盘他能立马回应我,完全没有迟滞感。
第七步:关闭会话 sudo systemctl stop lightdm
第八步:修复音频 pulseaudio -k 2>/dev/null
rm -rf $HOME /runtime-dir/pulse
rm -rf ~/.config/pulse
创建 PulseAudio 客户端配置,指向 WSLg 自带音频服务器
mkdir -p ~/.config/pulse
nano ~/.config/pulse/client.conf
default-server = unix:/mnt/wslg/PulseServer
autospawn = yes
enable-shm = false
daemon-binary = /bin/true
export PULSE_SERVER=unix:/mnt/wslg/PulseServer
export PULSE_COOKIE=/mnt/wslg/PulseCookie
chmod 666 /mnt/wslg/runtime-dir/pulse/native 2>/dev/null
喇叭无红线,没像上面的截图一样被划掉就说明成功了
选择喇叭,勾选显示虚拟设备即可
嫌声音小可勾选提高最大音量,非常流畅舒适。
额外:显卡直通 #!/bin/bash
export NVIDIA_DRIVER_CAPABILITIES=all
export NVIDIA_VISIBLE_DEVICES=all
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:$PATH
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
xrandr --output XWAYLAND0 --mode 2560x1600 --rate 59.99 --primary
source ~/.nvidia-env
if [ -d $HOME /runtime-dir ]; then
chmod 700 $HOME /runtime-dir
ln -sf $HOME /runtime-dir /run/user/$UID
fi
结语 本质上仍是 RDP 投影,但体验比远程桌面强太多了,至少能稳 60 帧。
微软越来越强了,放在一年前不用远程桌面软件,仅靠 WSLg 是绝对实现不了的,现如今竟然有一套可行的方案,在 Windows 上提供一个不错的完整桌面的体验,如今各种发行版也提供了 WSL2 版本的,我甚至看到了有人实现了 Arch+Niri,虽然只有 60 帧,但有了显卡直通能做不少事,有了完整的桌面环境也比 WSLg 的投影强了不少,虽然本教程的方向可能不太对,但总归是能从中体会到乐趣吧。
各种问题
剪切板互通
暂时只能用第三方软件实现,本质是桌面系统全拦截导致 WSLg 的剪切板服务也被拦了,除非放弃完整桌面体验,否则只能等大佬修复。
这个问题可能是 KDE 独占,因为 Klipper 存在,不能被底层 Clipper 拦截,我在装 GNOME 时候没有尝试剪切板,因为他太臃肿了。
所有 GTK 的桌面可能都没有 KDE 这种 QT 在 WSLg 下体验好,毕竟是 RDP 协议,全量重绘还是不适合。希望微软能换一个协议。
快捷键优先被 Windows 拦截
修改注册表,降低 Windows 的优先级。
AutoHotkey 设置在 WSLg 窗口 Win 键交给 KDE,在其他 Windows 窗口中时,Win 键保留 Windows 功能
修改快捷键,不与 Windows 冲突即可。
音频问题
已修复,可能存在其它修复方式。
桌面如果有文件或者图片,进入后桌面会卡顿一会儿,但不耽误其它程序运行
可能是由图标缓存引起,毕竟是虚拟盘。
也可能是 Baloo 索引服务引起的,每次重启都扫描重建。
未修复
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online