如何在GNOME中全局禁用客户端装饰?

我正在使用Ubuntu GNOME 17.04。 一个人遇到客户端装饰(CSD),因为大多数官方GNOME应用程序(Nautilus,gedit,Evince等)使用GtkHeaderBars (组合标题栏和工具栏,请参见链接的屏幕截图),而其他应用程序则没有。 Unity中禁用此function,所有应用程序都使用传统的单独标题栏。

截图(来自本文 ):

  • Nautilus与GtkHeaderBar

  • Nautilus没有GtkHeaderBar

为了保持一致性,我想全局禁用GtkHeaderBars(在所有使用它的应用程序中)并使用单独的标题栏。 有没有办法实现这一目标?

我听说过gtk3-nocsd软件包,但无法使GNOME适用于所有应用程序。

我担心这是无法做到的,除非应用程序的开发人员已经处理过这样的function。 在窗口顶部显示标题栏并不意味着CDS实际上已禁用。 它仍然缺少经典的窗口布局,即标题栏,菜单栏,工具栏,状态栏。

客户端装饰已经破坏了linux用户界面 ,使得应用程序和桌面环境看起来很丑陋而不是原生。

我希望每个开发人员都会忽略Gnome指南,并保持他的应用程序对所有环境都有用且一致。

虽然我同意Vassilis认为CSD是可怕的 – 幸运的是,他认为禁用它们的可能性是错误的。

在Ubuntu中,安装gtk3-nocsd软件包,然后注销并重新登录。

这种“黑客”导致GTK +应用程序不再禁用窗口管理器的窗口装饰。 结果可能看起来有点奇怪 – 这是GNOME的计算器应用程序在标准CSD中的外观:

在此处输入图像描述

和NOCSD黑客一起:

在此处输入图像描述

您可以看到为什么Vassilis断言CSD是一个破坏Linux用户界面的可怕想法的几个例子:

  1. 非CSD窗口标题显示“<2>”,因为我同时运行2个计算器窗口来截取屏幕截图,而CSD也标题为“计算器”,但没有显示,所以如果你的窗口经理有一个窗口列表UI(例如“任务栏”),你看到列出了“计算器”,它不会在屏幕上找到它。
  2. 我的窗口管理器启用了“阴影”,这使我更容易看到哪些窗口在其他窗口之上,但CSD窗口没有任何理由禁用它 – 使我的屏幕再次理解比需要更复杂。
  3. 我经常使用“永远在线”function,这就是为什么我要求我的窗口管理器显示一个方便的按钮,使其靠近其他窗口操作按钮,但CSD应用程序显然不知道它并且没有没有表现出来。 “引脚到当前工作区”按钮的问题相同,虽然这里的错误更加明显,因为它处于默认配置,而GTK +应该知道这一点。
  4. 未显示的内容(因为我很懒)是窗口操作菜单(右键单击标题),CSD窗口有一组非常有限的选项(基本上是6个标准操作和“总是在顶部”)而我的窗口管理器提供了我经常使用的更多function)。
  5. 另一件未示出的事情是CSD窗口在不活动时不会改变其标题颜色,这与我拥有的所有其他窗口不同。 如果KDE不是一个非常棒的桌面环境并且将GTK +应用程序配置为使用正确的标题颜色,这将是一个更明显的错误 – 在其他DE上,活动的GTK + CSD标题颜色甚至不匹配活动的“本机”窗口标题颜色。

我能够在Ubuntu 18.04上运行我的窗口管理器(Openbox)提供的装饰的evince PDF查看器,如下所示:

 $ sudo apt-get install gtk3-nocsd $ gtk3-nocsd evince