![当自定义 GTK-3 主题处于符号链接中时,Evince 文档查看器主题解析错误会导致 GUI 不可见](https://linux22.com/image/917241/%E5%BD%93%E8%87%AA%E5%AE%9A%E4%B9%89%20GTK-3%20%E4%B8%BB%E9%A2%98%E5%A4%84%E4%BA%8E%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E4%B8%AD%E6%97%B6%EF%BC%8CEvince%20%E6%96%87%E6%A1%A3%E6%9F%A5%E7%9C%8B%E5%99%A8%E4%B8%BB%E9%A2%98%E8%A7%A3%E6%9E%90%E9%94%99%E8%AF%AF%E4%BC%9A%E5%AF%BC%E8%87%B4%20GUI%20%E4%B8%8D%E5%8F%AF%E8%A7%81.png)
使用指向已安装驱动器上的内容的符号链接替换.themes
文件夹时出现以下错误:$HOME
(evince:28717): Gtk-WARNING **: 13:21:16.921: Theme parsing error:
gtk.css:1:0: Failed to import:
Error opening file $HOME/.themes/Flat-Remix-GTK-Dark-Solid/gtk-3.0/gtk.css: Permission denied
(evince:31282): Gtk-WARNING **: 13:32:54.277:
Error loading theme icon 'dialog-password' for stock:
Icon 'dialog-password' not present in theme Flat-Remix-Dark
结果是一个完全不可见的 GUI,如所述这里
GitHub 问题中提供的解决方案已在新版本中得到解决,另外值得一提的是,Evince 是通过 Apt 安装的,而不是 Snap。
.themes
如果我将符号链接替换为文件夹中的内容,GUI 将返回$HOME
。文件夹作为符号链接似乎不会影响迄今为止我见过的任何其他应用程序。
答案1
经过一番疯狂的追逐,我终于找到了这个问题在 Evince 的 GitLab 上。问题是这些文件位于 AppArmor 未批准的位置,因此 Evince 无法访问它们。
为了解决这个问题并继续对.themes
和.icons
文件夹使用符号链接,快速的答案是将以下几行添加到/etc/apparmor.d/usr.bin.evince
:
owner {path-to-icons-folder}/.icons/** r,
owner {path-to-themes-folder}/.themes/** r,
较长的答案是:
首先备份文件/usr/apparmor.d/usr.bin.evince
安装 apparmor-utils:
sudo apt install apparmor-utils
运行 AppArmor 的扫描实用程序:
sudo aa-genprof /usr/bin/evince
当实用程序运行时,尝试在另一个终端窗口中使用 Evince 打开 PDF 文件:
evince {name-of-your-pdf.pdf}
现在返回到原始终端窗口并按s
“扫描”。该实用程序将扫描日志以查找 AppArmor 拒绝 Evince 的权限尝试,并询问您是否允许 Evince 将来访问这些权限。接受建议。
现在,如果您尝试再次运行 Evince,您会注意到一大堆新的权限错误。您可以继续添加这些错误,直到错误停止显示,但我希望我的配置文件稍微不那么混乱,所以我建议编辑该/usr/apparmor.d/usr.bin.evince
文件。找到扫描期间添加的两个条目,然后编辑它们并将文件 URL 更改为:
owner {path-to-icons-folder}/.icons/** r,
owner {path-to-themes-folder}/.themes/** r,
请注意,这将授予 Evince 对文件夹和子目录中所有文件的权限,而 Evince 可能会更改这些文件的权限,因此请将范围保持在较小范围内。
保存文件后,告诉 AppArmor 实用程序再次扫描。这样 AppArmor 的配置就会更新。现在 Evince 应该具有所需的权限,并且在您下次打开 PDF 时会显示其令人惊叹的 GUI。