在 WSL GUI 应用程序 (HiDPI) 中使用 Windows 默认缩放时的模糊字体

lol*_*lol 37 xming windows-10 windows-subsystem-for-linux vcxsrv

使用默认 Windows 缩放从 WSL (Ubuntu 18.04) 运行时,有没有办法修复 linux GUI 应用程序中的模糊字体?到目前为止我尝试过的事情:
使用 Xming:

  1. 尝试禁用 Windows 缩放并使用从 linux 端设置它GDK_DPI_SCALE=2.5,问题在于上下文菜单图标等一些东西不能很好地播放并且通常没有缩放。没有GDK_DPI_SCALE=2.5,应用程序基本上无法使用,因为文本非常小。
  2. 尝试将 C:\Windows\Fonts 中的所有字体安装到C:\Program Files\Xming\fonts\TTF并运行mkfontscale,也无法使其以这种方式工作。
  3. 尝试使用 VcXsrv,有同样的问题。

截图

  • 克里昂:

克里昂

  • emacs(WSL)与VS Code(Windows原生)对比

emacs(WSL)与VS Code(Windows原生)对比

到目前为止我查找的所有资源:

  1. 为什么 WSL GUI 应用程序使用 Xming 呈现模糊字体?:这里的答案专门针对基于 Firefox 和电子的应用程序。
  2. Xming 上的 Gnome-Terminal 模糊:除了建议禁用缩放和使用 Xming 以外的其他内容之外,没有任何特别有用的东西。
  3. 在 4K 屏幕上运行 GUI 程序时 DPI 问题:建议使用 VcXsrv。

这样做的主要目的是能够从 WSL 运行文本编辑器(emacs)/IDE(Clion)。而且,我无法安装它们的等效 Windows 的原因是我们只为 linux 开发。

一些系统细节:

屏幕

4K (3840x2160) - 15.6"

操作系统

  • Windows:Windows 10 家庭版 v1803 内部版本:17134.345

  • WSL:Ubuntu 18.04 ( Linux username 4.4.0-17134-Microsoft #345-Microsoft Wed Sep 19 17:47:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux)

Bis*_*iyo 51

免责声明:以下步骤可能因系统中的实际硬件而异。设置可能会在您的设置中更改。

首先,为 X 服务器可执行文件启用高 DPI 设置。关闭该 X 服务器的任何正在运行的实例。打开安装了X Server 的文件夹,例如VcxSrv、Xming、X410 等。这里我选择D:\MyFolderVcxSrv 为例。打开该文件夹,右键单击vcxsrv.exeVcxSrv 或Xming.exeXming。选择“属性”>“兼容性”选项卡>“更改高 DPI 设置”>“启用覆盖高 DPI 缩放”> 更改为“应用程序”(或“系统增强”选项)。这是更改设置后的屏幕截图:

Enable_Dpi_Awareness_vcxsrv

还要对xlaunch.exe文件执行上述步骤。此更改将添加以下注册表值:

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"D:\\MyFolder\\xlaunch.exe"="~ HIGHDPIAWARE"
"D:\\MyFolder\\vcxsrv.exe"="~ HIGHDPIAWARE"
Run Code Online (Sandbox Code Playgroud)

接下来,覆盖 X11 环境的 GTK+ 设置。这篇 Gnome 文章深入介绍了环境变量。GDK_SCALE将按特定因子缩放窗口。GDK_DPI_SCALE将为规模感知应用程序扩展 DPI。在 bash(或其他 shell)中使用以下命令启用设置。

export GDK_SCALE=0.5
export GDK_DPI_SCALE=2
Run Code Online (Sandbox Code Playgroud)

根据您的系统更改这些值。现在执行 X 服务器和 X11 程序。这个 reddit 线程也有帮助。

  • 成功了,谢谢!只是为了确保我也用 Firefox 验证了它。好像我错过了`GDK_SCALE` 标志。一件事不起作用是 Clion(但是手动将字体更改为原始字体的 2.5 倍修复了它)。不过渲染速度很慢,特别是在 Firefox 的情况下,但这是另一个问题。 (2认同)
  • 请注意,如果您的问题只是模糊并且您不介意 gui 是否非常小,则无需更改 Linux 中的任何内容。 (2认同)