如何使 GTK Inspector 更改永久生效?

如何使 GTK Inspector 更改永久生效?

新的”文本编辑器在 Ubuntu 22.10 / 23.04 / 23.10(我不是在谈论旧gedit工具)中,编辑区域(就在第一行上方)有较大的顶部边距,如下所示:

在此处输入图片描述

今天,我偶然发现了GTK 检查器可以从文本编辑器Ctrl++ ShiftI大写i)。导航到对象特性并改变上边距从 12 到 2,此顶部边距大小减小到更有意义的设置:

在此处输入图片描述

在此处输入图片描述

但是,此设置更改不是永久性的;关闭并重新启动后,gnome-text-editor此大小将恢复为旧值(12)。

有没有办法让改变永久生效?我猜,~/.config/gtk-4.0/gtk.css需要做一些修改;然而GTK 检查器对我没有帮助。

答案1

据我所知,这是一个 GTK Widget“属性”

选项 1:如果 GUI 以文本形式声明

  • 仅当以下情况时才可以在运行时包中更改它:

    1. 使用 GTK Builder 和 GUI 的应用程序在运行时从 XML 加载。
    2. 基于脚本(例如 Python)的应用程序。

    否则,没有其他办法,只能更改源代码本身,因为应用程序不使用 GTK 构建器,它基于编译的编程语言。GUI 以二进制格式嵌入在可执行文件或其共享库中。

  • GTK Widget“属性”与 CSS 样式不同。我确实检查了它:padding-top它们margin-top并不相同,只是增加了更多空间。即使在层次结构中向下移动也没有效果,我怀疑它被运行时程序更新/覆盖了。

    无论如何,这是我首先尝试调试和跟踪的,可能是我错过了一些东西:

    .editor.GtkSourceView.monospace.sourceview.view {
      border-style: solid;
      border-top-width: 3px;
      border-top-color: rgb(0,255,0);
      border-left-width: 2px;
      border-left-color: rgb(0,255,255);
      background-color: rgb(255,0,0);
      margin-top: 100px;
      padding-top: 50px;
    }
    
    .editor.GtkSourceView.monospace.sourceview.view > text {
      border-style: solid;
      border-top-width: 5px;
      border-top-color: rgb(255,255,0);
      border-left-width: 3px;
      border-left-color: rgb(0,255,255);
    
      /* not effective ??? */
      background-color: rgb(0,0,200);
      margin-top: 10px;
      padding-top: 100px;
      margin: 50px;
      padding: 30px;
    }  
    

    gnome-text 编辑器上 GTK 检查器 CSS 调整试用版的屏幕截图

答案2

GTK 检查器会有所帮助,您需要选择“CSS 节点”选项卡才能找出要更改的内容。该选项卡将显示已更改的 CSS 节点。更改“本地 GTK4 CSS”的方法是正确的,否则,在主题中更改它只会持续到下一次更新。使用 gnome-calculator 的示例(我没有安装 gedit):

GTK_DEBUG=interactive gnome-calculator

将打开两个窗口,一个是计算器,另一个是“调试器”。让我们检查一下红色的取消按钮:

按下“选择对象按钮”并单击您想要检查的控件 - 调试器将消失并显示属性。更改为“CSS 节点”:

“C”按钮是“清除按钮”或“文本按钮”样式。第一步,您可以尝试使用 css 选项卡(这是一个游乐场)进行更改:

button.clear-button label {color:yellow;}

并确保 css 已打开:

因此,您已经更改了按钮的颜色(作为示例)。要保留它,您必须将此行写入文件:

  • ~/.config/gtk-3.0/gtk.css
  • ~/.config/gtk-4.0/gtk.css

取决于应用程序是否已使用 GTK4.0 或 GTK3.0

这是一项繁琐的工作,但由于 CSS 没有真正记录下来,所以我设法通过这种方式创建自己的主题。

相关内容