当然网络上已经有很多相关教程了,但是对于我的情况那些方法都不完全正确以至于我不能使用图形化界面。所以如果你查了很多方法也不能使用的话可以看看这篇。

这是我的系统参数。

开门见山

启动 VcXsrv

在 Windows 上下载 VcXsrv 并安装。

运行,第一步的设置窗口状态怎么选关系不大,我一般是用 One large window ,默认的 Multiple windows 在多屏情况下显示会有一些问题。然后 Display number 可以用默认的 -1 ,或者设置成 0 (当然也可以是其他的数字,具体内容后面解释)。

下一步,选择 Start no client 。

下一步,选项全部勾上,Additional parameters 不用管。

点下一步,点完成,这时候会出现一个黑色的窗口,这样 VcXsrv 就启动好了。

WSL 启动桌面程序

首先下载 xfce4 ,sudo apt install xfce4 。

然后在 .bashrc 文件末尾中添加一句 export DISPLAY=xx.xx.xx.xx:0 ,其中的 xx.xx.xx.xx 是 VcXsrv 所在主机的 IP 地址,即在 Windows 的 cmd 或 powershell 中执行 ipconfig 里的以太网适配器的 IPv4 地址。

比如我的是 10.32.223.175 ,所以我要在 .bashrc 中添加 export DISPLAY=10.32.223.175:0 。

然后 source .bashrc 或者重新进入 wsl 终端。

然后执行 startxfce4 ,如果正常的话,之前 VcXsrv 的黑色窗口就会显示 xfce4 的桌面了,并且 wsl 终端会输出 xfce4 的日志。

发生了什么

整个过程中比较重要的概念是 Display number 和环境变量 $DISPLAY 。在 VcXsrv 中设置的 Display number 就是 $DISPLAY 中的分号后面的那个数字。当然,如果 VcXsrv 使用默认的 Display number (-1)就是让 VcXsrv 自动设置这个数字,在当前情况下用默认设置也是可以的。

当启动好 VcXsrv 后就相当于在 Windows 上启动了一个虚拟显示器,然后 WSL 的桌面程序需要连接上这个虚拟显示器才能正常显示。Linux 就是通过 $DISPLAY 这个环境变量来寻找目标显示器。网络上有很多 wsl 连接 VcXsrv 的教程的方法是将 $DISPLAY 设置成 :0.0 ,这貌似在 WSL1 上是可行的,但是在 WSL2 上就行不通了。(但是如果用 xrdp 来使用图形界面使用这个设置就是可以的,因为 xrdp 是运行在 wsl 的 Linux 上的,而且 :0.0 的意思其实就是 localhost:0.0 。至于为什么是 0.0 ,是因为这两个数字分别代表 Display 和 Screen,即 D.S 。 0.0 的意思是 0 号 Display 的 0 号 Screen 。至于更详细的解释可以在 Linux 中执行 man X 来查看。)

网络上另外还有一个方法是将 $DISPLAY 设置成 $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 ,这个值是 /etc/resolv.conf 中的 nameserver 的 IP 。不知道为什么这个方法在我的机子上也行不通(可能是因为别人的 wsl2 的 nameserver 的 IP 和 Windows 的 IP 是一样的?)。

而 $DISPLAY 的本质是为了告诉 Linux 的图形程序 X server 的地址和 Display number。所以将地址设置成 VcXsrv 所在主机的 IP 地址那应该是没问题的。如果执行 startxfce4 还是连接不上,并显示 xrdb: Connection timed out 那么检查下 IP 能否 ping 通,以及可能要设置下 WIndows 的防火墙规则。

其他

为什么设置的最后一步要全点上勾。

最后一个勾是 Disable access control ,这是允许所有客户程序都能连接这个 VcXsrv。有的教程说要在最后一步的 Additional parameters fo VcXsrv 中加上 -ac 这个参数,但其实这个参数应该和勾上 Disable access control 的作用是一样的。因为 -ac 的解释就是 disable access control restrictions 。

如果不把 export 写在 .bashrc 中会怎么样

