首页 > 其他分享 >WSL2 无法使用图形界面的解决方法

WSL2 无法使用图形界面的解决方法

时间:2024-12-19 09:20:40浏览次数:3  
标签:tmp wslg 图形界面 mnt unix 无法 X11 WSL2 链接

WSL2 无法使用图形界面的解决方法

Windows 版本

打开命令提示符(不是 PowerShell )输入 ver,会有如下输出:

Microsoft Windows [版本 10.0.26100.2605]

Windows 版本必须在 21364 以上 WSLg 才能工作。

DISPLAY 环境变量

进入 WSL 的终端,输入 echo $DISPLAY 查看 DISPLAY 环境变量:

❯ echo $DISPLAY
:0

WSLg 的 X server 在 display 0 上运行,所以 DISPLAY 环境变量的值必须为 :0

X11 display socket 文件链接

X servers 在 /tmp/.X11-Unix 下创建 socket ,该目录必须存在且链接到 /mnt/wslg/.X11-Unix

使用 ls -la /tmp/.X11-unix 命令查看文件信息:

❯ ls -la /tmp/.X11-unix
lrwxrwxrwx 1 root root 19 Dec 19 08:30 /tmp/.X11-unix -> /mnt/wslg/.X11-unix

结尾的 /tmp/.X11-unix -> /mnt/wslg/.X11-unix 表明文件是正常链接状态。

而像下面这种输出,就表明文件没有正常链接:

❯ ls -la /tmp/.X11-unix
lrwxrwxrwx 1 root root 19 Dec 19 08:30 /tmp/.X11-unix

此时,我们可以通过以下命令重新创建链接:

# 手动创建链接,WSL 每次重启都要重新输入
# 稍后会介绍自动创建链接的方法
sudo rm -r /tmp/.X11-unix                   # 删除未链接的文件
ln -s /mnt/wslg/.X11-unix /tmp/.X11-unix    # 重新创建文件链接

如果 X server 正在运行,你应该能在 /tmp/.X11-unix 目录下看到一个 X0 套接字:

❯ ls /tmp/.X11-unix/
X0

为了避免 WSL 重启后又要手动输入一遍链接命令,我们可以使用 systemd 配置自动化运行文件。

因为 socket 文件链接在 /tmp 目录下,而 systemd 可以通过 /etc/tmpfiles.d/ 中的配置文件管理 /tmp 目录。

所以,我们创建一个新的配置文件 /etc/tmpfiles.d/wslg.conf 写入以下内容:

#  This file is part of the debianisation of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

# Type Path           Mode UID  GID  Age Argument
L+     /tmp/.X11-unix -    -    -    -   /mnt/wslg/.X11-unix

该方法来自:https://github.com/microsoft/wslg/issues/43#issuecomment-826039096

忽略 # 开头的注释,真正内容只有最后一行,就是创建 /tmp/.X11-unix/mnt/wslg/.X11-unix 的文件链接。

这样一来, WSL 重启时就能自动创建 socket 文件链接了。

参考资料

Diagnosing "cannot open display" type issues with WSLg · microsoft/wslg Wiki

Init /tmp/.X11-unix is overwritten by mounts · Issue #43 · microsoft/wslg


本文发布于2024年12月19日

最后修改于2024年12月19日

标签:tmp,wslg,图形界面,mnt,unix,无法,X11,WSL2,链接
From: https://www.cnblogs.com/ThousandPine/p/18616359

