news 2026/6/15 15:36:19

WSLg-Ubuntu-Desktop

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WSLg-Ubuntu-Desktop

文章目录

    • 极简说明
    • 详细说明

极简说明

模式:Wslg + gnome-shell + wayland

该方式采用gnome-shell来嵌入式显示桌面内容,gnome-shell又将通过WSLg(Windows扩展的显示组件),在Windows系统内弹出一个窗口来操作gnome-shell。
参考:https://gist.github.com/tdcosta100/7def60bccc8ae32cf9cacb41064b1c0f

注:Ubuntu20、22、24有环境差异,下方操作命令请按照自己安装的子系统版本来选择

  1. 更新软件包(20.04、22.04或24.04)

    sudoaptupdate&&sudoaptupgrade
  2. 安装 Ubuntu-Deskop 环境

    安装ubuntu-desktop后会绑带着安装gnome-session、gnome-shell等基础环境

    • 适用于 Ubuntu 20.04 和 Ubuntu 22.04

      注:acpi-support软件包在Ubuntu 20 & 22 环境下会导致系统异常,该版本安装时需要将软件包排除。必要参数acpi-support-

      sudoaptinstallubuntu-desktop acpi-support-
    • 适用于 Ubuntu 24.04

      sudoaptinstallubuntu-desktop
  3. 前置(兼容性等内容)处理

    wayland模式禁用x11

    • 适用于 Ubuntu 20.04

      sudomkdir/etc/systemd/user/gnome-shell-wayland.service.d/#sudo nano /etc/systemd/user/gnome-shell-wayland.service.d/override.confsudovim/etc/systemd/user/gnome-shell-wayland.service.d/override.conf
    • 适用于 Ubuntu 22.04 和 Ubuntu 24.04

      sudomkdir/etc/systemd/user/org.gnome.Shell@wayland.service.d/#sudo nano /etc/systemd/user/org.gnome.Shell@wayland.service.d/override.confsudovim/etc/systemd/user/org.gnome.Shell@wayland.service.d/override.conf

    编辑器打开后在文件内写入以下内容

    [Service] # 需要有该空行 ExecStart= # --no-x11 指定禁用x11,--nested 指定使用嵌套模式 ExecStart=/usr/bin/gnome-shell --no-x11 --nested
  4. 启动桌面(需要使用非root用户)

    直接执行命令或者,将其保存至.sh均可

    DESKTOP_SESSION=ubuntu\GDMSESSION=ubuntu\GNOME_SHELL_SESSION_MODE=ubuntu\GTK_IM_MODULE=ibus\GTK_MODULES=gail:atk-bridge\IM_CONFIG_CHECK_ENV=1\IM_CONFIG_PHASE=1\QT_ACCESSIBILITY=1\QT_IM_MODULE=ibus\XDG_CURRENT_DESKTOP=ubuntu:GNOME\XDG_DATA_DIRS=/usr/share/ubuntu:$XDG_DATA_DIRS\XDG_SESSION_TYPE=wayland\XMODIFIERS=@im=ibus\MUTTER_DEBUG_DUMMY_MODE_SPECS=1366x768\gnome-session

详细说明

