|
|
|
@ -0,0 +1,58 @@ |
|
|
|
#!/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 |