改善Wine应用程序的图形用户界面外观

在许多情况下,Windows程序在Wine中运行得很好,但它们的外观仍然存在令人烦恼的问题。
如何在Wine中使其外观更好,特别是字体方面?
7个回答

以下解决方案应在playonlinux取得的进展背景下考虑——现在它能够为Wine应用程序提供开箱即用的支持,至少对于此答案首次发布时考虑的程序(如foobar2000)来说,提供了所需的调整以获得最佳GUI外观。 如果您不喜欢Playonlinux,而只使用Wine,请随时在关于仅限于Wine的问题上发表评论和/或编辑此答案。 考虑到Wine中的GTK主题:请参阅本答案的最后一部分。
关于字体的最重要改进是启用字体平滑 - 将下面的脚本保存为winefontssmoothing_en.sh,并在终端中使用命令bash winefontssmoothing_en.sh运行:
#!/bin/sh
# Quick and dirty script for configuring wine font smoothing
#
# Author: Igor Tarasov <tarasov.igor@gmail.com>

WINE=${WINE:-wine}
WINEPREFIX=${WINEPREFIX:-$HOME/.wine}
DIALOG=whiptail

if [ ! -x "`which "$WINE"`" ]
then
    echo "Wine was not found. Is it really installed? ($WINE)"
    exit 1
fi

if [ ! -x "`which "$DIALOG"`" ]
then
    DIALOG=dialog
fi

TMPFILE=`mktemp` || exit 1

$DIALOG --menu \
    "Please select font smoothing mode for wine programs:" 13 51\
    4\
        1 "Smoothing disabled"\
        2 "Grayscale smoothing"\
        3 "Subpixel smoothing (ClearType) RGB"\
        4 "Subpixel smoothing (ClearType) BGR" 2> $TMPFILE

STATUS=$?
ANSWER=`cat $TMPFILE`

if [ $STATUS != 0 ]
then 
    rm -f $TMPFILE
    exit 1
fi

MODE=0 # 0 = disabled; 2 = enabled
TYPE=0 # 1 = regular;  2 = subpixel
ORIENTATION=1 # 0 = BGR; 1 = RGB

case $ANSWER in
    1) # disable
        ;;
    2) # enable
        MODE=2
        TYPE=1
        ;;
    3) # enable cleartype rgb
        MODE=2
        TYPE=2
        ;;
    4) # enable cleartype bgr
        MODE=2
        TYPE=2
        ORIENTATION=0
        ;;
    *)
        rm -f $TMPFILE
        echo Unexpected option: $ANSWER
        exit 1
        ;;
esac

echo "REGEDIT4

[HKEY_CURRENT_USER\Control Panel\Desktop]
\"FontSmoothing\"=\"$MODE\"
\"FontSmoothingOrientation\"=dword:0000000$ORIENTATION
\"FontSmoothingType\"=dword:0000000$TYPE
\"FontSmoothingGamma\"=dword:00000578" > $TMPFILE

echo -n "Updating configuration... "

$WINE regedit $TMPFILE 2> /dev/null

rm -f $TMPFILE

echo ok
在终端中选择第三个选项 - 使用箭头键,然后使用Tab键选择“确定”并按下回车键。

winefontssmoothing_en.sh dialog

