From bd7b8d658838663b1149bba5831a76700db24d60 Mon Sep 17 00:00:00 2001 From: "Jorge O. Castro" Date: Sat, 20 Dec 2025 21:37:15 -0500 Subject: [PATCH 1/3] feat: add a convenience just for recommended extensions --- .../shared/usr/share/ublue-os/just/apps.just | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 4dd1431..9d839e7 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -69,3 +69,71 @@ cncf: fi bbrew -f "/usr/share/ublue-os/homebrew/cncf.Brewfile" +# Install recommended GNOME extensions for Bluefin +[group('Apps')] +install-gnome-extensions: + #!/usr/bin/bash + source /usr/lib/ujust/ujust.sh + + # Confirmation dialog about best-effort support + if ! gum confirm "These GNOME extensions are not officially supported but are pretty awesome. Continue?" ; then + exit 0 + fi + + # Extension UUIDs and names + declare -A EXTENSIONS=( + ["Battery-Health-Charging@maniacx.github.com"]="Battery Health Charging" + ["Bluetooth-Battery-Meter@maniacx.github.com"]="Bluetooth Battery Meter" + ["monitor-brightness-volume@ailin.nemui"]="Monitor Brightness/DDC Control" + ["copyous@boerdereinar.dev"]="Copyous" + ["just-perfection-desktop@just-perfection"]="Just Perfection" + ["nightthemeswitcher@romainvigier.fr"]="Night Theme Switcher" + ["quicksettings-audio-devices-hider@marcinjahn.com"]="Quick Settings Audio Devices Hider" + ["quicksettings-audio-devices-renamer@marcinjahn.com"]="Quick Settings Audio Devices Renamer" + ["tilingshell@ferrarodomenico.com"]="Tiling Shell" + ) + + # Extension to skip enabling (installed but not enabled) + SKIP_ENABLE="just-perfection-desktop@just-perfection" + + echo "${bold}Installing GNOME Extensions...${normal}" + mkdir -p /tmp/gnome-extensions + + # Get GNOME Shell version for compatibility + GNOME_VERSION=$(gnome-shell --version | sed 's/[^0-9.]*\([0-9]*\).*/\1/') + + for UUID in "${!EXTENSIONS[@]}"; do + NAME="${EXTENSIONS[$UUID]}" + echo "Installing ${NAME}..." + + # Download extension info to get download URL + curl -s "https://extensions.gnome.org/extension-info/?uuid=${UUID}&shell_version=${GNOME_VERSION}" > /tmp/gnome-extensions/${UUID}.json + + # Extract download URL + DOWNLOAD_URL=$(jq -r '.download_url' /tmp/gnome-extensions/${UUID}.json 2>/dev/null) + + if [ "$DOWNLOAD_URL" = "null" ] || [ -z "$DOWNLOAD_URL" ]; then + echo "${red}Failed to get download URL for ${NAME}${normal}" + continue + fi + + # Download and install extension + curl -s "https://extensions.gnome.org${DOWNLOAD_URL}" -o /tmp/gnome-extensions/${UUID}.zip && \ + gnome-extensions install --force /tmp/gnome-extensions/${UUID}.zip || \ + echo "${red}Failed to install ${NAME}${normal}" + + # Enable extension (except Just Perfection) + if [ "$UUID" != "$SKIP_ENABLE" ]; then + gnome-extensions enable "$UUID" || echo "${red}Failed to enable ${NAME}${normal}" + fi + done + + # Cleanup + rm -rf /tmp/gnome-extensions + + echo "" + echo "${bold}Installation complete!${normal}" + echo "Just Perfection has been installed but not enabled (configure manually via Extension Manager)." + echo "" + echo "${bold}NOTE:${normal} You need to log out and log back in for extensions to fully activate." + From 1f8a249f6f3796ac754a823b5c0494134b13d338 Mon Sep 17 00:00:00 2001 From: "Jorge O. Castro" Date: Sat, 20 Dec 2025 21:41:54 -0500 Subject: [PATCH 2/3] fix: move it to the bluefin specific folder --- .../bluefin/usr/share/ublue-os/just/apps.just | 69 +++++++++++++++++++ .../shared/usr/share/ublue-os/just/apps.just | 68 ------------------ 2 files changed, 69 insertions(+), 68 deletions(-) create mode 100644 system_files/bluefin/usr/share/ublue-os/just/apps.just diff --git a/system_files/bluefin/usr/share/ublue-os/just/apps.just b/system_files/bluefin/usr/share/ublue-os/just/apps.just new file mode 100644 index 0000000..48da995 --- /dev/null +++ b/system_files/bluefin/usr/share/ublue-os/just/apps.just @@ -0,0 +1,69 @@ +# vim: set ft=make : + +# Install recommended GNOME extensions for Bluefin +[group('Apps')] +install-gnome-extensions: + #!/usr/bin/bash + source /usr/lib/ujust/ujust.sh + + # Confirmation dialog about best-effort support + if ! gum confirm "These GNOME extensions are not officially supported but are pretty awesome. Continue?" ; then + exit 0 + fi + + # Extension UUIDs and names + declare -A EXTENSIONS=( + ["Battery-Health-Charging@maniacx.github.com"]="Battery Health Charging" + ["Bluetooth-Battery-Meter@maniacx.github.com"]="Bluetooth Battery Meter" + ["monitor-brightness-volume@ailin.nemui"]="Monitor Brightness/DDC Control" + ["copyous@boerdereinar.dev"]="Copyous" + ["just-perfection-desktop@just-perfection"]="Just Perfection" + ["nightthemeswitcher@romainvigier.fr"]="Night Theme Switcher" + ["quicksettings-audio-devices-hider@marcinjahn.com"]="Quick Settings Audio Devices Hider" + ["quicksettings-audio-devices-renamer@marcinjahn.com"]="Quick Settings Audio Devices Renamer" + ["tilingshell@ferrarodomenico.com"]="Tiling Shell" + ) + + # Extension to skip enabling (installed but not enabled) + SKIP_ENABLE="just-perfection-desktop@just-perfection" + + echo "${bold}Installing GNOME Extensions...${normal}" + mkdir -p /tmp/gnome-extensions + + # Get GNOME Shell version for compatibility + GNOME_VERSION=$(gnome-shell --version | sed 's/[^0-9.]*\([0-9]*\).*/\1/') + + for UUID in "${!EXTENSIONS[@]}"; do + NAME="${EXTENSIONS[$UUID]}" + echo "Installing ${NAME}..." + + # Download extension info to get download URL + curl -s "https://extensions.gnome.org/extension-info/?uuid=${UUID}&shell_version=${GNOME_VERSION}" > /tmp/gnome-extensions/${UUID}.json + + # Extract download URL + DOWNLOAD_URL=$(jq -r '.download_url' /tmp/gnome-extensions/${UUID}.json 2>/dev/null) + + if [ "$DOWNLOAD_URL" = "null" ] || [ -z "$DOWNLOAD_URL" ]; then + echo "${red}Failed to get download URL for ${NAME}${normal}" + continue + fi + + # Download and install extension + curl -s "https://extensions.gnome.org${DOWNLOAD_URL}" -o /tmp/gnome-extensions/${UUID}.zip && \ + gnome-extensions install --force /tmp/gnome-extensions/${UUID}.zip || \ + echo "${red}Failed to install ${NAME}${normal}" + + # Enable extension (except Just Perfection) + if [ "$UUID" != "$SKIP_ENABLE" ]; then + gnome-extensions enable "$UUID" || echo "${red}Failed to enable ${NAME}${normal}" + fi + done + + # Cleanup + rm -rf /tmp/gnome-extensions + + echo "" + echo "${bold}Installation complete!${normal}" + echo "Just Perfection has been installed but not enabled (configure manually via Extension Manager)." + echo "" + echo "${bold}NOTE:${normal} You need to log out and log back in for extensions to fully activate." diff --git a/system_files/shared/usr/share/ublue-os/just/apps.just b/system_files/shared/usr/share/ublue-os/just/apps.just index 9d839e7..4dd1431 100644 --- a/system_files/shared/usr/share/ublue-os/just/apps.just +++ b/system_files/shared/usr/share/ublue-os/just/apps.just @@ -69,71 +69,3 @@ cncf: fi bbrew -f "/usr/share/ublue-os/homebrew/cncf.Brewfile" -# Install recommended GNOME extensions for Bluefin -[group('Apps')] -install-gnome-extensions: - #!/usr/bin/bash - source /usr/lib/ujust/ujust.sh - - # Confirmation dialog about best-effort support - if ! gum confirm "These GNOME extensions are not officially supported but are pretty awesome. Continue?" ; then - exit 0 - fi - - # Extension UUIDs and names - declare -A EXTENSIONS=( - ["Battery-Health-Charging@maniacx.github.com"]="Battery Health Charging" - ["Bluetooth-Battery-Meter@maniacx.github.com"]="Bluetooth Battery Meter" - ["monitor-brightness-volume@ailin.nemui"]="Monitor Brightness/DDC Control" - ["copyous@boerdereinar.dev"]="Copyous" - ["just-perfection-desktop@just-perfection"]="Just Perfection" - ["nightthemeswitcher@romainvigier.fr"]="Night Theme Switcher" - ["quicksettings-audio-devices-hider@marcinjahn.com"]="Quick Settings Audio Devices Hider" - ["quicksettings-audio-devices-renamer@marcinjahn.com"]="Quick Settings Audio Devices Renamer" - ["tilingshell@ferrarodomenico.com"]="Tiling Shell" - ) - - # Extension to skip enabling (installed but not enabled) - SKIP_ENABLE="just-perfection-desktop@just-perfection" - - echo "${bold}Installing GNOME Extensions...${normal}" - mkdir -p /tmp/gnome-extensions - - # Get GNOME Shell version for compatibility - GNOME_VERSION=$(gnome-shell --version | sed 's/[^0-9.]*\([0-9]*\).*/\1/') - - for UUID in "${!EXTENSIONS[@]}"; do - NAME="${EXTENSIONS[$UUID]}" - echo "Installing ${NAME}..." - - # Download extension info to get download URL - curl -s "https://extensions.gnome.org/extension-info/?uuid=${UUID}&shell_version=${GNOME_VERSION}" > /tmp/gnome-extensions/${UUID}.json - - # Extract download URL - DOWNLOAD_URL=$(jq -r '.download_url' /tmp/gnome-extensions/${UUID}.json 2>/dev/null) - - if [ "$DOWNLOAD_URL" = "null" ] || [ -z "$DOWNLOAD_URL" ]; then - echo "${red}Failed to get download URL for ${NAME}${normal}" - continue - fi - - # Download and install extension - curl -s "https://extensions.gnome.org${DOWNLOAD_URL}" -o /tmp/gnome-extensions/${UUID}.zip && \ - gnome-extensions install --force /tmp/gnome-extensions/${UUID}.zip || \ - echo "${red}Failed to install ${NAME}${normal}" - - # Enable extension (except Just Perfection) - if [ "$UUID" != "$SKIP_ENABLE" ]; then - gnome-extensions enable "$UUID" || echo "${red}Failed to enable ${NAME}${normal}" - fi - done - - # Cleanup - rm -rf /tmp/gnome-extensions - - echo "" - echo "${bold}Installation complete!${normal}" - echo "Just Perfection has been installed but not enabled (configure manually via Extension Manager)." - echo "" - echo "${bold}NOTE:${normal} You need to log out and log back in for extensions to fully activate." - From 07cb82282e70bd25a3315441524756508afe528c Mon Sep 17 00:00:00 2001 From: "Jorge O. Castro" Date: Sat, 20 Dec 2025 21:45:49 -0500 Subject: [PATCH 3/3] fix: simplify the section --- .../bluefin/usr/share/ublue-os/just/apps.just | 68 +++++++------------ 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/system_files/bluefin/usr/share/ublue-os/just/apps.just b/system_files/bluefin/usr/share/ublue-os/just/apps.just index 48da995..6a05999 100644 --- a/system_files/bluefin/usr/share/ublue-os/just/apps.just +++ b/system_files/bluefin/usr/share/ublue-os/just/apps.just @@ -6,64 +6,46 @@ install-gnome-extensions: #!/usr/bin/bash source /usr/lib/ujust/ujust.sh - # Confirmation dialog about best-effort support if ! gum confirm "These GNOME extensions are not officially supported but are pretty awesome. Continue?" ; then exit 0 fi - # Extension UUIDs and names - declare -A EXTENSIONS=( - ["Battery-Health-Charging@maniacx.github.com"]="Battery Health Charging" - ["Bluetooth-Battery-Meter@maniacx.github.com"]="Bluetooth Battery Meter" - ["monitor-brightness-volume@ailin.nemui"]="Monitor Brightness/DDC Control" - ["copyous@boerdereinar.dev"]="Copyous" - ["just-perfection-desktop@just-perfection"]="Just Perfection" - ["nightthemeswitcher@romainvigier.fr"]="Night Theme Switcher" - ["quicksettings-audio-devices-hider@marcinjahn.com"]="Quick Settings Audio Devices Hider" - ["quicksettings-audio-devices-renamer@marcinjahn.com"]="Quick Settings Audio Devices Renamer" - ["tilingshell@ferrarodomenico.com"]="Tiling Shell" + EXTENSIONS=( + "Battery-Health-Charging@maniacx.github.com" + "Bluetooth-Battery-Meter@maniacx.github.com" + "monitor-brightness-volume@ailin.nemui" + "copyous@boerdereinar.dev" + "just-perfection-desktop@just-perfection" + "nightthemeswitcher@romainvigier.fr" + "quicksettings-audio-devices-hider@marcinjahn.com" + "quicksettings-audio-devices-renamer@marcinjahn.com" + "tilingshell@ferrarodomenico.com" ) - # Extension to skip enabling (installed but not enabled) - SKIP_ENABLE="just-perfection-desktop@just-perfection" - echo "${bold}Installing GNOME Extensions...${normal}" - mkdir -p /tmp/gnome-extensions - - # Get GNOME Shell version for compatibility - GNOME_VERSION=$(gnome-shell --version | sed 's/[^0-9.]*\([0-9]*\).*/\1/') + GNOME_VERSION=$(gnome-shell --version | cut -d' ' -f3 | cut -d'.' -f1) - for UUID in "${!EXTENSIONS[@]}"; do - NAME="${EXTENSIONS[$UUID]}" - echo "Installing ${NAME}..." - - # Download extension info to get download URL - curl -s "https://extensions.gnome.org/extension-info/?uuid=${UUID}&shell_version=${GNOME_VERSION}" > /tmp/gnome-extensions/${UUID}.json - - # Extract download URL - DOWNLOAD_URL=$(jq -r '.download_url' /tmp/gnome-extensions/${UUID}.json 2>/dev/null) + for UUID in "${EXTENSIONS[@]}"; do + echo "Installing ${UUID%%@*}..." + # URL encode the UUID for the API request + UUID_ENCODED=$(echo -n "$UUID" | jq -sRr @uri) + DOWNLOAD_URL=$(curl -s "https://extensions.gnome.org/extension-info/?uuid=${UUID_ENCODED}&shell_version=${GNOME_VERSION}" | jq -r '.download_url') if [ "$DOWNLOAD_URL" = "null" ] || [ -z "$DOWNLOAD_URL" ]; then - echo "${red}Failed to get download URL for ${NAME}${normal}" + echo "${red}Failed: ${UUID%%@*}${normal}" continue fi - # Download and install extension - curl -s "https://extensions.gnome.org${DOWNLOAD_URL}" -o /tmp/gnome-extensions/${UUID}.zip && \ - gnome-extensions install --force /tmp/gnome-extensions/${UUID}.zip || \ - echo "${red}Failed to install ${NAME}${normal}" + curl -sL "https://extensions.gnome.org${DOWNLOAD_URL}" -o /tmp/${UUID}.zip && \ + gnome-extensions install --force /tmp/${UUID}.zip && \ + rm -f /tmp/${UUID}.zip || echo "${red}Failed: ${UUID%%@*}${normal}" - # Enable extension (except Just Perfection) - if [ "$UUID" != "$SKIP_ENABLE" ]; then - gnome-extensions enable "$UUID" || echo "${red}Failed to enable ${NAME}${normal}" - fi + # Enable all except Just Perfection + [ "$UUID" != "just-perfection-desktop@just-perfection" ] && \ + gnome-extensions enable "$UUID" 2>/dev/null done - # Cleanup - rm -rf /tmp/gnome-extensions - echo "" echo "${bold}Installation complete!${normal}" - echo "Just Perfection has been installed but not enabled (configure manually via Extension Manager)." - echo "" - echo "${bold}NOTE:${normal} You need to log out and log back in for extensions to fully activate." + echo "Just Perfection installed but not enabled (configure manually via Extension Manager)." + echo "${bold}NOTE:${normal} Log out and back in for extensions to fully activate."