注:Ubuntu20、22、24有环境差异,下方操作命令请按照自己安装的子系统版本来选择
该部分主要参考:

  • X11 + VcXsrv: https://blog.csdn.net/m0_71987651/article/details/146378266
  • gnome-shell + WSLg:https://gist.github.com/tdcosta100/7def60bccc8ae32cf9cacb41064b1c0f
  1. 更新软件包(20.04、22.04或24.04)

    sudoaptupdate&&sudoaptupgrade
  2. 安装 Ubuntu-Deskop 环境

    安装ubuntu-desktop后会绑带着安装gnome-session、gnome-shell等基础环境

    • 适用于 Ubuntu 20.04 和 Ubuntu 22.04

      注:acpi-support软件包在Ubuntu 20 & 22 环境下会导致系统异常,该版本安装时需要将软件包排除。必要参数acpi-support-

      sudoaptinstallubuntu-desktop acpi-support-
    • 适用于 Ubuntu 24.04

      sudoaptinstallubuntu-desktop
  3. 选择显示管理器(可选)

    # Gnome 默认使用的是 gdm3 管理器# 可选,您可以安装 lightdm 或者 kdm 等管理器# 安装 lightdm 命令#sudo apt install lightdm# 安装过程中会提示选择管理器,也可以手动切换#sudo dpkg-reconfigure lightdmsudodpkg-reconfigure gdm3# 重启系统sudoreboot# 查看当前显示管理器cat/etc/X11/default-display-manager
  4. 环境前置处理(WSL环境下需进行操作,在第六步启动桌面时会指定协议)

    X11协议与Wayland协议区别:https://blog.csdn.net/sunyuhua_keyboard/article/details/142792493

    个人测试过程中实验了可成功运行的组合

    • X11 + VcXsrv 【任意用户】
    • Wayland + VcXsrv 【任意用户】
    • Wayland + Wslg 【非管理员】【建议】(极简版使用的便是该组合)
    • X11协议,在WSL中的环境问题

      在WSL环境中,WSL重新启动后,WSL会在对应用户目录下生成wayland-0wayland-0.lock文件。该文件会导致 x11 的错误。
      WSL重启后文件将会恢复,可以考虑禁用wayland
      参考:https://gitlab.gnome.org/GNOME/gnome-session/-/issues/106

      # 查看当前登录用户目录下的 wayland 文件ls-l /run/user/$(id-u)/# 您可以使用重命名的方式来移除该文件的关联mv/run/user/$(id-u)/wayland-0 /run/user/$(id-u)/back_wayland-0mv/run/user/$(id-u)/wayland-0.lock /run/user/$(id-u)/back_wayland-0.lock
    • Wayland协议,在WSL中的环境问题

      在WSL环境中,WSLg会覆盖 /tmp/.X11-unix 目录的x11相关支持文件为只读挂载
      你可以使用两种方式处理该问题。

      • 修复目录

        /usr/bin/umount /tmp/.X11-unix /usr/bin/rm -rf /tmp/.X11-unix /usr/bin/mkdir /tmp/.X11-unix /usr/bin/chmod1777/tmp/.X11-unix /usr/bin/ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0# 如果您使用的是Ubuntu24.04,需要额外处理以下内容/usr/bin/chmod 0777 /mnt/wslg/runtime-dir /usr/bin/chmod 0666 /mnt/wslg/runtime-dir/wayland-0.lock

        【可选】你可以将此命令存储为services服务,让其在WSL启动后自动执行

        sudosystemctl edit --full --force wslg-fix.service

        在编辑框中输入

        [Service] Type=oneshot ExecStart=-/usr/bin/umount /tmp/.X11-unix ExecStart=/usr/bin/rm -rf /tmp/.X11-unix ExecStart=/usr/bin/mkdir /tmp/.X11-unix ExecStart=/usr/bin/chmod 1777 /tmp/.X11-unix ExecStart=/usr/bin/ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0 # --- Ubuntu24.04需要 --- ExecStart=/usr/bin/chmod 0777 /mnt/wslg/runtime-dir ExecStart=/usr/bin/chmod 0666 /mnt/wslg/runtime-dir/wayland-0.lock # --- Ubuntu24.04部分结束 --- [Install] WantedBy=multi-user.target

        保存之后启用服务

        sudosystemctlenablewslg-fix.service
      • 不使用x11协议【建议】

        为wayland模式默认使用的gnome-shell进行设定使其禁用x11

        • 适用于 Ubuntu 20.04

          sudomkdir/etc/systemd/user/gnome-shell-wayland.service.d/#sudo nano /etc/systemd/user/gnome-shell-wayland.service.d/override.confsudovim/etc/systemd/user/gnome-shell-wayland.service.d/override.conf
        • 适用于 Ubuntu 22.04 和 Ubuntu 24.04

          sudomkdir/etc/systemd/user/org.gnome.Shell@wayland.service.d/#sudo nano /etc/systemd/user/org.gnome.Shell@wayland.service.d/override.confsudovim/etc/systemd/user/org.gnome.Shell@wayland.service.d/override.conf

        再打开的文本编辑器中输入

        [Service] # 需要有该空行 ExecStart= # --no-x11 指定禁用x11,--nested 指定使用嵌套模式 ExecStart=/usr/bin/gnome-shell --no-x11 --nested
  5. 准备显示组件

    • VcXsrv

      通过Win32窗口管理实现X Window System(X11)图形界面显示的工具。
      下载地址:https://github.com/marchaesen/vcxsrv/releases

      1. 下载安装后打开 VcXsrv。

      2. DisplaySetting:单选框可选择显示的样式。Display number 选择 -1 时将会由服务自行选择显示屏幕。

      3. Client Startup:选择 Start no Clinet

      4. Extra Settings:其余位置不做改变。Disable access control需要进行勾选。

      5. 准备完毕后软件将会挂起在后台,等待 gnome 接入时自动显示画面

    • WSLg

      官方说明:https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps
      在当前版本的WSL中开启的WSL-Gui支持,可以让WSL子系统中的图形化界面直接以窗口化模式运行在Windows上。

  6. 启用Ubuntu-Desktop桌面

    以 " \" 空格斜杠分割的多行代码会被组合在一行执行。
    ip route show | grep -i default | awk '{ print $3}'方式适用于 WSL 环境下获取宿主的 Windows 主机IP用于访问
    grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'方式用于获取 DNS 主机,当前版本建议使用上面的方式

    • VcXsrv

      # 对应下面三行的描述:# 获取显示的显示器,当前方案会使用 VcXsrv 接收显示内容# 输出协议,选项还有 Wayland 等等# 使用 gnome 启动# x11 协议DISPLAY=$(iproute show|grep-i default|awk'{ print$3}'):0.0\XDG_SESSION_TYPE=x11\gnome-session# wayland 协议#DISPLAY=$(ip route show | grep -i default | awk '{ print $3}'):0.0 \#XDG_SESSION_TYPE=wayland \#gnome-session

      【可选】您可以将该命令存储至.sh文件,或将变量存储至全局配置(环境变量中),之后仅需要运行gnome-session即可启动桌面,以下是存至环境变量的方式

      sudovi~/.bashrc
      # 在末尾添加如下两行后保存退出 export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0 export XDG_SESSION_TYPE=x11
      # 应用修改source~/.bashrc
    • WSLg

      你可将下述命令存储至.sh文件,如果您想启动WSL时自启动桌面程序,您可以参考 第四步:环境前置处理的 wayland 部分

      DESKTOP_SESSION=ubuntu\GDMSESSION=ubuntu\GNOME_SHELL_SESSION_MODE=ubuntu\GTK_IM_MODULE=ibus\GTK_MODULES=gail:atk-bridge\IM_CONFIG_CHECK_ENV=1\IM_CONFIG_PHASE=1\QT_ACCESSIBILITY=1\QT_IM_MODULE=ibus\XDG_CURRENT_DESKTOP=ubuntu:GNOME\XDG_DATA_DIRS=/usr/share/ubuntu:$XDG_DATA_DIRS\XDG_SESSION_TYPE=wayland\XMODIFIERS=@im=ibus\MUTTER_DEBUG_DUMMY_MODE_SPECS=1366x768\gnome-session
  7. 错误处理(gnome-session执行后)

    • gnome-session 直接关闭

      请查看您修复wayland步骤的ExecStart=/usr/bin/gnome-shell --no-x11 --nested是否填写有误

    • 如果您的终端返回了Terminated

      则表示运行异常,已终止输出,此时您可以查看日志进行调试

      # 查看 systemctl 的服务日志journalctl -xe
      • 日志中提示gnome-session-check-accelerated: no X11 display found

        请按照 X11 修复步骤进行修复

    • 启动后黑屏

      你需要再次重启相应的协议中间件,或切换非管理员用户

      # 使用的是默认协议sudosystemctl restart gdm3# 使用的是 lightdm 协议#sudo systemctl restart lightdm
    • 打开时唤醒了一个全屏白底的Ubuntu错误界面

      第六步配置的显示渠道不可用或者gnome-shell异常。
      请查阅DISPLAY=$(ip route show | grep -i default | awk '{ print $3}'):0.0部分

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:35:13

