我正在尝试编辑 adwaita 主题,唯一的方法是打开文件gtk.gresource
。
gedit
不会打开该文件,geany
不会打开该文件。
我如何打开文件以便进行编辑gtk.css
?
答案1
一段时间以来,GTK-3 主题 CSS 文件被预编译为二进制格式 ( *.gresource
) 并作为包安装。有一个名为格雷资源处理这些文件
- 通常,它与 GLib 库一起安装
- 因此它应该在包中
libglib2.0-bin
- 由于此包通常已经安装,您可以在其中找到它,
/usr/bin
并通过调用获取更多文档man gresource
简而言之
列出
*.gresource
文件的内容:gresource list gtk.gresource
从中提取特定资源:
gresource extract gtk.gresource /org/gnome/adwaita/gtk-main.css
基本上,这允许您提取原始主题的内容。您可以从提取的资源中制作常规主题(带有离散 CSS 文件)。需要注意的关键点是您必须更改gtk-3.0/gtk.css
主题中顶层文件的入口点。在二进制主题中,您会在那里找到 URL 引用
@import url("resource:///org/gnome/THEMENAME/gtk-main.css");
您需要更改此引用以指向本地安装的文件
@import url("gtk-main.css");
如果你想从你以离散 CSS 文件形式编辑的主题编译出一个新的二进制包,请参阅此Satyajit Sahoo 于 2012 年发表的博客文章
答案2
$ file gtk.*
gtk.css: ASCII text
gtk.gresource: GVariant Database file, version 0
所以答案是:你不需要。它是软件(见变异型)。
所以我可以编辑 gtk.css
这是一个 ASCII 文件,因此可以用 gEdit 进行编辑。
答案3
您可以使用以下脚本从 gresource 中递归提取所有文件(将其保存~/bin/gextract.sh
并使其可执行):
#!/bin/bash
# recursively extract gresource
for file in "$@"; do
gresource list "$file" | while read i; do
filepath="${i#/}"
dirpath="${filepath%/*}"
mkdir -p "$dirpath"
cd "$dirpath"
gresource extract "$file" "$i" > "${i##*/}"
cd - >/dev/null
done
done
用法:
gextract.sh gtk.gresource
它将创建一个包含文件的目录树(就像解压档案一样)