在 Windows 10 上装 X

基本配置

Windows 设置:安装 Xserver

其实安装个 Xserver 挺简单的。

Windows 上的 Xserver 有好几个选择,我用的是 VcXsrv。如果你用 choco,还能更方便,可以直接 choco install vcxsrv。 可爱强强又富有的狗哥推荐了微软应用商店的 X410,看起来和 Windows 10 整合得很优秀,不过真的好贵啊……

然后是 HiDPI 设置,一般通过轻薄本现在应该都至少是 2K 或 3K 屏幕了。不设置一下的话字体会糊。

首先找到软件的安装路径,比如 C:\Program Files\VcXsrv,然后对两个可执行文件 vcxsrv.exe 和 xlaunch.exe 执行以下操作:

  1. 右键点击可执行文件
  2. 进入 Properties -> Compatibility -> Change high DPI settings -> High DPI scaling override
  3. 选中 Override high DPI scaling behavior
  4. 将 Scaling performed by 选项设为 Application

vcsrv HiDPI setting

在开始菜单查找 XLaunch 并运行,一路默认就可以开启 Xserver。如果是 WSL2,记得还要关闭 access control。用命令行的话就是添加 -ac 选项。

WSL 设置

首先设置 DISPLAY 环境变量。 WSL1 可以 export DISPLAY=localhost:0.0 , WSL2 就要指定 IP 了。 可以这样一劳永逸:

export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0

这里也设置了一下 LIBGL_ALWAYS_INDIRECT,虽然窝目前好像也没什么 3D rendering 需要……

export LIBGL_ALWAYS_INDIRECT=1

然后是 WSL 方面的 HiDPI 显示设置,当然是有多种解决方案的。参考 Arch Linux wiki 有关 HiDPI 的页面 (写得超级棒!),感觉设置 GTK(GDK)的环境变量是最泛用的。

我的方案:

export GDK_SCALE=1
export GDK_DPI_SCALE=1.5

这个数值在小新 Pro 13 的 2K 屏幕上对于大多数应用效果都不错。不过 JB 家的 IntelliJ IDEA 和 CLion 因为是 Swing 应用, UI scale 只支援整数倍,1.5 似乎相当于 scale 到 2 了,导致字都看起来非常大……不过可以通过调整字体大小解决。

这个表格大致整理了应该修改哪些地方(基于 CLion 2020 的菜单层级):

设置项作用
Appearance & Behavior > Appearance > Use Custom Font设置绝大多数 UI 字体
Editor > Font
Editor > Color Scheme > Color Scheme Font
设置编辑器(写代码的区域)的字体
Editor > Color Scheme > Console Font设置内建终端(Integrated Terminal)的字体

大功告成!

设置好 DISPLAY 和 HiDPI 支援并开启 Xserver 之后就能运行 GUI 应用了。

可以拿 xeyes 测试一下:

sudo apt install x11-apps
xeyes

不出意外你就能看到熟悉的弱智小眼球了。

也能正常使用安装在 WSL 的 Sublime Text、CLion、IntelliJ IDEA 等等。

JetBrains IDE 的进一步调整

装了 JB 家的几个 IDE 之后发现没法即开即用,还要再配置点东西。

Use Windows default browser

WSL 没有默认浏览器(当然),而 JB 家 IDE 的 markdown 渲染器依赖 JCEF,所以必须得有个浏览器。我们可以用 Windows 的浏览器:

打开 Settings > Tools > Web Browsers,将 Default Browser 的路径改为 /mnt/c/path/to/your/browser/browser.exe 即可。

Resolve JCEF dependency issue

JCEF 依赖的 libcef.solibjcef.so 两个库都有一大堆依赖。根据 event log 的报错安装一下就好了。我缺 libXsslibgbm

$ sudo apt install libxss1 libgbm1

CJK 字体支援

当然可以手动安装字体,不过也可以在 /usr/share/fonts/ 创建连到 Windows 字体库的软链接:

sudo ln -s /mnt/c/Windows/Fonts/ /usr/share/fonts/WindowsFonts

然后 logout 再登入,或用 fc-cache 手动 index 字体库,即可愉快阅览中日韩内容。

fc-cache -f -v

其他

Windows 计划推出 WSLg,以后估计就不用这样了。

Reference

  1. 鸟哥的 Linux 私房菜:第二十三章、X Window 设定介绍
  2. Lainme's Blog:如何优雅的在 Linux 上装 X