IOT物联网大屏全方位解析

数字孪生的“智慧之眼”:IOT物联网大屏全方位解析在万物互联IoT的时代,传感器每秒钟都在产生海量的数据。然而,冰冷的数据库和晦涩的日志无法直接指导决策。物联网大屏,作为连接物理世界与数字世界的桥梁,正在成为企业…

作者头像 李华
网站建设 2026/6/15 13:30:49

【OpenHarmony】USB服务组件

USB Manager 模块 目录 模块概述 1.1 功能与目标1.2 系统位置1.3 设计思路与模式1.4 系统框图 模块结构 2.1 源文件与头文件2.2 类、结构体、函数与方法2.3 类图2.4 模块内部依赖框图 模块间交互 3.1 交互描述3.2 外部依赖框图 状态机转换图 4.1 状态机模型4.2 状态机树图4.3…

作者头像 李华
网站建设 2026/6/15 12:37:33

TensorRT-LLM快速入门与核心特性解析

TensorRT-LLM:打通大模型高效推理的“任督二脉” 在当前的大模型浪潮中,一个700亿参数的LLaMA-2模型跑一次推理要花多少钱?如果你还在用原生PyTorch部署,答案可能是——每千次请求几十美分。而换上TensorRT-LLM后,这个…

作者头像 李华
网站建设 2026/6/15 13:30:41

电脑卡到想砸了?别急!3分钟让老机器“健步如飞”的魔法操作

前言有没有那么一瞬间,你想和你的电脑“同归于尽”?打开文件,转圈;点开网页,转圈;甚至移动鼠标,都像在粘稠的糖浆里划动……开会前紧急修改PPT,它给你卡成幻灯片。这里玄子给大家一套…

作者头像 李华
网站建设 2026/6/15 12:41:26

PaddlePaddle深度学习平台实战:从git下载到模型训练全流程解析

PaddlePaddle深度学习平台实战:从环境搭建到模型训练全流程解析 在AI项目落地的过程中,一个常见的痛点是:研究阶段的模型代码到了生产环境却“跑不起来”——依赖冲突、CUDA版本不匹配、Python包缺失……这些问题让不少开发者苦不堪言。特别是…

作者头像 李华