答案1
所讨论的图像的路径是硬编码的,'resource:///org/gnome/shell/theme/process-working.svg'
并且来自.gresource
正在使用的文件。
此资源文件对于登录屏幕和桌面会话可能有所不同。
假设你使用的是默认 Ubuntu 20.04
您需要process-working.svg
从.gresource
文件中编辑/替换该文件。
默认 Ubuntu 20.04/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource
文件是需要编辑的文件。
我已经完成了这个过程并process-working.svg
用一些 .svg 替换了文件并陷入了登录循环。
默认process-working.svg
文件是这样的。
并且它的属性如下。
svg 图像似乎有一个窍门,即一个带有不同旋转器的单个 svg 图像。因此,我谷歌了一下,找到了一些带有类似 gnome-shell 主题的 512 x 32 像素的图像,并成功更改了旋转器。
获取/创建 SVG 将花费很多时间。所以我使用了 vanilla gnome 的 spinner 和默认的 Yaru
编辑:
为了测试目的,已经用 inkspace 编辑了原始process-working.svg
文件,保持原始尺寸 512 x 32 像素和 svg 格式并进行了测试。
为了实现自动化目的,可以使用以下脚本。
要求
- 首先将您喜欢的 .svg 文件 (512px X 32px) 保存
process-working.svg
在/tmp
目录中。 libglib2.0-dev
使用以下命令安装包
sudo apt install libglib2.0-dev
然后将以下脚本保存为纯文本文件pwsvg.sh
(process-working.svg)
#!/bin/bash
source="/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource"
backup=$source.BAK
pkg=$(dpkg -l | grep libglib2.0-dev >/dev/null && echo "yes" || echo "no")
if [ "$pkg" == "no" ]
then
echo "
-------------------------------------------------------------------------------------------------------------------------------------
Sorry, the package 'libglib2.0-dev' is not installed. Install the package 'sudo apt install libglib2.0-dev' and then run this Script.
For now, Exiting...
-------------------------------------------------------------------------------------------------------------------------------------"
exit 1
fi
cd /tmp
if ! [ -f "process-working.svg" ]
then
echo "-----your preferred .svg file 'process-working.svg' not found in /tmp folder. put the process-working.svg file in /tmp directory first.-----"
exit
fi
if [ "$UID" != "0" ]
then
echo "This Script must be run with sudo"
exit 1
fi
# take backup of original resource file
if ! [ -f $backup ]
then
cp $source $backup;
fi
for a in $(gresource list $backup); do
b="${a/#\/org\/gnome\/shell\/}"
mkdir -p $(dirname $b)
gresource extract $backup $a > $b
done
mv -f process-working.svg ./theme/
FILES=$(find "theme" -type f -printf "%P\n" | xargs -i echo " <file>{}</file>")
cat <<EOF >"theme/gnome-shell-theme.gresource.xml"
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">
$FILES
</gresource>
</gresources>
EOF
cd theme
glib-compile-resources gnome-shell-theme.gresource.xml
mv -f gnome-shell-theme.gresource $source
echo " Reboot to see the changes "
运行命令sudo bash pwsvg.sh
并重新启动。
如果出现任何问题,请从任何 tty 使用备份文件替换已编辑的 gresource 文件,该文件/usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource.BAK
sudo mv /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource.BAK /usr/share/gnome-shell/theme/Yaru/gnome-shell-theme.gresource
在 Ubuntu 20.04.2 中测试
答案2
图标与其位置分开缓存,因此您对主题资产所做的任何更改都不会反映在缓存更新之前......如果您从未对系统应用更新,有时可能需要数年时间。
幸运的是,您可以通过以下方法强制重建缓存:
- 打开终端(如果尚未打开)
- 重建缓存:
sudo update-icon-caches /usr/share/icons/*
- 没有第 2 步。
如果这不起作用...
- 更新主题目录的时间戳:
sudo touch /usr/share/icons/Yaru ~/.local/share/icons/Yaru
- 使用
gtk-update-icon-cache
命令:sudo gtk-update-icon-cache
希望您看到 Yaru 的process-working-symbolic
图标已被替换为您想要看到的图标