diff options
Diffstat (limited to 'common/modules/window_managers')
| -rw-r--r-- | common/modules/window_managers/default.nix | 1 | ||||
| -rw-r--r-- | common/modules/window_managers/dwm/default.nix | 4 | ||||
| -rw-r--r-- | common/modules/window_managers/dwm/scripts.nix | 79 | ||||
| -rw-r--r-- | common/modules/window_managers/hyprland/default.nix | 79 |
4 files changed, 95 insertions, 68 deletions
diff --git a/common/modules/window_managers/default.nix b/common/modules/window_managers/default.nix index 7b51946..6591583 100644 --- a/common/modules/window_managers/default.nix +++ b/common/modules/window_managers/default.nix @@ -62,6 +62,7 @@ in wl-clipboard cliphist brightnessctl + maim ]; } else diff --git a/common/modules/window_managers/dwm/default.nix b/common/modules/window_managers/dwm/default.nix index f665d06..d1f7850 100644 --- a/common/modules/window_managers/dwm/default.nix +++ b/common/modules/window_managers/dwm/default.nix @@ -132,10 +132,8 @@ in ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1 & [ -f ~/.Xresources ] && xrdb -merge ~/.Xresources + xrandr --output eDP --set TearFree on - dunst & - clipcatd & - slstatus & sync_dms systemctl --user restart xidlehook.service xautolock-session.service xss-lock.service clipcat.service ''; diff --git a/common/modules/window_managers/dwm/scripts.nix b/common/modules/window_managers/dwm/scripts.nix index 5b52686..25ecc19 100644 --- a/common/modules/window_managers/dwm/scripts.nix +++ b/common/modules/window_managers/dwm/scripts.nix @@ -3,43 +3,76 @@ homeManager: let sync_dms = pkgs.writeShellScriptBin "sync_dms" '' jq=${pkgs.jq}/bin/jq - CONFIG_FILE=$HOME/.local/state/DankMaterialShell/session.json + SETTINGS_FILE="$HOME/.config/noctalia/settings.json" + WALLPAPER_FILE="$HOME/.cache/noctalia/wallpapers.json" - get_val() { $jq -r ".$1" "$CONFIG_FILE"; } - set_val() { + # --- Helpers --- + + get_setting() { + $jq -r "$1" "$SETTINGS_FILE" + } + + toggle_nightlight_state() { local tmp=$(mktemp) - $jq --arg val "$2" ".$1 = \$val" "$CONFIG_FILE" > "$tmp" && mv "$tmp" "$CONFIG_FILE" + # Flips the boolean cleanly without changing it to a string + $jq '.nightLight.enabled = (.nightLight.enabled | not)' "$SETTINGS_FILE" > "$tmp" && mv "$tmp" "$SETTINGS_FILE" } + # --- Modules --- + + apply_wallpaper() { + # Read dark mode and monitor preferences from settings.json + local is_dark=$(get_setting '.colorSchemes.darkMode') + local monitor=$(get_setting '.colorSchemes.monitorForColors') + + # Default to eDP-1 if monitor setting is missing + if [[ "$monitor" == "null" || -z "$monitor" ]]; then + monitor="eDP-1" + fi + + local mode="light" + if [[ "$is_dark" == "true" ]]; then + mode="dark" + fi - function sync_all { - ISNIGHTMODE=$(get_val "nightModeEnabled") - NIGHTMODETEMP=$(get_val "nightModeTemperature") - WALL=$(get_val "wallpaperPath") - ${pkgs.xwallpaper}/bin/xwallpaper --zoom "$WALL" + # Use jq variables to safely parse the nested monitor and mode keys + local wall=$($jq -r --arg mon "$monitor" --arg mode "$mode" '.wallpapers[$mon][$mode]' "$WALLPAPER_FILE") - if [[ "$ISNIGHTMODE" == "true" ]]; then - echo "bitch $ISNIGHTMODE" - ${pkgs.redshift}/bin/redshift -o "$NIGHTMODETEMP" + if [[ "$wall" != "null" && -n "$wall" ]]; then + ${pkgs.xwallpaper}/bin/xwallpaper --zoom "$wall" + fi + } + + apply_nightlight() { + local is_night_mode=$(get_setting '.nightLight.enabled') + local night_temp=$(get_setting '.nightLight.nightTemp') + + if [[ "$is_night_mode" == "true" ]]; then + echo "bitch $is_night_mode" + # -P resets prior adjustments, -O applies one-shot manual temperature + ${pkgs.redshift}/bin/redshift -P -O "$night_temp" else + # -x clears all redshift adjustments ${pkgs.redshift}/bin/redshift -x fi } - function dmenu_settings { - ISNIGHTMODE=$(get_val "nightModeEnabled") - options="NightMode (Currently $ISNIGHTMODE)\nSync Now" + sync_all() { + apply_wallpaper + apply_nightlight + } - choice=$(echo -e "$options" | dmenu -p "Settings:") + dmenu_settings() { + local is_night_mode=$(get_setting '.nightLight.enabled') + local options="Toggle NightMode (Currently $is_night_mode)\nSync Now" + + local choice=$(echo -e "$options" | dmenu -p "Settings:") case "$choice" in *"NightMode"*) - if [[ "$ISNIGHTMODE" == "true" ]]; then - set_val "nightModeEnabled" "false" - else - set_val "nightModeEnabled" "true" - fi - sync_all + toggle_nightlight_state + # Immediately apply the new state after toggling + apply_nightlight ;; "Sync Now") sync_all @@ -47,6 +80,8 @@ let esac } + # --- Main --- + case "$1" in settings) dmenu_settings ;; *) sync_all ;; diff --git a/common/modules/window_managers/hyprland/default.nix b/common/modules/window_managers/hyprland/default.nix index c338f44..c1c13a9 100644 --- a/common/modules/window_managers/hyprland/default.nix +++ b/common/modules/window_managers/hyprland/default.nix @@ -12,23 +12,6 @@ }: let cfg = config.${moduleNameSpace}.windowManagers; - - snip = pkgs.writeShellScript "snip" '' - case $1 in - full) - ${pkgs.grim}/bin/grim - | wl-copy - ;; - selection) - GEOM=$(${pkgs.slurp}/bin/slurp) || exit - ${pkgs.grim}/bin/grim -g "$GEOM" - | wl-copy - ;; - window) - GEOM=$(hyprctl activewindow -j | ${pkgs.jq}/bin/jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"') - ${pkgs.grim}/bin/grim -g "$GEOM" - | wl-copy - ;; - esac - ''; - smart-alacritty = pkgs.writeShellScript "smart-alacritty" '' alacritty msg create-window || exec alacritty ''; @@ -55,28 +38,39 @@ in systemd.variables = [ "--all" ]; xwayland.enable = true; systemd.enableXdgAutostart = false; + extraConfig = '' + layerrule { + name = noctalia + match:namespace = noctalia-background-.*$ + ignore_alpha = 0.5 + blur = true + blur_popups = true + } + ''; settings = { monitor = [ ",1920x1080@120,auto,1.0" ]; - source = [ ] ++ lib.optional (config.beeMods.matugen.enable) "~/.config/hypr/dms/colors.conf"; + source = + [ ] ++ lib.optional (config.beeMods.matugen.enable) "~/.config/hypr/noctalia/noctalia-colors.conf"; "$mainMod" = "SUPER"; - # env = [ - # "NIXOS_OZONE_WL,1" - # "QT_AUTO_SCREEN_SCALE_FACTOR,1" - # "ELECTRON_OZONE_PLATFORM_HINT,auto" - # "QT_QPA_PLATFORM,wayland;xcb" - # "XDG_SESSION_TYPE,wayland" - # "GDK_BACKEND,wayland,x11" - # "GDK_SCALE,1" - # ]; + env = [ + "NIXOS_OZONE_WL,1" + "QT_AUTO_SCREEN_SCALE_FACTOR,1" + "ELECTRON_OZONE_PLATFORM_HINT,auto" + "QT_QPA_PLATFORM,wayland;xcb" + "XDG_SESSION_TYPE,wayland" + "GDK_BACKEND,wayland,x11" + "GDK_SCALE,1" + ]; exec-once = [ - "dbus-update-activation-environment --all" - "sleep 1 && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" - "gnome-keyring-daemon --start --components=secrets,ssh,pkcs11" + # "dbus-update-activation-environment --all" + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "gnome-keyring-daemon --start --components=secrets" + "noctalia-shell" ] ++ lib.optionals config.beeMods.windowManagers.dwm.enable [ "systemctl --user stop xidlehook.service" @@ -115,10 +109,7 @@ in resize_on_border = true; no_focus_fallback = true; - allow_tearing = false; - - # "col.active_border" = "$_tertiary_fixed_dim"; - # "col.inactive_border" = "$_outline"; + allow_tearing = true; }; master = { @@ -212,7 +203,7 @@ in }; windowrule = [ - "workspace 1, match:class ^(foot|footclient|alacritty|com.mitchellh.ghostty)$" + "workspace 1, match:class ^(foot|footclient|Alacritty|com.mitchellh.ghostty)$" "workspace 2, match:class ^(zen|firefox|obsidian)$" "workspace 3, match:class ^(vesktop|discord|thunderbird|Element|equibop)$" "workspace 4, match:class ^(steam)$" @@ -224,6 +215,7 @@ in "no_anim on, match:namespace ^rofi$" "no_anim on, match:namespace ^(dms)$" "no_anim on, match:namespace .*dms.*" + "no_anim on, match:namespace .*noctalia.*" ]; workspace = [ "2, layout:scrolling" ]; @@ -231,13 +223,15 @@ in bind = [ "$mainMod, r, exec, hyprctl reload" "$mainMod, Return, exec, ${terminal}" - "$mainMod, a, exec,dms ipc call spotlight toggle" - "$mainMod, v,exec,dms ipc call clipboard toggle" - "ALT, F4, exec, dms ipc call powermenu toggle" - "$mainMod, y, exec, dms ipc call dankdash wallpaper" + "$mainMod, a, exec,noctalia-shell ipc call launcher toggle" + "$mainMod, y, exec,noctalia-shell ipc call wallpaper toggle" + "$mainMod, v, exec,noctalia-shell ipc call launcher clipboard" + "$mainMod, n, exec,noctalia-shell ipc call notifications toggleHistory" - "$mainMod, comma, exec,dms ipc call settings focusOrToggle" + "$mainMod, comma, exec,noctalia-shell ipc call settings toggle" + "$mainMod, Period, exec,noctalia-shell ipc call launcher emoji" + "ALT, F4, exec,noctalia-shell ipc call sessionMenu toggle" "$mainMod, F12, exec, gnome-calculator" "$mainMod, b, exec, zen" "$mainMod, e, exec, nautilus" @@ -250,9 +244,8 @@ in "$mainMod, k, movefocus, u" "$mainMod, j, movefocus, d" - ", Print, exec, ${snip} full" - "$mainMod, Print, exec, ${snip} selection" - "$mainMod SHIFT, Print, exec, ${snip} window" + ", Print, exec, ${pkgs.grimblast}/bin/grimblast copy screen" + "$mainMod, Print, exec, ${pkgs.grimblast}/bin/grimblast copy area" "$mainMod SHIFT, k, swapwindow, u" "$mainMod SHIFT, j, swapwindow, d" |