(源自此处

  • 为了获得更好的系统外观,在winecfg(Wine/Configure Wine/Desktop Integration)中安装Windows msstyle文件,例如"Luna""Royale"

enter image description here

winecfg中增加屏幕分辨率(Wine / 配置 Wine / 图形),这将使一般细节(包括字体)更大(如果这是您需要的:在我的笔记本上,Wine 程序的外观细节默认太小)。

enter image description here

但上面的图片是在启用字体平滑后拍摄的。这是我能够测试到的最重要的步骤。由于我曾经不得不重新安装Wine,所以我也不得不重新启动所有的程序。使用其他所有的解决方案(包括按照Shauna答案建议安装所有字体——这是非常可取的,并且应该作为解决这个问题的一部分考虑)——除了字体平滑之外,Foobar2000看起来像这样:

enter image description here

字体平滑后:

enter image description here

重要提示:在winecfg中更改设置可能会重置字体平滑,因此最好在最后运行它,或在字体看起来不美观时重新启用它。

考虑在Wine中使用GTK主题

(由this最新回答提到),结果可能因Linux桌面和不同应用程序而异。在Wine中使用GTK主题似乎是一个偏好问题,因为是否在Windows程序上使用GTK主题比Windows主题更好看还有争议。

Foobar2000的示例:

在Ubuntu中:

enter image description here

在 elementaryOS 中:

enter image description here

与Playonlinux默认的msstyle Luna相比,改进不大。

enter image description here

在 Playonlinux 中似乎缺少 GTK 主题,即使使用最新的可用 Wine-staging 版本,在 Playonlinux 中将 Wine-staging 版本添加到虚拟驱动器时,该驱动器的 Wine 配置中会出现"Staging"选项卡,但是"启用 GTK 主题"选项被禁用。

这是因为所需的不是任意的分阶段版本的 wine,而是无法在 Playonlinux 中安装的 winehq-staging 包。

更新:我看到在后续版本的 Playonlinux 中,根据此编辑的日期(2018 年 11 月),Playonlinux 中的分阶段 wine 版本根本不显示上述灰色的 gtk 选项。


1你如何选择Luna主题? - Sparhawk
1@Sparhawk - 下载并安装msstyle文件后,在“主题”下选择它- 参考图片 - user47206
1抱歉,我表达不清楚。我的意思是你从哪里获取这个文件?我不确定它是下载的(无论如何我找不到它)还是来自Windows安装光盘等等。 - Sparhawk
1@Sparhawk - 找一个XP主题,在存档中找到msstyles文件 - 要下载的话去Softpedia或者其他地方 - 皇家主题在这里。你也可以看看其他XP主题 - user47206
有人曾经弄清楚如何放大GUI上的字体吗?我可以将对话框字体调大,但是无法将GUI的DPI设置调高。 - Kalamalka Kid
@KalamalkaKid - 这个因应用程序而异,我猜。根据这张图片中所示,增加DPI会在许多情况下产生变化,但并非所有情况都是如此。 - user47206
哇,我刚在foobar2000中听了披头士乐队,并使用类似的颜色方案。然后我想,“WTF,一个新的Arch安装程序竟然已经感染病毒了!” :D https://dropbox.com/s/pfu5l6j8xozcgox/snapshot1.png - Dmitry Fedorkov
1告诉我一些类似LUNA的主题可以下载。 - Pankaj Kumar Gautam
1@PankajGautam - 根据我的经验,所有的msstyles中,Luna(Playonlinux默认使用)及其变体(Zune,Royal Noir)是唯一能改善外观的,其他的都不如无。 - user47206
@cipricus- 我很欣赏你的知识,我会尝试这三个方法。 - Pankaj Kumar Gautam
@PankajGautam ~ 实际上,这个答案有点过时,因为我只在过去的2-3年里使用了Playonlinux,所以我在回答开始的时候提到了PoL。如果你不喜欢这样,并且只直接使用Wine,请随意评论和/或编辑这个关于Wine问题的答案。 - user47206
我不记得在这些年里(大约十年左右!)需要使用字体平滑,而且我仍然喜欢上面图片中显示的外观(带有字体平滑)。但是前几天,我需要重新安装整个系统(Ubuntu 16.04 + wine 1.6),保留Home分区,突然遇到了这个问题 - 即使我通过这个脚本和Winetricks,在Wine或PlayOnLinux下应用了每一个字体平滑选项,问题仍然存在!!!我检查了user.reg文件,设置都在那里,所以到底发生了什么鬼东西,我想知道 - 请问有什么想法吗? :-( - Sadi
2@Sadi - 这似乎是一个独立的问题 - 你应该单独发布它,并附上所有细节,包括链接、Wine和Playonlinux的版本等。我也很久没有使用那个脚本了,因为在过去几年里,Playonlinux默认就会这样做,或许Wine也是如此。 - user47206
@cipricus 谢谢,我可以确认Wine默认也会这样做,而且似乎这个问题不会影响64位的Wine前缀,只会影响我通常使用的32位前缀。所以可能这是一个最近的错误 :-( - Sadi

确保安装字体
winetricks allfonts

字体问题通常是由程序使用的TrueType字体在Linux或Wine中没有的原因造成的。通过Winetricks(随当前版本的Wine一起提供),安装这些字体应该可以解决您的字体问题。

在Wine 1.9.23(Fedora)中运行Palemoon便携版。为了正确显示加粗文本,需要安装allfonts。它在某些Android字体上出现问题,但已安装的字体使一切看起来正确无误。 - bgStack15

为了获得更好的系统外观,在winecfg(Wine/配置Wine/桌面集成)中安装一个Windows msstyle文件,比如“Luna”或“Royale”。
我没有足够的声望来评论被接受的答案,所以我会在这里发表我的评论。
还有一个来自微软服务器的官方msstyle文件。 从Microsoft.com下载Zune主题 只需安装.msi文件,然后就可以在Wine配置对话框中选择“Zune风格”。

首先...这个部分帮助我配置Wine以获得Photoshop CS6的正确外观。
有时候,winetricks allfonts的效果不是很好。偶尔你可能会收到一些字体的SHA1校验和错误,如果它们已经更新但在winetricks脚本中还没有反映出来。
目前存储库中的winetricks版本指向http://android.git.kernel.org,但该网站目前因黑客攻击而无法访问。
sudo gedit /usr/bin/winetricks

寻找类似这样的东西:
load_droid()
{
# See http://en.wikipedia.org/wiki/Droid_(font)

在第6867行左右更改DROID_URL为:
DROID_URL='https://www.codeaurora.org/gitweb/quic/la/?p=platform/frameworks/base.git;a=blob_plain;f=data/fonts/'

我还不得不在大约6059行附近更改字体“Droid Sans Fallback”的SHA1校验和为:
do_droid DroidSansFallback.ttf     "Droid Sans Fallback"     2f8a266389a8e22f68f402b775731eec6b760334

如果你收到其他错误,请找到有问题的“字体名称”,计算新的SHA1并在winetricks中修改该值。
cd ~/.cache/winetricks/font-folder
sha1sum font-name
sudo gedit /usr/bin/winetricks

并用新的计算方法更改数值!

这个技巧在Elementary OS上也适用。但是你需要更改gedit并使用scratch-text-editor。


Wine-staging现在有一个GTK主题的选项。使用方法如下:

1. 首先,安装winehq-staging

https://wiki.winehq.org/Ubuntu中获取:

如果您的系统是64位的,请启用32位架构(如果尚未启用):
sudo dpkg --add-architecture i386
添加存储库:
对于Ubuntu 18.10:
wget -nc https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/Ubuntu_18.10_standard/Release.key sudo apt-key add Release.key sudo apt-add-repository 'deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/Ubuntu_18.10_standard ./'
对于早于18.10版本的Ubuntu:
wget -nc https://dl.winehq.org/wine-builds/Release.key sudo apt-key add Release.key sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
更新软件包列表:
sudo apt-get update 然后安装:
sudo apt-get install --install-recommends winehq-staging
如果apt-get报告缺少依赖项,请安装它们,然后重复最后两个步骤(更新和安装)。
2. 启用GTK主题:
  1. 打开winecfg
  2. 点击“Staging”选项卡
  3. 勾选“启用GTK主题”
  4. 点击确定
3. 启用字体平滑:

改善Wine应用程序的图形界面外观


GTK主题在KDE中也有用吗?还是只适用于基于GTK的桌面环境? - user47206
1所有主题都应该提供GTK版本,即使你使用的桌面环境并不主要使用GTK。 - QwertyChouskie
你知道在Playonlinux中是否也有这个功能吗?在Playonlinux的虚拟驱动中添加一个Wine-staging版本后,该驱动的Wine配置中会出现"Staging"选项卡,但是"启用GTK主题"选项是灰色的。 - user47206
我个人不使用POL,所以我不清楚。我建议您提出一个新的问题。 - QwertyChouskie
我已经创建了一个新的问题。我看到你的解决方案中需要wine-stagingwinehq-staging两者。后者是什么?- 它需要并安装前者才能正常工作,但我不认为Playonlinux会安装它,这可能是问题所在。 - user47206
从软件包描述中:此兼容性包允许将wine-staging作为默认的Wine版本在整个系统中使用。 - QwertyChouskie

cipricus的答案非常出色且非常详细。然而,还有另一个影响字体质量的因素,即FreeType的渲染。

这里解决并这里讨论的那样,更改渲染版本可以恢复可读字体。

在启动您的Wine应用程序的行上添加此前缀

FREETYPE_PROPERTIES="truetype:interpreter-version=35"

例如

FREETYPE_PROPERTIES="truetype:interpreter-version=35" wine cmd


1我很高兴我的旧答案仍然可能有用,尽管我不再使用它,因为对于我现在的需求来说,在Playonlinux中安装Windows程序似乎能够直接提供我在这里努力实现的目标。 - user47206
只有这个答案解决了我的问题! - Stefano

用户47206在最顶部的帖子中的脚本(或者更准确地说,从脚本派生出来的解决方案)对我没有起作用,因为Wine前缀中的regedit无法在本地文件系统中找到该文件。一个更可靠的解决方案——如果你知道自己在做什么(并且不需要图形界面对话框)——是直接修改注册表以启用抗锯齿功能。
$ env WINEPREFIX=~/.wine/<prefix> wine reg add "HKCU\Control Panel\Desktop" /v FontSmoothing /t REG_SZ /d 2 /f

$ env WINEPREFIX=~/.wine/<prefix> wine reg add "HKCU\Control Panel\Desktop" /v FontSmoothingGamma /t REG_DWORD /d 0x578 /f

$ env WINEPREFIX=~/.wine/<prefix> wine reg add "HKCU\Control Panel\Desktop" /v FontSmoothingOrientation /t REG_DWORD /d 1 /f

$ env WINEPREFIX=~/.wine/<prefix> wine reg add "HKCU\Control Panel\Desktop" /v FontSmoothingType /t REG_DWORD /d 2 /f

可以通过以下方式来检查设置:
$ env WINEPREFIX=~/.wine/<prefix> wine reg query "HKCU\Control Panel\Desktop" | grep FontSmoothing