You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.6 KiB
58 lines
1.6 KiB
#!/bin/bash
|
|
|
|
# CONSTANTS
|
|
|
|
array=(
|
|
netspeedsimplified@prateekmedia.extension
|
|
runcat@kolesnikov.se
|
|
dash-to-dock@micxgx.gmail.com
|
|
appindicatorsupport@rgcjonas.gmail.com
|
|
weeks-start-on-monday@extensions.gnome-shell.fifi.org
|
|
)
|
|
|
|
# FUNCTIONS
|
|
|
|
function find_extension_by_uuid {
|
|
local uuid=$1
|
|
local page=${2:-1}
|
|
JSON=$(curl -Lfs "https://extensions.gnome.org/extension-query/?search='${i}'&page=$page")
|
|
local numpages=$(echo $JSON | jq ".numpages")
|
|
local extension=$(echo $JSON | jq ".extensions[] | select(.uuid==\"$i\") ")
|
|
if [[ -z $extension ]]; then
|
|
page=$((page + 1))
|
|
[[ $page -gt $numpages ]] && echo "not found, exiting!" && exit 2
|
|
echo >&2 "not found, trying page #$page..."
|
|
find_extension_by_uuid "$uuid" "$page"
|
|
else
|
|
echo "$extension"
|
|
fi
|
|
}
|
|
|
|
# MAIN
|
|
|
|
set -Eue
|
|
|
|
gnome_version=$(gnome-extensions version | cut -d. -f1)
|
|
echo "GNOME=$gnome_version"
|
|
|
|
for i in "${array[@]}"; do
|
|
page=1
|
|
if ! gnome-extensions list | grep --quiet "$i"; then
|
|
EXTENSION=$(find_extension_by_uuid "$i")
|
|
|
|
name=$(echo "$i" | sed 's/@//')
|
|
version_tag=$(echo "$EXTENSION" | jq ".shell_version_map.\"$gnome_version\".version")
|
|
echo "$i => $name => $version_tag"
|
|
zip_file="$i.zip"
|
|
URL="https://extensions.gnome.org/extension-data/$name.v$version_tag.shell-extension.zip"
|
|
wget -O "$zip_file" "$URL"
|
|
gnome-extensions install --force "$zip_file"
|
|
rm "$zip_file"
|
|
|
|
# interactive ONLY!
|
|
busctl call --timeout 20 --expect-reply=yes --user org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s "$i"
|
|
fi
|
|
gnome-extensions enable "$i"
|
|
echo "successfully enabled extension: $i"
|
|
# break
|
|
done
|