如何打开 gresource 文件

如何打开 gresource 文件

我正在尝试编辑 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

它将创建一个包含文件的目录树(就像解压档案一样)

相关内容