WSL2+VcXsrv 打开图形窗口实现可视化

  • Post author:
  • Post category:其他


前些天有个朋友拜托我帮忙看看, 老师让配置的 Cygwin 安装 gnuplot, 用 XLaunch 做图形界面, 始终画不出图来. 这个问题我研一的时候也遇到过, 走了许多弯路, 所以在电脑上一阵鼓捣, 现在做一个如下记录.



Cygwin + XLaunch

这一对组合的作用, 我个人浅显的理解, 是 Cygwin 在 windows 操作系统上虚拟了一个 “Linux 系统”, 可以在它的 terminal 里面运行一些 Linux 命令, 可以当成一台”服务器”. 那么 XLaunch 是做什么的呢? 它是一个虚拟的 “屏幕”, 可以运行各种图形化的程序, 执行图形化的交互. 它们组合在一起, 就可以做一些有图形界面的 Linux 发行版系统可以做的事情, 比如我这位朋友需要的用 gnuplot 绘图.

那么我的这位朋友遇到的是什么问题呢? 就像我们用电脑想要用显示器, 要把显示器连接到主板上, 要让 Cygwin 使用图形界面, 也要告诉他要放到哪块屏幕上. 我的朋友缺失的就是这条命令.

export DISPLAY=:0.0

这个

0.0

就是指明第几块显示器上的第几块屏幕.

但目前的使用还会显得有些繁琐, 在每一次启动 XLaunch 之后, 再启动 Cygwin terminal, 再输入这个命令. 所以, 如果能保证每次 XLaunch 启动的 “屏幕” 的设置和参数都不变的话, 可以把上面这条命令加到

~/.bashrc

里面, 这样就不用每次输一遍了.



WSL2 + VcXsrv

微软给我们搞了个 WSL, 还更新到了 WSL2, 所以想要更原汁原味的 Linux 体验的话, 这是个不错的选择. 另一个原因搞这件事的原因是喜欢折腾. 我用的是 Ubuntu 作为子系统.



VcXsrv 的注意事项

  1. 安装 VcXsrv 的时候, 记得允许它通过防火墙; 如果没有一开始忘了, 没关系, 可以 Win+S 搜索 “允许应用通过 Windows 防火墙”, 找到

    Xming X server

    之类的东西, 手动开启.
  2. 启动 XLaunch 窗口时, 前面的都可以默认设置, 但 Extra settings 中记得勾选 Disable access control.

题外话: 实际上, 很多 Windows 自身的功能设置和应用, 都可以通过 Windows 自带的搜索功能 (快捷键 Win+S) 直接搜索打开. 例如环境变量修改, 运行 cmd, 卸载应用, 打开设备管理器, 打开任务管理器, 注册表编辑器. 并不需要记住每个设置选项, 每个软件所在的路径. 也不需要使用 Win+R 打开运行输入命令.



WSL2 上要做的事情

想要 WSL 使用主系统下运行的 XLaunch 屏幕, 就像去别人家借显示器, 要知道别人家的门牌号 (WSL 和 Windows 通信的 IP 地址) 和哪一块显示器 (:0). 对于 WSL2, 可以用一个很方便的命令实现这个过程

export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0

从上面这个命令我们其实可以知道, 这个通信的 IP 地址就是

/etc/resolv.conf

配置文件中

nameserver

对应的值.

然后用

xeyes

命令测试一下是否连接成功. 如果屏幕上出现一双大眼睛, 就成功了.

同样, 把这个命令加到

~/.bashrc

末尾, 就不用每次打开 WSL 的时候输一遍了.


  1. vim ~/.bashrc
  2. ctrl+end, 单击 o, 输入上方的命令, 单击 esc, 输入 wq, 回车.



接下来做什么

想要实现什么可视化的功能, 比如绘制函数, 比如把 WSL 当成有图形界面的 Linux 桌面系统使用, 就都可以了.

并且按照上面的逻辑, 也可以用这种方法实现在服务器上跑代码, 并实时在本地查看函数图像的变化. 只要把地址写对.



版权声明:本文为weixin_40592923原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。