[GNOME] 扩展备份与恢复
备份:
#!/usr/bin/env bash
# 备份已安装的扩展
# 不传参时收集所有已安装的扩展,传参指定扩展的文件夹名时仅收集一个扩展($HOME/.local/share/gnome-shell/extensions/)
extension_id="$1"
mkdir -p "tmp/$extension_id"
cp -frT "$HOME/.local/share/gnome-shell/extensions/$1" "tmp/$1"
find tmp -name gschemas.compiled | xargs rm -rf
out_dir="${2:-extensions}"
mkdir -p "$out_dir"
for dir in tmp/*; do
if [ -d "$dir" ]; then
name=$(basename "$dir")
# or use cmd `gnome-extensions pack`
sh -c "cd tmp; zip -r \"$out_dir/${name}.zip\" \"$name\""
fi
done
rm -rf tmp
恢复:
#!/usr/bin/env bash
# 从备份中恢复扩展
# 不传参时默认从当前目录下extensions目录中查找备份
parent_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
backup_dir="${1:-${parent_path}/extensions}"
for f in "$backup_dir"/*.zip; do
if [ -f "$f" ]; then
name=$(basename "$f")
gnome-extensions install "$backup_dir/$name"
fi
done
echo "gnome扩展安装完成, 重启后在扩展管理器启用"