news 2026/7/26 6:42:07

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/7/24 23:46:28

力扣701 二叉搜索树中的插入操作 java实现

701.二叉搜索树中的插入操作给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能…

作者头像 李华
网站建设 2026/7/25 2:15:32

TensorFlow-GPU安装全指南:版本匹配与实操避坑

TensorFlow-GPU 安装实战指南:绕过版本陷阱,一次成功 在深度学习的世界里,本地 GPU 环境就像炼丹炉——谁不想亲手点燃那团算力之火?可现实往往是:折腾三天三夜,连 tf.device(/GPU) 都跑不通。报错信息五花…

作者头像 李华
网站建设 2026/7/24 16:12:01

LobeChat能否实现AI猜谜游戏?娱乐化交互场景开发

LobeChat能否实现AI猜谜游戏?娱乐化交互场景开发 在智能对话系统日益普及的今天,用户早已不满足于“问一句答一句”的机械互动。他们期待的是更自然、更有趣、甚至带点“人情味”的交流体验——比如和一个会出谜题、能引导思考、还会适时鼓励你的AI玩一场…

作者头像 李华
网站建设 2026/7/25 12:04:48

和鲸科技创始人CEO 范向伟受邀赴港亮相 AI 赋能・科技自立 —— 中小企业创新与机遇高峰论坛并做主题演讲

本文内容节选自:香港中小上市公司协会,内容略有删改2025年12月5日,由香港中小上市公司协会(下文简称「协会」)联同深圳市金融商会主办的「AI赋能・科技自立——中小企业创新与机遇高峰论坛」,于香港四季酒店…

作者头像 李华
网站建设 2026/7/25 6:04:36

Cypress 入门与优势分析:前端自动化测试的新利器

近两年,前端自动化测试在各大互联网团队中越来越火,而 Cypress 作为新一代前端自动化框架,成为开发和 QA 团队热议的对象。 本文将从前端测试痛点、核心功能、Cypress 流程和对比分析带你快速了解它的价值。 1. 前端自动化测试痛点 调试困难…

作者头像 李华
网站建设 2026/7/25 2:28:50

鸿蒙高性能图形绘制

说明 HarmonyOs ArkGraphics 2D(方舟2D图形服务 )提供的绘制引擎,如果在 ArkUI 侧绘制,对绘制性能有高要求的话,那就直接放弃,转Native绘制配合 GPU 后端渲染。(想到这儿我浑身难受&#xff09…

作者头像 李华