diff --git a/gnome/gnome-extensions.sh b/gnome/gnome-extensions.sh index 1810d5c..337af76 100755 --- a/gnome/gnome-extensions.sh +++ b/gnome/gnome-extensions.sh @@ -3,16 +3,9 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" source "$SCRIPT_DIR/../utils.sh" -PYTHON="$(which python3)" - install_packages python-pipx gnome-shell-extensions -# Install or reinstall gext if missing or broken -if ! ~/.local/bin/gext --version &> /dev/null; then - echo "gext missing or broken, reinstalling..." - pipx uninstall gnome-extensions-cli 2>/dev/null || true - pipx install --python "$PYTHON" gnome-extensions-cli --system-site-packages -fi +ensure_gext EXTENSIONS=( "tilingshell@ferrarodomenico.com" diff --git a/migrations/1792598033.sh b/migrations/1792598033.sh index ee05896..e1c3725 100644 --- a/migrations/1792598033.sh +++ b/migrations/1792598033.sh @@ -1,8 +1,12 @@ #!/bin/bash # Install the Tailscale GNOME extension +source "$HOME/.local/share/coredesktop/utils.sh" + ext="tailscale-gnome@diskmth.fr" +ensure_gext || exit 1 if ! ~/.local/bin/gext list | grep -q "$ext"; then - ~/.local/bin/gext --filesystem install "$ext" - ~/.local/bin/gext --filesystem enable "$ext" + ~/.local/bin/gext --filesystem install "$ext" || exit 1 fi +# Enable even if it was already installed, in case an earlier run stopped short +~/.local/bin/gext --filesystem enable "$ext" diff --git a/updates.d/80-gnome-extensions.sh b/updates.d/80-gnome-extensions.sh index efc6b99..b270fe3 100755 --- a/updates.d/80-gnome-extensions.sh +++ b/updates.d/80-gnome-extensions.sh @@ -1,5 +1,7 @@ #!/bin/bash +source "$HOME/.local/share/coredesktop/utils.sh" + is_installed() { command -v gnome-shell &>/dev/null } @@ -7,12 +9,7 @@ is_installed() { run_update() { echo "Updating GNOME extensions..." - # Reinstall gext if missing or broken (e.g. its pipx venv went stale after a Python upgrade) - if ! ~/.local/bin/gext --version &> /dev/null; then - echo "gext missing or broken, reinstalling..." - pipx uninstall gnome-extensions-cli 2>/dev/null || true - pipx install --python "$(which python3)" gnome-extensions-cli --system-site-packages - fi + ensure_gext || return 1 # Update every enabled user extension to the latest version for this GNOME Shell. # The filesystem backend writes directly to ~/.local/share/gnome-shell/extensions; diff --git a/utils.sh b/utils.sh index cbcb5a4..a834a66 100755 --- a/utils.sh +++ b/utils.sh @@ -41,6 +41,15 @@ install_pipx_apps() { return $status } +# Reinstall gext if missing or broken. Its pipx venv goes stale when Arch +# upgrades Python, and migrations run before updates.d/60-pipx.sh rebuilds it. +ensure_gext() { + ~/.local/bin/gext --version &> /dev/null && return 0 + echo "gext missing or broken, reinstalling..." + pipx uninstall gnome-extensions-cli &> /dev/null || true + pipx install --python "$(which python3)" gnome-extensions-cli --system-site-packages +} + # Function to remove pacman/AUR packages if installed remove_packages() { local packages=("$@")