gnome、kde 和 xfce 中的字体设置如何工作?

Mar*_*urg 9 gnome kde settings

我的 Debian 8 系统 (Jessie) 主要是一个 xfce 系统,但我也使用 gnome 和 kde 程序。我没有安装任何桌面环境,但是我用一个.xsession文件启动了我的 xsession 。问题是,我无法正确使用字体(和其他 UI 方面)。

工具

首先我不知道用什么工具。有 kdesystemsettingsgnome-tweak-tool. 我确实有gnome-settings-daemon跑步。立即体现在雷鸟和gnome-的调整工具本身的gnome-TWEAK工具所做的更改,但影响如krusaderk3b后,才重新启动。但即使那样字体也太大了,但至少有一个效果。

Systemsettings 似乎对运行的应用程序没有任何影响,当我重新启动 kde 应用程序时,它的字体似乎被重置为某些默认设置,

Gnome-tweak-tool 只提供很少的设置,而 systemsettings 允许单独设置菜单字体、工具栏字体等。因此,我认为 gnome 必须根据我自己以“最适合我”的方式进行的一些设置来生成细粒度设置。

Xfce 有自己的xfce4-appearance-settings工具,但它似乎不会影响应用程序的字体,并且只允许设置单个默认字体。哦,然后是qtconfig,它似乎有两个版本,一个用于 qt4 和 qt5。我什至可能错过了一些。

目前,我看到的字体与任何这些工具的字体设置都不对应。

问题

  • 无论如何,我真的很想了解这整个事情应该如何运作。各种设置工具和应用程序之间的交互以及它们存储数据的位置对我来说是个谜。
  • 这些设置工具的交互方式是否有既定标准?
  • 此外,如果有人能告诉我一种处理所有这些魔法的方法,我将不胜感激。在过去,设置 xrdb 需要时间,但至少这是一个我能理解的过程,并且它收敛了。

具体来说

  • 当我更改主题时会发生什么?
  • 各种设置工具会覆盖彼此的数据吗?
  • (xfce/gnome) 设置守护程序有什么作用?
  • dconf 有什么作用?

小智 5

这个答案并不完全规范——请参阅最后的回答者注释

在这个答案中,我打算根据基于 Debian 的发行版(Xubuntu 和 Debian Xfce)的实际经验提供简明的解释。无论如何,我已经确认字体设置不会立即对 Debian 的 GTK+ 环境中的 Qt 应用程序生效。

关于工具

首先我不知道用什么工具。

如果您是有经验的用户,请不要使用任何第三方配置工具。

为方便起见,用户倾向于使用诸如 GNOME Tweak Tool 之类的工具。但是,为了获得最佳兼容性,最好使用桌面环境或相应工具包提供的图形配置工具。否则,请使用更高级的工具,例如 Dconf、Xfconf 或 GS​​ettings。

哦,然后是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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,结果暗示 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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,结果显示安装了 4.8.x 版的 Qt4。如果安装了 Qt5 包,结果将包含libqt5gui5而不是libqtgui4. Qt5 的命名是不同的,这就是为什么我使用grep两次来过滤结果。

目前,我看到的字体与任何这些工具的字体设置都不对应。

正如 L. Levrel 之前所暗示的那样,系统设置很混乱。不用管 GNOME/KDE/Qt 应用程序,而是gnome-settings-daemon在 Xfce 系统中运行?Xfce 有自己的设置守护进程xfsettingsd,由xfce4-settingsDebian 中的这个包提供。

字体设置不一致

在下面的截图中,我在 Xfce 桌面环境中运行 Xfce Appearance、Qt 4 Settings 和 VLC 媒体播放器,使用 Xubuntu 和 Debian Xfce。然后,我将默认字体从“Droid Sans(常规)”更改为“Droid Sans(粗体)”,字体大小相同,为 10。

对于 Xubuntu,字体设置立即应用于 GTK+ 和 Qt 应用程序。无论使用何种工具包,Xfce Appearance 中指定的字体足以影响系统范围。

Xubuntu 14.04 中的字体设置

对于 Debian Xfce,字体设置仅适用于 GTK+ 应用程序。我不得不使用 Qt 4 Settings 来更改 Qt 中的默认字体,从“Sans Serif(Normal)”到“Droid Sans Mono(Regular)”。在应用更改之前,我还必须从菜单栏中手动保存。

Debian Xfce 8 中的字体设置

尽管 Xubuntu 和 Debian Xfce 都在运行xfsettingsd,但 Debian Xfce 出于某种原因并没有自动遵守字体设置。可能的线索:Debian Xfce 可能缺少某些允许 Qt 应用程序自动读取系统设置的软件包。

关于问题

这些设置工具的交互方式是否有既定标准?

可能没有。这就是为什么用户应使用第三方工具来配置系统设置。最终用户不会知道这些工具如何相互交互,或者这些工具不太可能设计用于在这种混合设置环境中工作。

各种设置工具会覆盖彼此的数据吗?

这取决于配置工具的工作方式。如果两个不同的工具共享相同的底层配置方法,即 GSettings,那么它们应该会读取相同的配置文件。

在第一个屏幕截图中,请注意 Qt 4 设置仍然显示“Droid Sans (Regular)”而不是“Droid Sans (Bold)”。Xubuntu 中的系统范围设置已更改,但 Qt 4 设置不会立即反映更改,可能是由于使用的工具包不同。当退出并再次启动时,Qt 4 设置现在将显示最新的字体设置“Droid Sans(粗体)”。

对于其余问题,我建议查看以下链接页面以进一步阅读。

免责声明:此答案主要基于我在 Xubuntu 14.04 和 Debian 8 Xfce(均运行 Xfce 4.10)中的经验。尽管运行类似的桌面环境,但字体设置生效的体验略有不同。已知限制如下。

  • 就像我使用 Xfce 的经验一样,我假设其他运行类似环境的系统不一定会自动遵守字体设置。
  • 我没有调查混合环境的所有可能配置;一些讨论的要点可能并不完全适用于手动配置的系统。
  • 我没有测试 KDE 应用程序的字体设置;一些 KDE 应用程序(例如 Dolphin 文件管理器)依赖于 KDE 和 Qt 包,但 Qt 应用程序仅依赖于 Qt 包;此答案可能与 KDE 应用程序无关。

TL;DR不要混合为不同环境创建的工具;不要使用第三方配置工具。使用桌面环境或相应工具包提供的图形工具。


回答者注:我写了这个答案就足够了,但当时并不完全规范。因此,这个答案现在是一个社区维基,因此任何声誉最低的人都可以改进这篇文章以跟上每个工具包的最新变化,或者甚至使用更简洁的示例重新解释字体设置差异(如果这样做,请删除相关的来自“免责声明”的文本)。