From 9794274a319c175f25a79d9cf7cbe25a476dd9bc Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Wed, 8 Jul 2026 23:17:09 +0530 Subject: [PATCH 1/7] Revamp browser scripts with snap/flatpak support and integrate reset-theme --- .../tabs/applications-setup/browsers/brave.sh | 35 +- .../applications-setup/browsers/chromium.sh | 9 +- .../applications-setup/browsers/firefox.sh | 33 +- .../browsers/google-chrome.sh | 32 +- core/tabs/applications-setup/browsers/lynx.sh | 8 +- .../applications-setup/browsers/thorium.sh | 6 +- .../applications-setup/browsers/vivaldi.sh | 6 +- .../applications-setup/browsers/waterfox.sh | 4 + .../browsers/zen-browser.sh | 22 +- core/tabs/common-script.sh | 9 + core/tabs/system-setup/global-theme.sh | 424 +++++++++++++++++- 11 files changed, 534 insertions(+), 54 deletions(-) diff --git a/core/tabs/applications-setup/browsers/brave.sh b/core/tabs/applications-setup/browsers/brave.sh index bb8fa6cbd..00b398c9c 100644 --- a/core/tabs/applications-setup/browsers/brave.sh +++ b/core/tabs/applications-setup/browsers/brave.sh @@ -5,7 +5,40 @@ installBrave() { if ! command_exists com.brave.Browser && ! command_exists brave; then printf "%b\n" "${YELLOW}Installing Brave...${RC}" - curl -fsS https://dl.brave.com/install.sh | sh + case "$PACKAGER" in + apt-get|nala) + if [ "$DTYPE" = "ubuntu" ] && command_exists snap; then + "$ESCALATION_TOOL" snap install brave + else + "$ESCALATION_TOOL" curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg + "$ESCALATION_TOOL" curl -fsSLo /etc/apt/sources.list.d/brave-browser-release.sources https://brave-browser-apt-release.s3.brave.com/brave-browser.sources + "$ESCALATION_TOOL" "$PACKAGER" update + "$ESCALATION_TOOL" "$PACKAGER" install -y brave-browser + fi + ;; + dnf) + "$ESCALATION_TOOL" "$PACKAGER" install -y dnf-plugins-core + if command_exists dnf5; then + "$ESCALATION_TOOL" dnf5 config-manager addrepo --from-repofile=https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo + else + "$ESCALATION_TOOL" "$PACKAGER" config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo + fi + "$ESCALATION_TOOL" "$PACKAGER" install -y brave-browser + ;; + zypper) + "$ESCALATION_TOOL" "$PACKAGER" addrepo https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo + "$ESCALATION_TOOL" "$PACKAGER" --gpg-auto-import-keys refresh + "$ESCALATION_TOOL" "$PACKAGER" install -y brave-browser + ;; + pacman) + "$AUR_HELPER" -S --needed --noconfirm brave-bin + ;; + *) + checkFlatpak + "$ESCALATION_TOOL" flatpak install --noninteractive flathub com.brave.Browser 2>/dev/null || \ + curl -fsS https://dl.brave.com/install.sh | sh + ;; + esac else printf "%b\n" "${GREEN}Brave Browser is already installed.${RC}" fi diff --git a/core/tabs/applications-setup/browsers/chromium.sh b/core/tabs/applications-setup/browsers/chromium.sh index 29ca96be5..2ee9425a7 100644 --- a/core/tabs/applications-setup/browsers/chromium.sh +++ b/core/tabs/applications-setup/browsers/chromium.sh @@ -15,7 +15,14 @@ if ! command_exists chromium; then xbps-install) "$ESCALATION_TOOL" "$PACKAGER" -Sy chromium ;; - apt-get|nala|zypper|dnf|eopkg) + apt-get|nala) + if [ "$DTYPE" = "ubuntu" ] && command_exists snap; then + "$ESCALATION_TOOL" snap install chromium + else + "$ESCALATION_TOOL" "$PACKAGER" install -y chromium + fi + ;; + zypper|dnf|eopkg) "$ESCALATION_TOOL" "$PACKAGER" install -y chromium ;; *) diff --git a/core/tabs/applications-setup/browsers/firefox.sh b/core/tabs/applications-setup/browsers/firefox.sh index f984963f4..5e78ea358 100644 --- a/core/tabs/applications-setup/browsers/firefox.sh +++ b/core/tabs/applications-setup/browsers/firefox.sh @@ -2,12 +2,43 @@ . ../../common-script.sh +setupMozillaRepo() { + "$ESCALATION_TOOL" install -d -m 0755 /etc/apt/keyrings + curl -fsSL https://packages.mozilla.org/apt/repo-signing-key.gpg -o /tmp/mozilla-key.gpg + "$ESCALATION_TOOL" gpg --batch --yes --dearmor -o /etc/apt/keyrings/packages.mozilla.org.gpg /tmp/mozilla-key.gpg 2>/dev/null || { + "$ESCALATION_TOOL" cp /tmp/mozilla-key.gpg /etc/apt/keyrings/packages.mozilla.org.asc + } + rm -f /tmp/mozilla-key.gpg + + "$ESCALATION_TOOL" tee /etc/apt/sources.list.d/mozilla.sources > /dev/null << 'EOF' +Types: deb +URIs: https://packages.mozilla.org/apt +Suites: mozilla +Components: main +Signed-By: /etc/apt/keyrings/packages.mozilla.org.gpg +EOF + + "$ESCALATION_TOOL" tee /etc/apt/preferences.d/mozilla > /dev/null << 'EOF' +Package: * +Pin: origin packages.mozilla.org +Pin-Priority: 1000 +EOF +} + installFirefox() { if ! command_exists firefox; then printf "%b\n" "${YELLOW}Installing Mozilla Firefox...${RC}" case "$PACKAGER" in apt-get|nala) - if [ "$DTYPE" != "ubuntu" ]; then + if [ "$DTYPE" = "ubuntu" ]; then + if command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then + printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" + "$ESCALATION_TOOL" snap remove firefox + fi + setupMozillaRepo + "$ESCALATION_TOOL" "$PACKAGER" update + "$ESCALATION_TOOL" "$PACKAGER" install -y firefox + else "$ESCALATION_TOOL" "$PACKAGER" install -y firefox-esr fi ;; diff --git a/core/tabs/applications-setup/browsers/google-chrome.sh b/core/tabs/applications-setup/browsers/google-chrome.sh index 0a69ae2c4..ccd5569d5 100644 --- a/core/tabs/applications-setup/browsers/google-chrome.sh +++ b/core/tabs/applications-setup/browsers/google-chrome.sh @@ -7,9 +7,10 @@ installChrome() { printf "%b\n" "${YELLOW}Installing Google Chrome...${RC}" case "$PACKAGER" in apt-get|nala) - curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - "$ESCALATION_TOOL" "$PACKAGER" install -y ./google-chrome-stable_current_amd64.deb - "$ESCALATION_TOOL" rm ./google-chrome-stable_current_amd64.deb + "$ESCALATION_TOOL" "$PACKAGER" install -y wget ca-certificates + wget -O /tmp/google-chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + "$ESCALATION_TOOL" "$PACKAGER" install -y /tmp/google-chrome.deb + rm -f /tmp/google-chrome.deb ;; zypper) "$ESCALATION_TOOL" "$PACKAGER" addrepo http://dl.google.com/linux/chrome/rpm/stable/x86_64 Google-Chrome @@ -39,13 +40,13 @@ uninstallChrome() { printf "%b\n" "${YELLOW}Uninstalling Google Chrome...${RC}" case "$PACKAGER" in apt-get|nala) - "$ESCALATION_TOOL" "$PACKAGER" purge --autoremove -y google-chrome + "$ESCALATION_TOOL" "$PACKAGER" purge --autoremove -y google-chrome-stable ;; zypper) "$ESCALATION_TOOL" "$PACKAGER" --non-interactive uninstall google-chrome-stable ;; pacman) - "$AUR_HELPER" -Rns --needed --noconfirm google-chrome + "$AUR_HELPER" -Rns --noconfirm google-chrome ;; dnf) "$ESCALATION_TOOL" "$PACKAGER" remove -y google-chrome-stable @@ -55,38 +56,29 @@ uninstallChrome() { ;; esac else - printf "%b\n" "${GREEN}Google Chrome Browser is already installed.${RC}" + printf "%b\n" "${GREEN}Google Chrome Browser is not installed.${RC}" fi } removeLocalAI() { - # Set Chrome AI path CHROME_USER_DIR="$HOME/.config/google-chrome" - - # Path where Chrome AI model is stored AI_MODEL_DIR="$CHROME_USER_DIR/AI" - # Remove AI model if it exists if [ -d "$AI_MODEL_DIR" ]; then - echo "Removing existing Chrome AI model..." + printf "%b\n" "${YELLOW}Removing existing Chrome AI model...${RC}" rm -rf "$AI_MODEL_DIR" - echo "Removed AI model." + printf "%b\n" "${GREEN}AI model removed.${RC}" else - echo "No AI model found at $AI_MODEL_DIR" + printf "%b\n" "${GREEN}No AI model found.${RC}" fi - # Prevent re-download - # Create an empty directory and make it read-only - echo "Creating read-only placeholder to block AI download..." mkdir -p "$AI_MODEL_DIR" chmod 000 "$AI_MODEL_DIR" - - echo "Chrome AI model removed and blocked from redownloading." + printf "%b\n" "${YELLOW}AI download blocked (read-only placeholder created).${RC}" } - main() { - printf "%b\n" "${YELLOW}Do you want to Install or Uninstall Chrome${RC}" + printf "%b\n" "${YELLOW}Do you want to Install or Uninstall Chrome${RC}" printf "%b\n" "1. ${YELLOW}Install Chrome${RC}" printf "%b\n" "2. ${YELLOW}Uninstall Chrome${RC}" printf "%b\n" "3. ${YELLOW}Remove Local AI (Prevents Chrome From Reinstalling)${RC}" diff --git a/core/tabs/applications-setup/browsers/lynx.sh b/core/tabs/applications-setup/browsers/lynx.sh index ab7ed3f0d..4b06575bd 100644 --- a/core/tabs/applications-setup/browsers/lynx.sh +++ b/core/tabs/applications-setup/browsers/lynx.sh @@ -18,10 +18,10 @@ installLynx() { apt-get|nala|zypper|dnf|eopkg) "$ESCALATION_TOOL" "$PACKAGER" install -y lynx ;; - *) - printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" - exit 1 - ;; + *) + printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" + exit 1 + ;; esac else printf "%b\n" "${GREEN}Lynx TUI Browser is already installed.${RC}" diff --git a/core/tabs/applications-setup/browsers/thorium.sh b/core/tabs/applications-setup/browsers/thorium.sh index 656530db2..42c0fa06a 100644 --- a/core/tabs/applications-setup/browsers/thorium.sh +++ b/core/tabs/applications-setup/browsers/thorium.sh @@ -2,13 +2,13 @@ . ../../common-script.sh -installThrorium() { +installThorium() { if ! command_exists thorium-browser; then printf "%b\n" "${YELLOW}Installing Thorium Browser...${RC}" case "$PACKAGER" in apt-get|nala) "$ESCALATION_TOOL" rm -fv /etc/apt/sources.list.d/thorium.list - "$ESCALATION_TOOL" curl http://dl.thorium.rocks/debian/dists/stable/thorium.list -o /etc/apt/sources.list.d/thorium.list + "$ESCALATION_TOOL" wget --no-hsts -P /etc/apt/sources.list.d/ http://dl.thorium.rocks/debian/dists/stable/thorium.list "$ESCALATION_TOOL" "$PACKAGER" update "$ESCALATION_TOOL" "$PACKAGER" install -y thorium-browser ;; @@ -53,4 +53,4 @@ installThrorium() { } checkEnv -installThrorium +installThorium diff --git a/core/tabs/applications-setup/browsers/vivaldi.sh b/core/tabs/applications-setup/browsers/vivaldi.sh index b63dd27e7..d3de6e596 100644 --- a/core/tabs/applications-setup/browsers/vivaldi.sh +++ b/core/tabs/applications-setup/browsers/vivaldi.sh @@ -7,12 +7,16 @@ installVivaldi() { printf "%b\n" "${YELLOW}Installing Vivaldi...${RC}" case "$PACKAGER" in apt-get|nala) + if [ "$DTYPE" = "ubuntu" ] && command_exists snap; then + "$ESCALATION_TOOL" snap install vivaldi + else "$ESCALATION_TOOL" "$PACKAGER" install -y curl "$ESCALATION_TOOL" curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo dd of=/usr/share/keyrings/vivaldi-browser.gpg "$ESCALATION_TOOL" echo "deb [signed-by=/usr/share/keyrings/vivaldi-browser.gpg arch=$(dpkg --print-architecture)] https://repo.vivaldi.com/archive/deb/ stable main" | sudo dd of=/etc/apt/sources.list.d/vivaldi-archive.list "$ESCALATION_TOOL" "$PACKAGER" update "$ESCALATION_TOOL" "$PACKAGER" install -y vivaldi-stable - ;; + fi + ;; dnf) "$ESCALATION_TOOL" "$PACKAGER" install -y dnf-plugins-core dnf_version=$(dnf --version | head -n 1 | cut -d '.' -f 1) diff --git a/core/tabs/applications-setup/browsers/waterfox.sh b/core/tabs/applications-setup/browsers/waterfox.sh index ff13d91a7..93eb70f85 100644 --- a/core/tabs/applications-setup/browsers/waterfox.sh +++ b/core/tabs/applications-setup/browsers/waterfox.sh @@ -6,6 +6,10 @@ installWaterfox() { if ! command_exists net.waterfox.waterfox && ! command_exists waterfox; then printf "%b\n" "${YELLOW}Installing waterfox...${RC}" case "$PACKAGER" in + apt-get|nala) + checkFlatpak + "$ESCALATION_TOOL" flatpak install --noninteractive flathub net.waterfox.waterfox + ;; pacman) "$AUR_HELPER" -S --needed --noconfirm waterfox-bin ;; diff --git a/core/tabs/applications-setup/browsers/zen-browser.sh b/core/tabs/applications-setup/browsers/zen-browser.sh index 714a0b2a7..0e74a6c8e 100755 --- a/core/tabs/applications-setup/browsers/zen-browser.sh +++ b/core/tabs/applications-setup/browsers/zen-browser.sh @@ -6,13 +6,21 @@ installZenBrowser() { if ! command_exists io.github.zen_browser.zen && ! command_exists zen-browser; then printf "%b\n" "${YELLOW}Installing Zen Browser...${RC}" case "$PACKAGER" in - pacman) - "$AUR_HELPER" -S --needed --noconfirm zen-browser-bin - ;; - *) - checkFlatpak - "$ESCALATION_TOOL" flatpak install --noninteractive flathub io.github.zen_browser.zen - ;; + apt-get|nala) + if [ "$DTYPE" = "ubuntu" ] && command_exists snap; then + "$ESCALATION_TOOL" snap install zen-browser-snap --candidate + else + checkFlatpak + "$ESCALATION_TOOL" flatpak install --noninteractive flathub io.github.zen_browser.zen + fi + ;; + pacman) + "$AUR_HELPER" -S --needed --noconfirm zen-browser-bin + ;; + *) + checkFlatpak + "$ESCALATION_TOOL" flatpak install --noninteractive flathub io.github.zen_browser.zen + ;; esac else printf "%b\n" "${GREEN}Zen Browser is already installed.${RC}" diff --git a/core/tabs/common-script.sh b/core/tabs/common-script.sh index 5bba966da..da49f8472 100644 --- a/core/tabs/common-script.sh +++ b/core/tabs/common-script.sh @@ -179,6 +179,15 @@ checkCurrentDirectoryWritable() { fi } +checkSnap() { + if ! command_exists snap; then + printf "%b\n" "${YELLOW}Snap is not available on this system.${RC}" + return 1 + fi + printf "%b\n" "${CYAN}Snap is available${RC}" + return 0 +} + checkDistro() { DTYPE="unknown" # Default to unknown # Use /etc/os-release for modern distro identification diff --git a/core/tabs/system-setup/global-theme.sh b/core/tabs/system-setup/global-theme.sh index c8ccf6f79..d5190d292 100755 --- a/core/tabs/system-setup/global-theme.sh +++ b/core/tabs/system-setup/global-theme.sh @@ -2,6 +2,8 @@ . ../common-script.sh +# --- Dark theme functions --- + install_theme_tools() { printf "%b\n" "${YELLOW}Installing Qt theming tools (qt5ct, qt6ct)...${RC}" case "$PACKAGER" in @@ -142,8 +144,6 @@ set_environment_variables() { add_env_var "QT_QPA_PLATFORMTHEME" "qt6ct" add_env_var "GTK_THEME" "Adwaita:dark" - # Also export to profile files so it applies in the current WM session - # without requiring a PAM re-login for profile in "$HOME/.xprofile" "$HOME/.profile"; do if [ -f "$profile" ] || [ "$profile" = "$HOME/.xprofile" ]; then if ! grep -q "GTK_THEME" "$profile" 2>/dev/null; then @@ -161,7 +161,7 @@ applyTheming() { KDE) lookandfeeltool -a org.kde.breezedark.desktop successOutput - exit 0 + return ;; GNOME) gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark" @@ -195,17 +195,409 @@ successOutput() { printf "%b\n" "${YELLOW}NOTE: Qt app theming (qt5ct/qt6ct) requires a re-login to take effect.${RC}" } +applyDarkTheme() { + applyTheming + install_theme_tools + configure_gtk2 + configure_gtk3 + configure_gtk4 + configure_xfce + configure_qt5ct + configure_qt6ct + set_environment_variables + apply_dconf_immediate + restart_thunar + successOutput +} + +# --- Reset theme functions --- + +detectGNOMEVersion() { + GNOME_VER=0 + if command_exists gnome-shell; then + GNOME_VER=$(gnome-shell --version 2>/dev/null | sed 's/[^0-9]*\([0-9]*\)\.\([0-9]*\).*/\1\2/') + fi +} + +detectPlasmaVersion() { + PLASMA_VER=5 + if command_exists plasmashell; then + if plasmashell --version 2>/dev/null | grep -q "6\."; then + PLASMA_VER=6 + fi + fi +} + +detectDE() { + DE="${XDG_CURRENT_DESKTOP:-${XDG_SESSION_DESKTOP:-}}" + case "$DE" in + *GNOME*|*gnome*|*Ubuntu*|*ubuntu*) DE=gnome ;; + *KDE*|*kde*|*Plasma*|*plasma*) DE=kde ;; + *XFCE*|*xfce*|*Xfce*) DE=xfce ;; + *Cinnamon*|*cinnamon*) DE=cinnamon ;; + *MATE*|*mate*) DE=mate ;; + *Budgie*|*budgie*) DE=budgie ;; + *LXDE*|*lxde*) DE=lxde ;; + *LXQt*|*lxqt*) DE=lxqt ;; + *Deepin*|*deepin*) DE=deepin ;; + *Pantheon*|*pantheon*) DE=pantheon ;; + *Sway*|*sway*) DE=sway ;; + *Hyprland*|*hyprland*) DE=hyprland ;; + *i3*|*i3wm*) DE=i3 ;; + *Enlightenment*|*enlightenment*) DE=enlightenment ;; + *Openbox*|*openbox*) DE=openbox ;; + *bspwm*) DE=bspwm ;; + *dwm*) DE=dwm ;; + *qtile*) DE=qtile ;; + *ukui*) DE=ukui ;; + *Lomiri*|*lomiri*) DE=lomiri ;; + *COSMIC*|*cosmic*) DE=cosmic ;; + *) DE=unknown ;; + esac + printf "%b\n" "${CYAN}DE: ${DE} | Distro: ${DTYPE} ${DVER} | GNOME: ${GNOME_VER} | Plasma: ${PLASMA_VER}${RC}" +} + +resetGNOME() { + if ! command_exists gsettings; then return; fi + + GTK_THEME=Adwaita + ICON_THEME=Adwaita + CURSOR_THEME=Adwaita + FONT_NAME="Cantarell 11" + BG_LIGHT="" + BG_DARK="" + + case "$DTYPE" in + ubuntu|ubuntu-core) + if [ "$DVER_MAJOR" -ge 24 ]; then + GTK_THEME=Yaru; ICON_THEME=Yaru; CURSOR_THEME=Yaru + FONT_NAME="Ubuntu 11" + BG_LIGHT="file:///usr/share/backgrounds/ubuntu-default-greyscale-wallpaper.png" + BG_DARK="$BG_LIGHT" + elif [ "$DVER_MAJOR" -ge 20 ]; then + GTK_THEME=Yaru; ICON_THEME=Yaru; CURSOR_THEME=Yaru + FONT_NAME="Ubuntu 11" + BG_LIGHT="file:///usr/share/backgrounds/ubuntu-default-greyscale-wallpaper.png" + elif [ "$DVER_MAJOR" -ge 18 ]; then + GTK_THEME=Yaru; ICON_THEME=Yaru; CURSOR_THEME=Yaru + FONT_NAME="Ubuntu 11" + else + GTK_THEME=Ambiance; ICON_THEME=ubuntu-mono-dark + FONT_NAME="Ubuntu 11" + fi + ;; + pop|popos) + GTK_THEME=Pop; ICON_THEME=Pop; CURSOR_THEME=Pop + FONT_NAME="Fira Sans 10" + BG_LIGHT="file:///usr/share/backgrounds/pop/default.png" + ;; + zorin) + GTK_THEME=ZorinBlue-Dark; ICON_THEME=Zorin; CURSOR_THEME=Zorin + FONT_NAME="Inter 11" + BG_LIGHT="file:///usr/share/backgrounds/zorin-default.jpg" + ;; + fedora|rhel|centos|rocky|alma|nobara) + GTK_THEME=Adwaita; ICON_THEME=Adwaita; CURSOR_THEME=Adwaita + FONT_NAME="Cantarell 11" + BG_LIGHT="file:///usr/share/backgrounds/default.png" + BG_DARK="$BG_LIGHT" + ;; + debian) + FONT_NAME="Cantarell 11" + ;; + esac + + gsettings set org.gnome.desktop.interface gtk-theme "$GTK_THEME" 2>/dev/null || true + gsettings set org.gnome.desktop.interface icon-theme "$ICON_THEME" 2>/dev/null || true + gsettings set org.gnome.desktop.interface cursor-theme "$CURSOR_THEME" 2>/dev/null || true + gsettings set org.gnome.desktop.interface font-name "$FONT_NAME" 2>/dev/null || true + + if [ "$GNOME_VER" -ge 42 ] || [ "$GNOME_VER" = "0" ]; then + gsettings set org.gnome.desktop.interface color-scheme "default" 2>/dev/null || true + fi + if [ -n "$BG_LIGHT" ]; then + gsettings set org.gnome.desktop.background picture-uri "$BG_LIGHT" 2>/dev/null || true + fi + if [ -n "$BG_DARK" ] && [ "$GNOME_VER" -ge 42 ] || [ "$GNOME_VER" = "0" ]; then + gsettings set org.gnome.desktop.background picture-uri-dark "$BG_DARK" 2>/dev/null || true + fi + gsettings set org.gnome.desktop.wm.preferences theme "$GTK_THEME" 2>/dev/null || true + printf "%b\n" "${GREEN}GNOME theme reset to ${GTK_THEME}.${RC}" +} + +resetKDE() { + printf "%b\n" "${YELLOW}Resetting KDE Plasma ${PLASMA_VER} theme...${RC}" + if command_exists lookandfeeltool; then + lookandfeeltool -a org.kde.breeze.desktop 2>/dev/null || true + fi + KW="kwriteconfig${PLASMA_VER}" + if ! command_exists "$KW"; then + for kw in kwriteconfig6 kwriteconfig5; do + command_exists "$kw" && KW="$kw" && break + done + fi + if command_exists "$KW"; then + "$KW" --file ~/.config/kdeglobals --group KDE --key widgetStyle Breeze 2>/dev/null || true + "$KW" --file ~/.config/kdeglobals --group General --key ColorScheme Breeze 2>/dev/null || true + "$KW" --file ~/.config/kdeglobals --group Icons --key Theme breeze 2>/dev/null || true + "$KW" --file ~/.config/plasmarc --group Theme --key name default 2>/dev/null || true + "$KW" --file ~/.config/kcminputrc --group Mouse --key cursorTheme breeze 2>/dev/null || true + "$KW" --file ~/.config/kwinrc --group org.kde.kdecoration2 --key theme Breeze 2>/dev/null || true + fi + if command_exists plasma-apply-desktoptheme; then + plasma-apply-desktoptheme breeze 2>/dev/null || true + fi + if command_exists plasma-apply-colorscheme; then + plasma-apply-colorscheme Breeze 2>/dev/null || true + fi + printf "%b\n" "${GREEN}KDE Plasma theme reset to Breeze.${RC}" +} + +resetXFCE() { + if command_exists xfconf-query; then + xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita" 2>/dev/null || true + xfconf-query -c xsettings -p /Net/IconThemeName -s "Adwaita" 2>/dev/null || true + xfconf-query -c xsettings -p /Gtk/CursorThemeName -s "Adwaita" 2>/dev/null || true + xfconf-query -c xsettings -p /Gtk/FontName -s "Cantarell 11" 2>/dev/null || true + xfconf-query -c xfwm4 -p /general/theme -s "Adwaita" 2>/dev/null || true + xfconf-query -c xfce4-panel -p /panels/panel-0/position -s "p=6;x=0;y=0" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}XFCE theme reset to Adwaita.${RC}" +} + +resetCinnamon() { + if ! command_exists gsettings; then return; fi + if [ "$DVER_MAJOR" -ge 21 ]; then + GTK_THEME="Mint-Y"; ICON_THEME="Mint-Y" + THEME_NAME="Mint-Y-Dark"; WM_THEME="Mint-Y" + else + GTK_THEME="Adwaita"; ICON_THEME="Adwaita" + THEME_NAME="cinnamon"; WM_THEME="Adwaita" + fi + gsettings set org.cinnamon.desktop.interface gtk-theme "$GTK_THEME" 2>/dev/null || true + gsettings set org.cinnamon.desktop.interface icon-theme "$ICON_THEME" 2>/dev/null || true + gsettings set org.cinnamon.desktop.interface cursor-theme "Adwaita" 2>/dev/null || true + gsettings set org.cinnamon.desktop.interface font-name "Cantarell 11" 2>/dev/null || true + gsettings set org.cinnamon.theme name "$THEME_NAME" 2>/dev/null || true + gsettings set org.cinnamon.desktop.wm.preferences theme "$WM_THEME" 2>/dev/null || true + printf "%b\n" "${GREEN}Cinnamon theme reset to ${GTK_THEME}.${RC}" +} + +resetMATE() { + if ! command_exists gsettings; then return; fi + if [ "$DTYPE" = "ubuntu" ] || [ "$DTYPE" = "ubuntu-core" ]; then + GTK_THEME="Yaru"; ICON_THEME="Yaru" + else + GTK_THEME="Adwaita"; ICON_THEME="Adwaita" + fi + gsettings set org.mate.interface gtk-theme "$GTK_THEME" 2>/dev/null || true + gsettings set org.mate.interface icon-theme "$ICON_THEME" 2>/dev/null || true + gsettings set org.mate.interface cursor-theme "Adwaita" 2>/dev/null || true + gsettings set org.mate.interface font-name "Cantarell 11" 2>/dev/null || true + gsettings set org.mate.Marco.general theme "$GTK_THEME" 2>/dev/null || true + printf "%b\n" "${GREEN}MATE theme reset to ${GTK_THEME}.${RC}" +} + +resetBudgie() { + resetGNOME + if command_exists gsettings; then + gsettings set com.solus-project.budgie.panel layout "" 2>/dev/null || true + gsettings set com.solus-project.budgie.wm button-layout "appmenu:close" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Budgie theme reset.${RC}" +} + +resetLXDE() { + mkdir -p "$HOME/.config/lxde" + cat > "$HOME/.config/lxde/config" <<-EOF 2>/dev/null || true +[GTK] +sNet/ThemeName=Adwaita +sNet/IconThemeName=Adwaita +sGtk/CursorThemeName=Adwaita +sGtk/FontName=Cantarell 11 +EOF + printf "%b\n" "${GREEN}LXDE theme reset.${RC}" +} + +resetLXQt() { + rm -f "$HOME/.config/lxqt/lxqt.conf" "$HOME/.config/lxqt/panel.conf" "$HOME/.config/lxqt/session.conf" 2>/dev/null || true + printf "%b\n" "${GREEN}LXQt theme reset.${RC}" +} + +resetDeepin() { + if command_exists gsettings; then + gsettings set com.deepin.dde.appearance gtk-theme "deepin" 2>/dev/null || \ + gsettings set com.deepin.dde.appearance gtk-theme "Adwaita" 2>/dev/null || true + gsettings set com.deepin.dde.appearance icon-theme "deepin" 2>/dev/null || \ + gsettings set com.deepin.dde.appearance icon-theme "Adwaita" 2>/dev/null || true + gsettings set com.deepin.dde.appearance cursor-theme "deepin" 2>/dev/null || \ + gsettings set com.deepin.dde.appearance cursor-theme "Adwaita" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Deepin theme reset.${RC}" +} + +resetPantheon() { + if command_exists gsettings; then + gsettings set org.gnome.desktop.interface gtk-theme "io.elementary.stylesheet.blueberry" 2>/dev/null || \ + gsettings set org.gnome.desktop.interface gtk-theme "Adwaita" 2>/dev/null || true + gsettings set org.gnome.desktop.interface icon-theme "elementary" 2>/dev/null || \ + gsettings set org.gnome.desktop.interface icon-theme "Adwaita" 2>/dev/null || true + gsettings set org.gnome.desktop.interface cursor-theme "elementary" 2>/dev/null || \ + gsettings set org.gnome.desktop.interface cursor-theme "Adwaita" 2>/dev/null || true + gsettings set org.gnome.desktop.interface font-name "Inter 10" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Pantheon theme reset.${RC}" +} + +resetSway() { + rm -f "$HOME/.config/sway/config" 2>/dev/null || true + if [ -f /etc/sway/config ]; then + mkdir -p "$HOME/.config/sway" + cp /etc/sway/config "$HOME/.config/sway/" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Sway config reset.${RC}" +} + +resetHyprland() { + rm -f "$HOME/.config/hypr/hyprland.conf" 2>/dev/null || true + if [ -f /usr/share/hyprland/hyprland.conf ]; then + mkdir -p "$HOME/.config/hypr" + cp /usr/share/hyprland/hyprland.conf "$HOME/.config/hypr/" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Hyprland config reset.${RC}" +} + +resetWMCommon() { + for wm_dir in i3 bspwm qtile dwm; do + rm -f "$HOME/.config/$wm_dir/config" "$HOME/.config/$wm_dir/theme" 2>/dev/null || true + done + if [ -f /etc/i3/config ]; then + mkdir -p "$HOME/.config/i3" + cp /etc/i3/config "$HOME/.config/i3/" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}WM configs reset.${RC}" +} + +resetOpenbox() { + rm -f "$HOME/.config/openbox/rc.xml" 2>/dev/null || true + if [ -f /etc/xdg/openbox/rc.xml ]; then + mkdir -p "$HOME/.config/openbox" + cp /etc/xdg/openbox/rc.xml "$HOME/.config/openbox/" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Openbox config reset.${RC}" +} + +resetEnlightenment() { + rm -rf "$HOME/.e/e/config" 2>/dev/null || true + if command_exists enlightenment_remote; then + enlightenment_remote -default-all 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Enlightenment reset.${RC}" +} + +resetUKUI() { + if command_exists gsettings; then + gsettings set org.ukui.desktop.interface gtk-theme "ukui" 2>/dev/null || \ + gsettings set org.ukui.desktop.interface gtk-theme "Adwaita" 2>/dev/null || true + gsettings set org.ukui.desktop.interface icon-theme "ukui-icon-theme" 2>/dev/null || \ + gsettings set org.ukui.desktop.interface icon-theme "Adwaita" 2>/dev/null || true + gsettings set org.ukui.desktop.interface cursor-theme "ukui" 2>/dev/null || \ + gsettings set org.ukui.desktop.interface cursor-theme "Adwaita" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}UKUI theme reset.${RC}" +} + +resetLomiri() { + if command_exists gsettings; then + gsettings set com.lomiri.interface gtk-theme "Adwaita" 2>/dev/null || true + gsettings set com.lomiri.interface icon-theme "Adwaita" 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Lomiri theme reset.${RC}" +} + +resetCOSMIC() { + rm -f "$HOME/.config/cosmic/com.system76.CosmicTheme" 2>/dev/null || true + rm -f "$HOME/.config/cosmic/com.system76.CosmicBg" 2>/dev/null || true + printf "%b\n" "${GREEN}COSMIC theme reset.${RC}" +} + +cleanThemeConfigs() { + rm -f "$HOME/.gtkrc-2.0" "$HOME/.gtkrc.mine" + rm -f "$HOME/.config/gtk-3.0/settings.ini" + rm -f "$HOME/.config/gtk-4.0/settings.ini" + rm -rf "$HOME/.config/qt5ct" "$HOME/.config/qt6ct" + printf "%b\n" "${GREEN}Theme config files removed.${RC}" +} + +cleanThemeEnv() { + for f in "$HOME/.profile" "$HOME/.xprofile" "$HOME/.bashrc" \ + "$HOME/.zshrc" "$HOME/.xsessionrc" "$HOME/.xinitrc"; do + if [ -f "$f" ]; then + sed -i '/^export GTK_THEME/d; /^export QT_QPA_PLATFORMTHEME/d' "$f" 2>/dev/null || true + fi + done + if command_exists sudo; then + sudo sed -i '/^QT_QPA_PLATFORMTHEME=/d; /^GTK_THEME=/d' /etc/environment 2>/dev/null || true + fi + printf "%b\n" "${GREEN}Theme environment variables cleaned.${RC}" +} + +resetDE() { + case "$DE" in + gnome) resetGNOME ;; + kde) resetKDE ;; + xfce) resetXFCE ;; + cinnamon) resetCinnamon ;; + mate) resetMATE ;; + budgie) resetBudgie ;; + lxde) resetLXDE ;; + lxqt) resetLXQt ;; + deepin) resetDeepin ;; + pantheon) resetPantheon ;; + sway) resetSway; resetWMCommon ;; + hyprland) resetHyprland; resetWMCommon ;; + i3|bspwm|qtile|dwm) resetWMCommon ;; + openbox) resetOpenbox ;; + enlightenment) resetEnlightenment ;; + ukui) resetUKUI ;; + lomiri) resetLomiri ;; + cosmic) resetCOSMIC ;; + *) + printf "%b\n" "${YELLOW}Unknown DE, applying generic reset...${RC}" + resetGNOME + resetWMCommon ;; + esac +} + +applyReset() { + detectGNOMEVersion + detectPlasmaVersion + detectDE + cleanThemeConfigs + cleanThemeEnv + resetDE + printf "%b\n" "${GREEN}Theme reset complete. Reboot or log out to apply.${RC}" +} + +# --- Main menu --- + +main() { + printf "%b\n" "${YELLOW}Global Theme Manager${RC}" + printf "%b\n" "1. ${YELLOW}Apply Dark Theme${RC}" + printf "%b\n" "2. ${YELLOW}Reset Theme to Defaults${RC}" + printf "%b\n" "3. ${YELLOW}Cancel${RC}" + printf "%b" "Enter your choice [1-3]: " + read -r CHOICE + case "$CHOICE" in + 1) applyDarkTheme ;; + 2) applyReset ;; + 3) printf "%b\n" "${GREEN}Cancelled.${RC}" && exit 0 ;; + *) printf "%b\n" "${RED}Invalid choice.${RC}" && exit 1 ;; + esac +} + checkEnv -checkEscalationTool -applyTheming -install_theme_tools -configure_gtk2 -configure_gtk3 -configure_gtk4 -configure_xfce -configure_qt5ct -configure_qt6ct -set_environment_variables -apply_dconf_immediate -restart_thunar -successOutput \ No newline at end of file +checkDistro +DVER=${VERSION_ID:-0} +DVER_MAJOR=$(echo "$DVER" | cut -d. -f1) +main From ebe546e2f0e88b6de73ced2b252100c082507e76 Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Wed, 8 Jul 2026 23:21:08 +0530 Subject: [PATCH 2/7] Fix shellcheck SC2221/SC2222: remove redundant i3wm pattern --- core/tabs/system-setup/global-theme.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tabs/system-setup/global-theme.sh b/core/tabs/system-setup/global-theme.sh index d5190d292..de0e98623 100755 --- a/core/tabs/system-setup/global-theme.sh +++ b/core/tabs/system-setup/global-theme.sh @@ -243,7 +243,7 @@ detectDE() { *Pantheon*|*pantheon*) DE=pantheon ;; *Sway*|*sway*) DE=sway ;; *Hyprland*|*hyprland*) DE=hyprland ;; - *i3*|*i3wm*) DE=i3 ;; + *i3*) DE=i3 ;; *Enlightenment*|*enlightenment*) DE=enlightenment ;; *Openbox*|*openbox*) DE=openbox ;; *bspwm*) DE=bspwm ;; From 610134639793f86e0c72447aaa833727500c878d Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Wed, 8 Jul 2026 23:25:40 +0530 Subject: [PATCH 3/7] Address Codex review: fix Firefox snap/gpg, Thorium curl, ESCALATION_TOOL, multi_select --- .../applications-setup/browsers/firefox.sh | 18 ++++++++++-------- .../applications-setup/browsers/thorium.sh | 2 +- core/tabs/system-setup/global-theme.sh | 4 ++-- core/tabs/system-setup/tab_data.toml | 1 + 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/core/tabs/applications-setup/browsers/firefox.sh b/core/tabs/applications-setup/browsers/firefox.sh index 5e78ea358..8d6c855b8 100644 --- a/core/tabs/applications-setup/browsers/firefox.sh +++ b/core/tabs/applications-setup/browsers/firefox.sh @@ -5,17 +5,19 @@ setupMozillaRepo() { "$ESCALATION_TOOL" install -d -m 0755 /etc/apt/keyrings curl -fsSL https://packages.mozilla.org/apt/repo-signing-key.gpg -o /tmp/mozilla-key.gpg - "$ESCALATION_TOOL" gpg --batch --yes --dearmor -o /etc/apt/keyrings/packages.mozilla.org.gpg /tmp/mozilla-key.gpg 2>/dev/null || { + KEY_FILE=packages.mozilla.org.gpg + if ! "$ESCALATION_TOOL" gpg --batch --yes --dearmor -o /etc/apt/keyrings/$KEY_FILE /tmp/mozilla-key.gpg 2>/dev/null; then "$ESCALATION_TOOL" cp /tmp/mozilla-key.gpg /etc/apt/keyrings/packages.mozilla.org.asc - } + KEY_FILE=packages.mozilla.org.asc + fi rm -f /tmp/mozilla-key.gpg - "$ESCALATION_TOOL" tee /etc/apt/sources.list.d/mozilla.sources > /dev/null << 'EOF' + "$ESCALATION_TOOL" tee /etc/apt/sources.list.d/mozilla.sources > /dev/null << EOF Types: deb URIs: https://packages.mozilla.org/apt Suites: mozilla Components: main -Signed-By: /etc/apt/keyrings/packages.mozilla.org.gpg +Signed-By: /etc/apt/keyrings/$KEY_FILE EOF "$ESCALATION_TOOL" tee /etc/apt/preferences.d/mozilla > /dev/null << 'EOF' @@ -26,15 +28,15 @@ EOF } installFirefox() { + if [ "$DTYPE" = "ubuntu" ] && command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then + printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" + "$ESCALATION_TOOL" snap remove firefox + fi if ! command_exists firefox; then printf "%b\n" "${YELLOW}Installing Mozilla Firefox...${RC}" case "$PACKAGER" in apt-get|nala) if [ "$DTYPE" = "ubuntu" ]; then - if command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then - printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" - "$ESCALATION_TOOL" snap remove firefox - fi setupMozillaRepo "$ESCALATION_TOOL" "$PACKAGER" update "$ESCALATION_TOOL" "$PACKAGER" install -y firefox diff --git a/core/tabs/applications-setup/browsers/thorium.sh b/core/tabs/applications-setup/browsers/thorium.sh index 42c0fa06a..bb76df28f 100644 --- a/core/tabs/applications-setup/browsers/thorium.sh +++ b/core/tabs/applications-setup/browsers/thorium.sh @@ -8,7 +8,7 @@ installThorium() { case "$PACKAGER" in apt-get|nala) "$ESCALATION_TOOL" rm -fv /etc/apt/sources.list.d/thorium.list - "$ESCALATION_TOOL" wget --no-hsts -P /etc/apt/sources.list.d/ http://dl.thorium.rocks/debian/dists/stable/thorium.list + "$ESCALATION_TOOL" curl -fsSLo /etc/apt/sources.list.d/thorium.list http://dl.thorium.rocks/debian/dists/stable/thorium.list "$ESCALATION_TOOL" "$PACKAGER" update "$ESCALATION_TOOL" "$PACKAGER" install -y thorium-browser ;; diff --git a/core/tabs/system-setup/global-theme.sh b/core/tabs/system-setup/global-theme.sh index de0e98623..8c577696a 100755 --- a/core/tabs/system-setup/global-theme.sh +++ b/core/tabs/system-setup/global-theme.sh @@ -536,8 +536,8 @@ cleanThemeEnv() { sed -i '/^export GTK_THEME/d; /^export QT_QPA_PLATFORMTHEME/d' "$f" 2>/dev/null || true fi done - if command_exists sudo; then - sudo sed -i '/^QT_QPA_PLATFORMTHEME=/d; /^GTK_THEME=/d' /etc/environment 2>/dev/null || true + if command_exists "$ESCALATION_TOOL"; then + "$ESCALATION_TOOL" sed -i '/^QT_QPA_PLATFORMTHEME=/d; /^GTK_THEME=/d' /etc/environment 2>/dev/null || true fi printf "%b\n" "${GREEN}Theme environment variables cleaned.${RC}" } diff --git a/core/tabs/system-setup/tab_data.toml b/core/tabs/system-setup/tab_data.toml index eb1fec6ab..104fc77f3 100644 --- a/core/tabs/system-setup/tab_data.toml +++ b/core/tabs/system-setup/tab_data.toml @@ -250,6 +250,7 @@ name = "Global Theme" description = "This script is designed to handle the installation and configuration of global theming" script = "global-theme.sh" task_list = "I PFM" +multi_select = false [[data]] name = "Remove Snaps" From 41bc97f789c51f024b4ec89d2a8b968065f14a5e Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Wed, 8 Jul 2026 23:34:05 +0530 Subject: [PATCH 4/7] Fix Codex P1: purge transitional Firefox deb, stop deleting WM configs on reset --- core/tabs/applications-setup/browsers/firefox.sh | 11 ++++++++--- core/tabs/system-setup/global-theme.sh | 9 +-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/tabs/applications-setup/browsers/firefox.sh b/core/tabs/applications-setup/browsers/firefox.sh index 8d6c855b8..3bc403bec 100644 --- a/core/tabs/applications-setup/browsers/firefox.sh +++ b/core/tabs/applications-setup/browsers/firefox.sh @@ -28,9 +28,14 @@ EOF } installFirefox() { - if [ "$DTYPE" = "ubuntu" ] && command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then - printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" - "$ESCALATION_TOOL" snap remove firefox + if [ "$DTYPE" = "ubuntu" ]; then + if command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then + printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" + "$ESCALATION_TOOL" snap remove firefox + fi + if command_exists firefox; then + "$ESCALATION_TOOL" "$PACKAGER" purge -y firefox 2>/dev/null || true + fi fi if ! command_exists firefox; then printf "%b\n" "${YELLOW}Installing Mozilla Firefox...${RC}" diff --git a/core/tabs/system-setup/global-theme.sh b/core/tabs/system-setup/global-theme.sh index 8c577696a..aa8c8a233 100755 --- a/core/tabs/system-setup/global-theme.sh +++ b/core/tabs/system-setup/global-theme.sh @@ -468,14 +468,7 @@ resetHyprland() { } resetWMCommon() { - for wm_dir in i3 bspwm qtile dwm; do - rm -f "$HOME/.config/$wm_dir/config" "$HOME/.config/$wm_dir/theme" 2>/dev/null || true - done - if [ -f /etc/i3/config ]; then - mkdir -p "$HOME/.config/i3" - cp /etc/i3/config "$HOME/.config/i3/" 2>/dev/null || true - fi - printf "%b\n" "${GREEN}WM configs reset.${RC}" + printf "%b\n" "${YELLOW}No theme reset available for tiling WMs — config files contain keybindings and session settings, not just theme. Skipping.${RC}" } resetOpenbox() { From 81482595ee3be779f7e099204a4a0c1dc278b13b Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Wed, 8 Jul 2026 23:48:09 +0530 Subject: [PATCH 5/7] Fix Codex: only purge Firefox snap transitional, skip Sway/Hyprland config deletion --- core/tabs/applications-setup/browsers/firefox.sh | 12 ++++-------- core/tabs/system-setup/global-theme.sh | 14 ++------------ 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/core/tabs/applications-setup/browsers/firefox.sh b/core/tabs/applications-setup/browsers/firefox.sh index 3bc403bec..6f8a2563c 100644 --- a/core/tabs/applications-setup/browsers/firefox.sh +++ b/core/tabs/applications-setup/browsers/firefox.sh @@ -28,14 +28,10 @@ EOF } installFirefox() { - if [ "$DTYPE" = "ubuntu" ]; then - if command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then - printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" - "$ESCALATION_TOOL" snap remove firefox - fi - if command_exists firefox; then - "$ESCALATION_TOOL" "$PACKAGER" purge -y firefox 2>/dev/null || true - fi + if [ "$DTYPE" = "ubuntu" ] && command_exists snap && snap list firefox 2>/dev/null | grep -q firefox; then + printf "%b\n" "${YELLOW}Removing Snap Firefox...${RC}" + "$ESCALATION_TOOL" snap remove firefox + "$ESCALATION_TOOL" "$PACKAGER" purge -y firefox 2>/dev/null || true fi if ! command_exists firefox; then printf "%b\n" "${YELLOW}Installing Mozilla Firefox...${RC}" diff --git a/core/tabs/system-setup/global-theme.sh b/core/tabs/system-setup/global-theme.sh index aa8c8a233..47e9d1210 100755 --- a/core/tabs/system-setup/global-theme.sh +++ b/core/tabs/system-setup/global-theme.sh @@ -450,21 +450,11 @@ resetPantheon() { } resetSway() { - rm -f "$HOME/.config/sway/config" 2>/dev/null || true - if [ -f /etc/sway/config ]; then - mkdir -p "$HOME/.config/sway" - cp /etc/sway/config "$HOME/.config/sway/" 2>/dev/null || true - fi - printf "%b\n" "${GREEN}Sway config reset.${RC}" + printf "%b\n" "${YELLOW}Theme reset not supported for Sway — config contains keybindings and session settings. Skipping.${RC}" } resetHyprland() { - rm -f "$HOME/.config/hypr/hyprland.conf" 2>/dev/null || true - if [ -f /usr/share/hyprland/hyprland.conf ]; then - mkdir -p "$HOME/.config/hypr" - cp /usr/share/hyprland/hyprland.conf "$HOME/.config/hypr/" 2>/dev/null || true - fi - printf "%b\n" "${GREEN}Hyprland config reset.${RC}" + printf "%b\n" "${YELLOW}Theme reset not supported for Hyprland — config contains keybindings and session settings. Skipping.${RC}" } resetWMCommon() { From 8a2697713174ce5c9a3b094e21b841a0189cfeb0 Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Wed, 8 Jul 2026 23:56:58 +0530 Subject: [PATCH 6/7] Fix Codex: skip Qt env for KDE dark theme, no-op resetOpenbox --- core/tabs/system-setup/global-theme.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/core/tabs/system-setup/global-theme.sh b/core/tabs/system-setup/global-theme.sh index 47e9d1210..0735a5d4b 100755 --- a/core/tabs/system-setup/global-theme.sh +++ b/core/tabs/system-setup/global-theme.sh @@ -197,6 +197,9 @@ successOutput() { applyDarkTheme() { applyTheming + case "$XDG_CURRENT_DESKTOP" in + KDE) return ;; + esac install_theme_tools configure_gtk2 configure_gtk3 @@ -462,12 +465,7 @@ resetWMCommon() { } resetOpenbox() { - rm -f "$HOME/.config/openbox/rc.xml" 2>/dev/null || true - if [ -f /etc/xdg/openbox/rc.xml ]; then - mkdir -p "$HOME/.config/openbox" - cp /etc/xdg/openbox/rc.xml "$HOME/.config/openbox/" 2>/dev/null || true - fi - printf "%b\n" "${GREEN}Openbox config reset.${RC}" + printf "%b\n" "${YELLOW}Theme reset not supported for Openbox — config contains keybindings and session settings. Skipping.${RC}" } resetEnlightenment() { From 98ce27cdec781b832a305278137831c8c6503a0e Mon Sep 17 00:00:00 2001 From: Pinak Dhabu Date: Thu, 9 Jul 2026 00:07:43 +0530 Subject: [PATCH 7/7] =?UTF-8?q?Final=20polish:=20fix=20Vivaldi=20sudo?= =?UTF-8?q?=E2=86=92ESCALATION=5FTOOL,=20Thorium=20HTTP=E2=86=92HTTPS,=20m?= =?UTF-8?q?issing=20trailing=20newlines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/tabs/applications-setup/browsers/brave.sh | 2 +- core/tabs/applications-setup/browsers/chromium.sh | 2 +- core/tabs/applications-setup/browsers/lynx.sh | 2 +- core/tabs/applications-setup/browsers/thorium.sh | 2 +- core/tabs/applications-setup/browsers/vivaldi.sh | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/tabs/applications-setup/browsers/brave.sh b/core/tabs/applications-setup/browsers/brave.sh index 00b398c9c..bf271c921 100644 --- a/core/tabs/applications-setup/browsers/brave.sh +++ b/core/tabs/applications-setup/browsers/brave.sh @@ -45,4 +45,4 @@ installBrave() { } checkEnv -installBrave \ No newline at end of file +installBrave diff --git a/core/tabs/applications-setup/browsers/chromium.sh b/core/tabs/applications-setup/browsers/chromium.sh index 2ee9425a7..38a616572 100644 --- a/core/tabs/applications-setup/browsers/chromium.sh +++ b/core/tabs/applications-setup/browsers/chromium.sh @@ -36,4 +36,4 @@ fi } checkEnv -installChromium \ No newline at end of file +installChromium diff --git a/core/tabs/applications-setup/browsers/lynx.sh b/core/tabs/applications-setup/browsers/lynx.sh index 4b06575bd..f78d34bad 100644 --- a/core/tabs/applications-setup/browsers/lynx.sh +++ b/core/tabs/applications-setup/browsers/lynx.sh @@ -29,4 +29,4 @@ installLynx() { } checkEnv -installLynx \ No newline at end of file +installLynx diff --git a/core/tabs/applications-setup/browsers/thorium.sh b/core/tabs/applications-setup/browsers/thorium.sh index bb76df28f..bb3b654e1 100644 --- a/core/tabs/applications-setup/browsers/thorium.sh +++ b/core/tabs/applications-setup/browsers/thorium.sh @@ -8,7 +8,7 @@ installThorium() { case "$PACKAGER" in apt-get|nala) "$ESCALATION_TOOL" rm -fv /etc/apt/sources.list.d/thorium.list - "$ESCALATION_TOOL" curl -fsSLo /etc/apt/sources.list.d/thorium.list http://dl.thorium.rocks/debian/dists/stable/thorium.list + "$ESCALATION_TOOL" curl -fsSLo /etc/apt/sources.list.d/thorium.list https://dl.thorium.rocks/debian/dists/stable/thorium.list "$ESCALATION_TOOL" "$PACKAGER" update "$ESCALATION_TOOL" "$PACKAGER" install -y thorium-browser ;; diff --git a/core/tabs/applications-setup/browsers/vivaldi.sh b/core/tabs/applications-setup/browsers/vivaldi.sh index d3de6e596..7703c0bee 100644 --- a/core/tabs/applications-setup/browsers/vivaldi.sh +++ b/core/tabs/applications-setup/browsers/vivaldi.sh @@ -11,8 +11,8 @@ installVivaldi() { "$ESCALATION_TOOL" snap install vivaldi else "$ESCALATION_TOOL" "$PACKAGER" install -y curl - "$ESCALATION_TOOL" curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo dd of=/usr/share/keyrings/vivaldi-browser.gpg - "$ESCALATION_TOOL" echo "deb [signed-by=/usr/share/keyrings/vivaldi-browser.gpg arch=$(dpkg --print-architecture)] https://repo.vivaldi.com/archive/deb/ stable main" | sudo dd of=/etc/apt/sources.list.d/vivaldi-archive.list + curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | "$ESCALATION_TOOL" dd of=/usr/share/keyrings/vivaldi-browser.gpg + "$ESCALATION_TOOL" sh -c "echo 'deb [signed-by=/usr/share/keyrings/vivaldi-browser.gpg arch=$(dpkg --print-architecture)] https://repo.vivaldi.com/archive/deb/ stable main' > /etc/apt/sources.list.d/vivaldi-archive.list" "$ESCALATION_TOOL" "$PACKAGER" update "$ESCALATION_TOOL" "$PACKAGER" install -y vivaldi-stable fi