相关文章

  • 【Azure Logic App】使用Logic App来定制Monitor Alert邮件内容遇见无法获取SearchRes
    问题描述在使用AzureMonitor获取自定义告警指标并发出告警邮件时,默认的告警邮件内容不满足需要,需要把自定义查询语句的结果也直接显示在邮件中。查阅官方文档(CustomizealertnotificationsbyusingLogicApps),可以通过LogicApp来自定义Alert邮件内容。但是,在实验中,遇见......
  • windows 安装完docker, hype-v开启之后,vmware无法使用
    windows安装完docker,hype-v开启之后,vmware无法使用故障:安装完dockerfordesktop之后,原来的VMware,VMVirtualBox都无法启动。使用Docker是需要开启Hyper-V的,但是开启Hyper-V之后,是会与VMware发生冲突的(需要禁用Hyper-V),所以两个只能二选一。VMware错误信息:VMwareWorkstati......
  • Vue - 萤石云监控 ezuikit 视频实例销毁方案,解决使用stop方法无法销毁EZUIKit实例或销
    前言这方面教程很少,本文提供详细解决方案。在vue2|vue3项目开发中,项目集成对接萤石监控摄像头如何销毁EZUIKit实例教程,解决页面存在多个实时监控画面视频情况下,关闭某一个监控依然有声音和占用浏览器内存问题,另外如果要管理的摄像头监控播放器很多会导致分页情况下......
  • 完美解决PHP无法上传大文件源码
    前端:vue2,vue3,vue-cli,html5,jquery,webuploader后端:php服务器:linux,centos,Windows,数据库:MySQL,达梦数据库,人大金仓平台:Windows,macOS,Linux,Ubuntu,RedHat,中标麒麟,银河麒麟,统信UOS,信创国产化CPU:x86(Intel,AMD,兆芯,海光),arm(鲲鹏,飞腾),龙芯(mips),龙芯(Loong......
  • 错误信息:DedeCms错误警告:无法读取配置文件
    原因描述: 当您看到“无法读取配置文件”的错误提示时,通常是因为DedeCMS无法读取配置文件。这可能是由于以下几个原因:配置文件路径错误。配置文件被删除或移动。文件权限设置不正确。解决方案:检查配置文件路径:确认配置文件的路径是否正确。通常配置文件位于 /data/com......
  • 程序员都解决不了的问题“找不到vcruntime140.dll,无法继续执行代码”要怎么解决?“缺失
    电脑运行疑难杂症大揭秘:如何应对“找不到vcruntime140.dll,无法继续执行代码”的困扰?在探索数字世界的旅途中,每位软件开发者和电脑用户都可能遭遇过各式各样的系统报错与文件问题。今天,我们就来深入探讨一个常见却让人头疼的错误——“找不到vcruntime140.dll,无法继续执行代码......
  • 解决“无法定位程序输入点”错误的三种有效方法
    解决“无法定位程序输入点”错误的三种有效方法在使用电脑的过程中,我们有时会遇到“无法定位程序输入点于某个文件上”的错误提示。这种错误通常是由DLL文件版本不匹配或缺失引起的。DLL(动态链接库)文件是Windows操作系统中用于存储共享代码和数据的文件,许多应用程序都依赖于这......
  • uniapp中引入组件无法触发组件中生命周期函数处理
    uniapp中引入组件无法触发组件中生命周期函数处理&AI能帮上忙吗?前言一.为何无法触发组件生命周期二.uniapp的生命周期1.页面生命周期函数示例:页面生命周期函数2.组件生命周期函数组件生命周期函数:示例:组件生命周期函数3.App生命周期函数App生命周期函数:示例:Ap......
  • 易优CMS网站搬家后,前台地址栏图标无法正常显示,可能的原因是什么?
    当易优CMS网站搬家后,前台地址栏图标(Favicon)无法正常显示时,可能的原因包括但不限于以下几点:浏览器缓存问题:浏览器缓存是最常见的原因之一。当网站从一个服务器搬到另一个服务器后,浏览器可能仍然使用旧的缓存文件,导致新的Favicon无法加载。可以通过强制刷新浏览器来解决这个问......
  • 找不到vcruntime140_1.dll无法执行该怎么恢复?dll丢失的解决方法
    在Windows操作系统中,我们经常会遇到一些运行时错误,其中一个常见的问题就是“找不到vcruntime140_1.dll”。这个错误通常发生在运行依赖于VisualStudio2015运行时库的应用程序时。本文将为您提供一些解决方案,帮助您恢复和解决这个问题。1.什么是vcruntime140_1.dll?vcrunti......