我的 Debian 8 系统(Jessie)主要是 xfce 系统,但我也使用 gnome 和 kde 程序。我没有安装任何桌面环境,但我用一个.xsession
文件启动我的 xsession。问题是,我无法正确使用字体(以及其他 UI 方面)。
工具
首先我不知道该使用什么工具。有 kdesystemsettings
和gnome-tweak-tool
.我确实有gnome-settings-daemon
跑步。 gnome-tweak-tool 中所做的更改会立即体现在 Thunderbird 和 gnome-tweak 工具本身中,但krusader
仅k3b
在我重新启动它们后才会产生影响。不过即使字体太大了,但至少还有效果。
系统设置似乎对正在运行的应用程序没有任何影响,当我重新启动 kde 应用程序时,它的字体似乎被重置为某些默认设置,
gnome-tweak-tool 只提供很少的设置,而 systemsettings 允许单独设置菜单字体、工具栏字体等。所以我认为 gnome 必须基于我自己所做的一些设置以“最适合我”的方式生成细粒度的设置。
Xfce有自己的xfce4-appearance-settings
工具,但它似乎不会影响应用程序的字体,并且仅允许设置单个默认字体。哦,还有qtconfig
,它似乎有两个版本,一个用于 qt4 ,一个用于 qt5 。我什至可能错过了一些。
目前,我看到的字体与任何这些工具的字体设置都不对应。
问题
- 无论如何,我真的很想了解这整件事是如何运作的。各种设置工具和应用程序之间的交互以及它们存储数据的位置对我来说是一个谜。
- 这些设置工具如何交互是否有既定的标准?
- 此外,如果有人能告诉我一种处理所有这些魔法的方法,我将不胜感激。在过去,设置 xrdb 需要时间,但至少这是一个我可以理解的过程并且它收敛了。
具体来说
- 当我更改主题时会发生什么?
- 各种设置工具会互相覆盖对方的数据吗?
- (xfce/gnome) 设置守护进程有什么作用?
- dconf 有什么作用?
答案1
这个答案并不完全规范——参见回答者备注在最后。
在这个答案中,我打算根据基于 Debian 的发行版(Xubuntu 和 Debian Xfce)的实际经验提供简洁的解释。无论如何,我已经确认字体设置对于 Debian GTK+ 环境中的 Qt 应用程序不会立即生效。
关于工具
首先我不知道该使用什么工具。
如果您是经验丰富的用户,请不要使用任何第三方配置工具。
为了方便起见,用户倾向于使用 GNOME Tweak Tool 等工具。然而,为了获得最佳兼容性,最好使用桌面环境或相应工具包提供的图形配置工具。或者,使用更高级的工具,例如 Dconf、Xfconf 或 GSettings。
哦,还有 qtconfig,它似乎有两个版本,一个用于 qt4 和 qt5。我什至可能错过了一些。
用于qt4-qtconfig
Qt4,类似地用于qt5ct
Qt5。
要检查特定应用程序使用的 Qt 版本,请使用 APT 跟踪包依赖关系。例如,我在 Xubuntu 中安装了 VLC。由于 VLC 使用 Qt,因此我可以查询 APT 缓存并使用“qt”作为关键字来过滤任何 Qt 依赖项。
$ apt-cache depends vlc | grep 'qt'
Depends: libqtcore4
Depends: libqtgui4
在本例中,结果暗示 VLC 正在使用 Qt4 工具包。
另一种方法是检查是否已安装任何 Qt 软件包。这可以通过运行 Dpkg 命令来完成。我选择过滤包含这些关键字“libqt”和“gui”的包,因为上面的早期 APT 命令已经暗示了这一点。
$ dpkg-query -W | grep 'libqt' | grep 'gui'
libqtgui4:i386 4:4.8.5+git192-g085f851+dfsg-2ubuntu4.1
在这种情况下,结果显示 Qt4 版本 4.8.x 已安装。如果安装了 Qt5 软件包,结果将包含libqt5gui5
而不是libqtgui4
. Qt5 的命名不同,这就是为什么我使用grep
两次来过滤结果。
目前,我看到的字体与任何这些工具的字体设置都不对应。
正如 L. Levrel 之前所暗示的,系统设置很混乱。不在乎 GNOME/KDE/Qt 应用程序,但gnome-settings-daemon
在 Xfce 系统中运行? Xfce 有自己的设置守护程序xfsettingsd
,由 Debian 中的此软件包提供xfce4-settings
。
字体设置差异
在下面的屏幕截图中,我使用 Xubuntu 和 Debian Xfce 在 Xfce 桌面环境中运行 Xfce 外观、Qt 4 设置和 VLC 媒体播放器。然后,我将默认字体从“Droid Sans (Regular)”更改为“Droid Sans (Bold)”,字体大小相同为 10。
对于 Xubuntu,字体设置会立即应用于 GTK+ 和 Qt 应用程序。无论使用什么工具包,Xfce 外观中指定的字体都足以影响系统范围。
对于 Debian Xfce,字体设置仅立即应用于 GTK+ 应用程序。我必须使用 Qt 4 设置来更改 Qt 中的默认字体,从“Sans Serif (Normal)”更改为“Droid Sans Mono (Regular)”。在应用更改之前,我还必须从菜单栏手动保存。
尽管 Xubuntu 和 Debian Xfce 都在运行xfsettingsd
,但 Debian Xfce 由于某种原因没有自动遵循字体设置。可能的线索:Debian Xfce 可能缺少某些允许 Qt 应用程序自动读取系统设置的软件包。
关于提问
这些设置工具如何交互是否有既定的标准?
可能不会。这就是为什么用户应该不是使用第三方工具配置系统设置。最终用户不知道这些工具如何相互交互,或者这些工具不太可能设计用于在这种混合设置环境中工作。
各种设置工具会互相覆盖对方的数据吗?
这取决于配置工具的工作方式。如果两个不同的工具共享相同的底层配置方法(即 GSettings),那么两者都会读取相同的配置文件。
在第一个屏幕截图中,请注意 Qt 4 设置仍然显示“Droid Sans(常规)”而不是“Droid Sans(粗体)”。 Xubuntu 中的系统范围设置已更改,但 Qt 4 设置不会立即反映更改,可能是由于使用了不同的工具包。退出并再次启动时,Qt 4 设置现在将显示最新的字体设置“Droid Sans(粗体)”。
对于其余问题,我建议查看以下链接页面以进一步阅读。
- xfce:xfce4-设置:xfsettingsd在 Xfce 文档上。
- 项目/dconf在 GNOME 维基上!
- DConf-0.24.0 / DConf-Editor-3.16.1第 34 章:GNOME 库和实用程序,超越 Linux® From Scratch - 版本 7.8。
- 什么是 dconf,它的功能是什么,如何使用它?关于询问 Ubuntu。
- dconf-editor 和 gsettings 不应该访问同一个数据库吗?关于询问 Ubuntu。
- 如何操作/G 设置在 GNOME 维基上!
- 字体在 Debian 维基上。
- 字体配置在 Gentoo 维基上。
- 字体配置在 ArchWiki 上。
免责声明:这个答案主要基于我在 Xubuntu 14.04 和 Debian 8 Xfce(都运行 Xfce 4.10)中的经验。尽管运行类似的桌面环境,但字体设置生效的体验略有不同。已知的限制如下。
- 就像我使用 Xfce 的经验一样,我假设运行类似环境的其他系统不一定自动遵循字体设置。
- 我没有调查混合环境的每一种可能的配置;一些讨论的要点可能并不完全适用于手动配置的系统。
- 我没有测试 KDE 应用程序的字体设置;一些 KDE 应用程序(例如 Dolphin 文件管理器)同时依赖于 KDE 和 Qt 软件包,但 Qt 应用程序仅依赖于 Qt 软件包;这个答案可能与 KDE 应用程序无关。
长话短说不要混合为不同环境创建的工具;不要使用第三方配置工具。使用桌面环境或相应工具包提供的图形工具。
回答者备注:我写的这个答案已经足够了,但当时并不完全规范。因此,这个答案现在是一个社区维基,因此任何具有最低声誉的人都可以改进这篇文章以跟上每个工具包的最新更改,甚至使用更简洁的示例重新解释字体设置差异(如果这样做,请删除相关的文本来自“免责声明”)。
答案2
对我来说它看起来也很混乱。我将分享我所知道的,尽管它并没有给出这个难题的完整解决方案。
- 对于依赖GTK的GUI软件,GTK小部件在工具包配置文件中配置,例如
.gtkrc-2.0
- Qt 应用程序可能以相同的方式工作,使用
.qtrc
某种文件 - 更传统的 X 软件是在每个应用程序的基础上配置的
.Xdefaults
/.Xresources
- 窗口管理器有自己的配置文件,通常位于 的子目录中(除了或等
.config
中的 Gnome ,以及 中的 KDE ).gnome
.gconf
.kde[34]
fontconfig
由下面的文件配置的系统引入/etc/fonts
了某种别名。尝试例如这个命令行:fc-match Mono
。因此,如果应用程序被配置(直接或通过其工具包)使用eg Sans
,您可以通过配置fontconfig来更改相应的字体。一种可能性是使用“infinality”子系统,其配置位于/etc/fonts/infinality/infinality.conf
(包含有关如何使用它的注释)。
答案3
您可以尝试使用不同的方法来一起渲染字体。 Infinality 是一个很酷的项目,可能适合您的需求。虽然我不知道它如何工作的内部细节,但我可以告诉你它在我的 8.1 debian 安装上完美地工作。