如果只在终端里设置 $DISPLAY 的值其实也能运行,但是这样在图形界面中运行一些图形程序的时候可能就会出问题了。因为只在终端执行 export ... 那么环境变量只会在这个终端有用,如果退出终端或者打开新的终端 $DISPLAY 的值就没了,所以要放在 .bashrc 中。当然用其他永久设置环境的方法也是可以的。

wsl使用可视化界面_通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)相关推荐

  1. NuGet学习笔记(2) 使用图形化界面打包自己的类库

    上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...

  2. NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]

    http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet ...

  3. 【转】NuGet学习笔记(2)——使用图形化界面打包自己的类库

    上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...

  4. NuGet学习笔记(2)——使用图形化界面打包自己的类库

    上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...

  5. 腾讯云linux服务器怎么使用图形化界面_自己搭建一个自动签到和远程下载的服务器...

    先上效果图: 天天不用为签到发愁了.否则有一天忘记了.后悔死了.所以这里构造自己的签到工具.选一个N1或贝壳云这类的盒子.低功耗,高扩展.想怎么弄就怎么弄. 这里用贝壳云做例子: 使用的镜像是:Arm ...

  6. ssh开启图形界面_分享|3 个 Linux 上的 SSH 图形界面工具

    了解一下这三个用于 Linux 上的 SSH 图形界面工具. 在你担任 Linux 管理员的职业生涯中,你会使用 Secure Shell(SSH)远程连接到 Linux 服务器或桌面.可能你曾经在某 ...

  7. Anaconda中使用图形化界面创建虚拟环境

    1 前言 今天学习计算机视觉,需要使用一个不同的Anaconda虚拟环境来测试代码,正好我之前没有用过Anaconda的虚拟环境,所以刚好也来学习一下:于是去请教一下度娘怎么创建Anaconda的虚拟 ...

  8. termux使用无图形界面linux,在termux上使用图形化

    最近老是被人问怎么在termux上用图形化(GUI),想来不如写一篇文章得了. 被人吐槽写的太抽象了,我改还不行吗 VNC Termux原生 准确来说,原生是不可能的,你不可能在termux那个窗口里 ...

  9. python 使用图形化界面tkinter显示图片 规定大小!

    先上代码 import tkinter as tk from PIL import Image,ImageTk from tkinter import ttkwin = tk.Tk() win.geo ...

最新文章

  1. LeetCode 175. Combine Two Tables--Database--数据库题目
  2. 使用 ftrace 调试 Linux 内核,第 2 部分
  3. 我对汇编中进位和溢出的理解
  4. 满天星_Java实例_源码+图片素材
  5. mysql三:表操作
  6. Amazon Elastic Map Reduce使用Apache Mahout计算建议
  7. mysql delette_关于字符串:首字母大写MySQL
  8. 嵌入式linux设计师,make在linux——《嵌入式linux设计与应用》
  9. GPT语言模型:通过生成式预训练改善语言理解 OpenAI 2018
  10. [IT幽默]互联网的魔鬼词典
  11. Linux内核源代码分析——swap实现
  12. weixin-java-tools工具-出现JedisDataException问题
  13. html手机表白弹窗,怎么制作抖音弹窗表白代码 制作抖音弹窗表白代码的教程
  14. 项目经理,你真的是资源不足吗?
  15. chrome 插件--B站自动发弹幕
  16. Latex集合相关符号与关系操作
  17. JDK的多版本安装 及 切换
  18. 系统开发建设要经过哪些流程?
  19. 自动焊锡机加锡时的注意事项
  20. 挑战5G测试 思博伦Vertex信道仿真器助力5G研发

热门文章

  1. python在mac上运行不用装模块_MAC OSX使用Python安装mysql模块问题
  2. 实例对象静态对象实例方法静态方法
  3. 《精通Spring4.X企业应用开发实战》读后感第五章(注入参数详解)
  4. [JZOJ P1311] [DP]邮局设置问题
  5. 后台服务器控件点击跳转另一页面显示本页面
  6. 照片行【生活随笔】井冈山之行
  7. appium连接模拟器时屏幕倒转
  8. javascript篇-知道value值,返回对象中的key值
  9. 课后作业-结对编程项目总结
  10. 使用bootstrap标签页