diff --git a/dots/.config/hypr/hyprland/keybinds.conf b/dots/.config/hypr/hyprland/keybinds.conf index 8afb00457..c4454db16 100644 --- a/dots/.config/hypr/hyprland/keybinds.conf +++ b/dots/.config/hypr/hyprland/keybinds.conf @@ -230,8 +230,8 @@ bindd = Ctrl+Shift+Alt+Super, Delete, Shutdown, exec, systemctl poweroff || logi ##! Screen # Zoom -binde = Super, Minus, exec, ~/.config/hypr/hyprland/scripts/zoom.sh decrease 0.3 # [hidden] Zoom out -binde = Super, Equal, exec, ~/.config/hypr/hyprland/scripts/zoom.sh increase 0.3 # [hidden] Zoom in +binde = Super, Minus, exec, ~/.config/hypr/hyprland/scripts/zoom.sh decrease 0.3 # Zoom out +binde = Super, Equal, exec, ~/.config/hypr/hyprland/scripts/zoom.sh increase 0.3 # Zoom in # Zoom with keypad binde = Super, code:82, exec, qs -c $qsConfig ipc call zoom zoomOut # [hidden] Zoom out binde = Super, code:86, exec, qs -c $qsConfig ipc call zoom zoomIn # [hidden] Zoom in diff --git a/dots/.config/matugen/templates/gtk-3.0/gtk.css b/dots/.config/matugen/templates/gtk-3.0/gtk.css index c0054f864..0d8cb9cbe 100644 --- a/dots/.config/matugen/templates/gtk-3.0/gtk.css +++ b/dots/.config/matugen/templates/gtk-3.0/gtk.css @@ -1,22 +1,38 @@ /* -* GTK Colors -* Generated with Matugen +* GTK colors generated with Matugen +* The source template is here: ~/.config/matugen/templates/gtk-3.0/gtk.css */ +/* Accents */ @define-color accent_color {{colors.primary.default.hex}}; @define-color accent_fg_color {{colors.on_primary.default.hex}}; @define-color accent_bg_color {{colors.primary.default.hex}}; +@define-color destructive_bg_color {{colors.error_container.default.hex}}; +@define-color destructive_fg_color {{colors.on_error_container.default.hex}}; +@define-color destructive_color {{colors.error.default.hex}}; +@define-color success_bg_color #374B3E; +@define-color success_fg_color #D1E9D6; +@define-color success_color #B5CCBA; +/* Base surfaces */ @define-color window_bg_color {{colors.background.default.hex}}; @define-color window_fg_color {{colors.on_background.default.hex}}; -@define-color headerbar_bg_color {{colors.surface_dim.default.hex}}; +@define-color headerbar_bg_color {{colors.surface_container.default.hex}}; +@define-color headerbar_backdrop_color {{colors.surface_container.default.hex}}; @define-color headerbar_fg_color {{colors.on_surface.default.hex}}; -@define-color popover_bg_color {{colors.surface_dim.default.hex}}; -@define-color popover_fg_color {{colors.on_surface.default.hex}}; -@define-color view_bg_color {{colors.surface.default.hex}}; -@define-color view_fg_color {{colors.on_surface.default.hex}}; -@define-color card_bg_color {{colors.surface.default.hex}}; +@define-color card_bg_color {{colors.surface_container.default.hex}}; @define-color card_fg_color {{colors.on_surface.default.hex}}; -@define-color sidebar_bg_color @window_bg_color; -@define-color sidebar_fg_color @window_fg_color; -@define-color sidebar_border_color @window_bg_color; -@define-color sidebar_backdrop_color @window_bg_color; +@define-color sidebar_bg_color {{colors.surface_container.default.hex}}; +@define-color sidebar_fg_color {{colors.on_surface.default.hex}}; +@define-color secondary_sidebar_bg_color {{colors.surface_container_low.default.hex}}; +@define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}}; +@define-color sidebar_border_color @sidebar_bg_color; +@define-color sidebar_backdrop_color @sidebar_bg_color; +@define-color view_bg_color {{colors.surface_container_lowest.default.hex}}; +@define-color view_fg_color {{colors.on_surface.default.hex}}; +@define-color overview_bg_color {{colors.surface_container_lowest.default.hex}}; +@define-color overview_fg_color {{colors.on_surface.default.hex}}; +/* Popups */ +@define-color popover_bg_color {{colors.surface_container_highest.default.hex}}; +@define-color popover_fg_color {{colors.on_surface.default.hex}}; +@define-color dialog_bg_color {{colors.surface_container_high.default.hex}}; +@define-color dialog_fg_color {{colors.on_surface.default.hex}}; diff --git a/dots/.config/matugen/templates/gtk-4.0/gtk.css b/dots/.config/matugen/templates/gtk-4.0/gtk.css index 80b1d6975..07c8099f5 100644 --- a/dots/.config/matugen/templates/gtk-4.0/gtk.css +++ b/dots/.config/matugen/templates/gtk-4.0/gtk.css @@ -1,44 +1,83 @@ /* -* GTK Colors -* Generated with Matugen +* GTK colors generated with Matugen +* The source template is here: ~/.config/matugen/templates/gtk-4.0/gtk.css */ @media (prefers-color-scheme: light) { + /* Accents */ @define-color accent_color {{colors.primary.light.hex}}; @define-color accent_fg_color {{colors.on_primary.light.hex}}; @define-color accent_bg_color {{colors.primary.light.hex}}; + @define-color destructive_bg_color {{colors.error_container.light.hex}}; + @define-color destructive_fg_color {{colors.on_error_container.light.hex}}; + @define-color destructive_color {{colors.error.light.hex}}; + @define-color success_bg_color #B5CCBA; + @define-color success_fg_color #213528; + @define-color success_color #374B3E; + /* Base surfaces */ @define-color window_bg_color {{colors.background.light.hex}}; @define-color window_fg_color {{colors.on_background.light.hex}}; - @define-color headerbar_bg_color {{colors.surface_dim.light.hex}}; + @define-color headerbar_bg_color {{colors.surface_container.light.hex}}; + @define-color headerbar_backdrop_color {{colors.surface_container.light.hex}}; @define-color headerbar_fg_color {{colors.on_surface.light.hex}}; - @define-color popover_bg_color {{colors.surface_dim.light.hex}}; - @define-color popover_fg_color {{colors.on_surface.light.hex}}; - @define-color view_bg_color {{colors.surface.light.hex}}; - @define-color view_fg_color {{colors.on_surface.light.hex}}; - @define-color card_bg_color {{colors.surface.light.hex}}; + @define-color card_bg_color {{colors.surface_container.light.hex}}; @define-color card_fg_color {{colors.on_surface.light.hex}}; - @define-color sidebar_bg_color @window_bg_color; - @define-color sidebar_fg_color @window_fg_color; - @define-color sidebar_border_color @window_bg_color; - @define-color sidebar_backdrop_color @window_bg_color; + @define-color sidebar_bg_color {{colors.surface_container.light.hex}}; + @define-color sidebar_fg_color {{colors.on_surface.light.hex}}; + @define-color secondary_sidebar_bg_color {{colors.surface_container_low.light.hex}}; + @define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.light.hex}}; + @define-color secondary_sidebar_fg_color {{colors.on_surface.light.hex}}; + @define-color sidebar_border_color @sidebar_bg_color; + @define-color sidebar_backdrop_color @sidebar_bg_color; + @define-color view_bg_color {{colors.surface_container_lowest.light.hex}}; + @define-color view_fg_color {{colors.on_surface.light.hex}}; + @define-color overview_bg_color {{colors.surface_container_lowest.light.hex}}; + @define-color overview_fg_color {{colors.on_surface.light.hex}}; + /* Popups */ + @define-color popover_bg_color {{colors.surface_container_highest.light.hex}}; + @define-color popover_fg_color {{colors.on_surface.light.hex}}; + @define-color dialog_bg_color {{colors.surface_container_high.light.hex}}; + @define-color dialog_fg_color {{colors.on_surface.light.hex}}; + @define-color thumbnail_bg_color {{colors.surface_container_high.light.hex}}; + @define-color thumbnail_fg_color {{colors.on_surface.light.hex}}; } @media (prefers-color-scheme: dark) { + + /* Accents */ @define-color accent_color {{colors.primary.dark.hex}}; @define-color accent_fg_color {{colors.on_primary.dark.hex}}; @define-color accent_bg_color {{colors.primary.dark.hex}}; + @define-color destructive_bg_color {{colors.error_container.dark.hex}}; + @define-color destructive_fg_color {{colors.on_error_container.dark.hex}}; + @define-color destructive_color {{colors.error.dark.hex}}; + @define-color success_bg_color #374B3E; + @define-color success_fg_color #D1E9D6; + @define-color success_color #B5CCBA; + /* Base surfaces */ @define-color window_bg_color {{colors.background.dark.hex}}; @define-color window_fg_color {{colors.on_background.dark.hex}}; - @define-color headerbar_bg_color {{colors.surface_dim.dark.hex}}; + @define-color headerbar_bg_color {{colors.surface_container.dark.hex}}; + @define-color headerbar_backdrop_color {{colors.surface_container.dark.hex}}; @define-color headerbar_fg_color {{colors.on_surface.dark.hex}}; - @define-color popover_bg_color {{colors.surface_dim.dark.hex}}; - @define-color popover_fg_color {{colors.on_surface.dark.hex}}; - @define-color view_bg_color {{colors.surface.dark.hex}}; - @define-color view_fg_color {{colors.on_surface.dark.hex}}; - @define-color card_bg_color {{colors.surface.dark.hex}}; + @define-color card_bg_color {{colors.surface_container.dark.hex}}; @define-color card_fg_color {{colors.on_surface.dark.hex}}; - @define-color sidebar_bg_color @window_bg_color; - @define-color sidebar_fg_color @window_fg_color; - @define-color sidebar_border_color @window_bg_color; - @define-color sidebar_backdrop_color @window_bg_color; + @define-color sidebar_bg_color {{colors.surface_container.dark.hex}}; + @define-color sidebar_fg_color {{colors.on_surface.dark.hex}}; + @define-color secondary_sidebar_bg_color {{colors.surface_container_low.dark.hex}}; + @define-color secondary_sidebar_backdrop_color {{colors.surface_container_low.dark.hex}}; + @define-color secondary_sidebar_fg_color {{colors.on_surface.dark.hex}}; + @define-color sidebar_border_color @sidebar_bg_color; + @define-color sidebar_backdrop_color @sidebar_bg_color; + @define-color view_bg_color {{colors.surface_container_lowest.dark.hex}}; + @define-color view_fg_color {{colors.on_surface.dark.hex}}; + @define-color overview_bg_color {{colors.surface_container_lowest.dark.hex}}; + @define-color overview_fg_color {{colors.on_surface.dark.hex}}; + /* Popups */ + @define-color popover_bg_color {{colors.surface_container_highest.dark.hex}}; + @define-color popover_fg_color {{colors.on_surface.dark.hex}}; + @define-color dialog_bg_color {{colors.surface_container_high.dark.hex}}; + @define-color dialog_fg_color {{colors.on_surface.dark.hex}}; + @define-color thumbnail_bg_color {{colors.surface_container_high.dark.hex}}; + @define-color thumbnail_fg_color {{colors.on_surface.dark.hex}}; } diff --git a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml index 7eaa04b98..f6ab64d81 100644 --- a/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml +++ b/dots/.config/quickshell/ii/modules/ii/background/widgets/clock/CookieClock.qml @@ -66,16 +66,9 @@ Item { } } - Connections { - target: Config - function onReadyChanged() { - categoryFileView.path = Directories.generatedWallpaperCategoryPath - } - } - FileView { id: categoryFileView - path: "" + path: Config.ready ? Directories.generatedWallpaperCategoryPath : "" watchChanges: true onFileChanged: reload() onLoaded: { @@ -85,7 +78,7 @@ Item { property bool useSineCookie: Config.options.background.widgets.clock.cookie.useSineCookie StyledDropShadow { - target: useSineCookie ? sineCookieLoader : roundedPolygonCookieLoader + target: root.useSineCookie ? sineCookieLoader : roundedPolygonCookieLoader RotationAnimation on rotation { running: Config.options.background.widgets.clock.cookie.constantlyRotate @@ -100,7 +93,7 @@ Item { id: sineCookieLoader z: 0 visible: false // The DropShadow already draws it - active: useSineCookie + active: root.useSineCookie sourceComponent: SineCookie { implicitSize: root.implicitSize sides: Config.options.background.widgets.clock.cookie.sides @@ -111,7 +104,7 @@ Item { id: roundedPolygonCookieLoader z: 0 visible: false // The DropShadow already draws it - active: !useSineCookie + active: !root.useSineCookie sourceComponent: MaterialCookie { implicitSize: root.implicitSize sides: Config.options.background.widgets.clock.cookie.sides diff --git a/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml b/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml index cc7c361bc..9916df9c1 100644 --- a/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml +++ b/dots/.config/quickshell/ii/modules/settings/BackgroundConfig.qml @@ -246,8 +246,8 @@ ContentPage { value: Config.options.background.widgets.clock.digital.font.size usePercentTooltip: false buttonIcon: "format_size" - from: 70 - to: 150 + from: 50 + to: 700 stopIndicatorValues: [90] onValueChanged: { Config.options.background.widgets.clock.digital.font.size = value; diff --git a/dots/.config/quickshell/ii/scripts/ai/gemini-categorize-wallpaper.sh b/dots/.config/quickshell/ii/scripts/ai/gemini-categorize-wallpaper.sh index 41963d161..ead46561d 100755 --- a/dots/.config/quickshell/ii/scripts/ai/gemini-categorize-wallpaper.sh +++ b/dots/.config/quickshell/ii/scripts/ai/gemini-categorize-wallpaper.sh @@ -8,7 +8,7 @@ fi # Variables SOURCE_IMG_PATH="$1" -MODEL="${2:-${GEMINI_WALLPAPER_MODEL:-gemini-2.0-flash}}" # We use the flash variant so it's fast +MODEL="${2:-${GEMINI_WALLPAPER_MODEL:-gemini-2.5-flash}}" # We use the flash variant so it's fast WALLPAPER_NAME="$(basename "$SOURCE_IMG_PATH")" PROMPT="${3:-${GEMINI_WALLPAPER_PROMPT:-Categorize the wallpaper. Its file name is $WALLPAPER_NAME}}" RESIZED_IMG_PATH="/tmp/quickshell/ai/wallpaper.jpg" diff --git a/dots/.config/quickshell/ii/scripts/colors/switchwall.sh b/dots/.config/quickshell/ii/scripts/colors/switchwall.sh index 1ae164d0c..6352e3f6d 100755 --- a/dots/.config/quickshell/ii/scripts/colors/switchwall.sh +++ b/dots/.config/quickshell/ii/scripts/colors/switchwall.sh @@ -155,6 +155,12 @@ set_thumbnail_path() { fi } +categorize_wallpaper() { + img_cat=$("$SCRIPT_DIR/../ai/gemini-categorize-wallpaper.sh" "$1") + # notify-send "Wallpaper category" "$img_cat" + echo "$img_cat" > "$STATE_DIR/user/generated/wallpaper/category.txt" +} + switch() { imgpath="$1" mode_flag="$2" @@ -163,9 +169,9 @@ switch() { color="$5" # Start Gemini auto-categorization if enabled - aiStylingEnabled=$(jq -r '.background.clock.cookie.aiStyling' "$SHELL_CONFIG_FILE") + aiStylingEnabled=$(jq -r '.background.widgets.clock.cookie.aiStyling' "$SHELL_CONFIG_FILE") if [[ "$aiStylingEnabled" == "true" ]]; then - "$SCRIPT_DIR/../ai/gemini-categorize-wallpaper.sh" "$imgpath" > "$STATE_DIR/user/generated/wallpaper/category.txt" & + categorize_wallpaper "$imgpath" & fi read scale screenx screeny screensizey < <(hyprctl monitors -j | jq '.[] | select(.focused) | .scale, .x, .y, .height' | xargs) diff --git a/dots/.config/quickshell/ii/services/MprisController.qml b/dots/.config/quickshell/ii/services/MprisController.qml index 02151f1c1..7faed2274 100644 --- a/dots/.config/quickshell/ii/services/MprisController.qml +++ b/dots/.config/quickshell/ii/services/MprisController.qml @@ -25,22 +25,16 @@ Singleton { property var activeTrack; - property bool hasPlasmaIntegration: false - Process { - id: plasmaIntegrationAvailabilityCheckProc - running: true - command: ["bash", "-c", "command -v plasma-browser-integration-host"] - onExited: (exitCode, exitStatus) => { - root.hasPlasmaIntegration = (exitCode === 0); - } - } + readonly property bool hasActivePlasmaIntegration: Mpris.players.values.some( + p => p.dbusName?.startsWith('org.mpris.MediaPlayer2.plasma-browser-integration') + ) function isRealPlayer(player) { if (!Config.options.media.filterDuplicatePlayers) { return true; } return ( - // Remove unecessary native buses from browsers if there's plasma integration - !(hasPlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.firefox')) && !(hasPlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.chromium')) && + // Remove native browser buses only if plasma-browser-integration is actually active on D-Bus + !(hasActivePlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.firefox')) && !(hasActivePlasmaIntegration && player.dbusName.startsWith('org.mpris.MediaPlayer2.chromium')) && // playerctld just copies other buses and we don't need duplicates !player.dbusName?.startsWith('org.mpris.MediaPlayer2.playerctld') && // Non-instance mpd bus diff --git a/sdata/lib/functions.sh b/sdata/lib/functions.sh index 423f45b81..bc8f08400 100644 --- a/sdata/lib/functions.sh +++ b/sdata/lib/functions.sh @@ -119,8 +119,8 @@ function sudo_init_keepalive(){ # Stop the sudo keepalive background process function sudo_stop_keepalive(){ if [[ -n "$SUDO_KEEPALIVE_PID" ]] && kill -0 "$SUDO_KEEPALIVE_PID" 2>/dev/null; then - kill "$SUDO_KEEPALIVE_PID" 2>/dev/null - wait "$SUDO_KEEPALIVE_PID" 2>/dev/null + kill "$SUDO_KEEPALIVE_PID" 2>/dev/null || true + wait "$SUDO_KEEPALIVE_PID" 2>/dev/null || true SUDO_KEEPALIVE_PID="" fi }