diff --git a/flake.lock b/flake.lock index 7d674c4..e69014b 100644 --- a/flake.lock +++ b/flake.lock @@ -40,6 +40,28 @@ "type": "github" } }, + "awww": { + "inputs": { + "flake-compat": "flake-compat_2", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1770895252, + "narHash": "sha256-TUGZVDcC5xsrWVnpBNosAG1cTy+aWchCWXPyeLZdnGM=", + "ref": "refs/heads/main", + "rev": "2c86d41d07471f518e24f5cd1f586e4d2a32d12c", + "revCount": 1331, + "type": "git", + "url": "https://codeberg.org/LGFae/awww.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/LGFae/awww.git" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -138,6 +160,22 @@ } }, "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1767039857, @@ -320,7 +358,7 @@ "inputs": { "cachyos-kernel": "cachyos-kernel", "cachyos-kernel-patches": "cachyos-kernel-patches", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "flake-parts": "flake-parts_2", "nixpkgs": "nixpkgs_2" }, @@ -540,6 +578,7 @@ "inputs": { "aerothemeplasma-nix": "aerothemeplasma-nix", "apple-silicon": "apple-silicon", + "awww": "awww", "base16": "base16", "base16-discord": "base16-discord", "catppuccin-discord": "catppuccin-discord", @@ -561,6 +600,27 @@ "tt-schemes": "tt-schemes" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "awww", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764038373, + "narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "spicetify-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 0ff254f..b95f95c 100644 --- a/flake.nix +++ b/flake.nix @@ -86,6 +86,11 @@ # inputs.nixpkgs.follows = "nixpkgs"; }; + awww = { + url = "git+https://codeberg.org/LGFae/awww.git"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + openmw = { url = "gitlab:OpenMW/openmw/01bcd6a6369fe461caaf900354967b4751aede7a"; flake = false; @@ -114,6 +119,7 @@ nur, nixvim, apple-silicon, + awww, openmw, catppuccin-discord, ... @@ -157,6 +163,7 @@ niri.overlays.niri noctalia.overlays.default nur.overlays.default + awww.overlays.default (final: prev: { openmw-git = openmw; catppuccin-discord-git = catppuccin-discord; diff --git a/home/tiling/niri.nix b/home/tiling/niri.nix index 653ac7e..3c29760 100644 --- a/home/tiling/niri.nix +++ b/home/tiling/niri.nix @@ -1,5 +1,6 @@ { config, + pkgs, ... }: { @@ -180,7 +181,7 @@ title = "Minecraft"; } ]; - open-maximized-to-edges = true; + open-maximized = true; open-focused = true; } { @@ -213,7 +214,7 @@ ]; layer-rules = [ { - matches = [ { namespace = "noctalia-bar-content-.*$"; } ]; + matches = [ { namespace = "noctalia-bar-content-.*"; } ]; background-effect = { xray = false; blur = true; @@ -222,21 +223,22 @@ }; } { - matches = [ { namespace = "noctalia-bar-exclusion-top-.*$"; } ]; + matches = [ { namespace = "noctalia-bar-exclusion-top-.*"; } ]; place-within-backdrop = true; } { matches = [ { namespace = "^launcher$"; } ]; opacity = 0.925; - background-effect = { - xray = false; - blur = true; - noise = 0.05; - saturation = 1; - }; } { - matches = [ { namespace = "^wallpaper$"; } ]; + matches = [ + { + namespace = "^wpaperd.*"; + } + { + namespace = "^awww-daemon"; + } + ]; place-within-backdrop = true; } ]; @@ -399,13 +401,29 @@ allow-when-locked = true; }; - "XF86Sleep".action.power-off-monitors = { }; + "XF86Sleep" = { + action.power-off-monitors = { }; + }; - "XF86Search".action.spawn = [ "fuzzel" ]; + "XF86Search" = { + action.spawn = [ + "noctalia-shell" + "ipc" + "call" + "launcher" + "toggle" + ]; + allow-when-locked = true; + }; "XF86LaunchA" = { - action.toggle-overview = { }; - repeat = false; + action.spawn = [ + "niri" + "msg" + "action" + "toggle-overview" + ]; + allow-when-locked = true; }; "Mod+O" = { @@ -533,14 +551,18 @@ "Mod+Ctrl+Shift+F".action.fullscreen-window = { }; "Mod+C".action.center-column = { }; + "Mod+Ctrl+C".action.center-visible-columns = { }; "Mod+Minus".action.set-column-width = "-10%"; "Mod+Equal".action.set-column-width = "+10%"; + "Mod+Shift+Minus".action.set-window-height = "-10%"; "Mod+Shift+Equal".action.set-window-height = "+10%"; + "Mod+Ctrl+Minus".action.set-column-width = "-0.25%"; "Mod+Ctrl+Equal".action.set-column-width = "+0.25%"; + "Mod+Ctrl+Shift+Minus".action.set-window-height = "-0.25%"; "Mod+Ctrl+Shift+Equal".action.set-window-height = "+0.25%"; @@ -549,10 +571,18 @@ "Mod+W".action.toggle-column-tabbed-display = { }; - "Print".action.screenshot.show-pointer = false; - "Mod+Shift+S".action.screenshot.show-pointer = false; - "Ctrl+Print".action.screenshot-screen.show-pointer = false; - "Alt+Print".action.screenshot-window.show-pointer = false; + "Print".action.screenshot = { + show-pointer = false; + }; + "Mod+Shift+S".action.screenshot = { + show-pointer = false; + }; + "Ctrl+Print".action.screenshot-screen = { + show-pointer = false; + }; + "Alt+Print".action.screenshot-window = { + show-pointer = false; + }; "Mod+Escape" = { action.toggle-keyboard-shortcuts-inhibit = { }; diff --git a/home/tiling/noctalia.nix b/home/tiling/noctalia.nix index 367a7c6..b930511 100644 --- a/home/tiling/noctalia.nix +++ b/home/tiling/noctalia.nix @@ -613,6 +613,8 @@ ]; }; - Install.WantedBy = [ "niri.service" ]; + Install = { + WantedBy = [ "niri.service" ]; + }; }; } diff --git a/home/tiling/wallpaper.nix b/home/tiling/wallpaper.nix index 958cb97..2f11288 100644 --- a/home/tiling/wallpaper.nix +++ b/home/tiling/wallpaper.nix @@ -1,16 +1,25 @@ { pkgs, - config, ... }: { - systemd.user.services.wbg-daemon = { - Unit.Description = "Wallpaper service using wbg (daemon)"; + systemd.user.services.awww-daemon = { + Unit.Description = "Wallpaper service using awww (daemon)"; + Service.ExecStart = "${pkgs.awww}/bin/awww-daemon"; + Install.WantedBy = [ "graphical-session.target" ]; + }; + + systemd.user.services.awww-setter = { + Unit.Description = "Wallpaper service using awww (setter)"; + Unit.Requires = [ "awww-daemon.service" ]; + Unit.After = [ "awww-daemon.service" ]; + Service.Type = "oneshot"; Service.ExecStart = '' - ${pkgs.wbg}/bin/wbg -s \ - %h/.local/share/wallpaper/daily-colored.jpg + ${pkgs.awww}/bin/awww img \ + %h/.local/share/wallpaper/daily.jpg \ + --transition-step 2 \ + --transition-fps 60 ''; - Install.WantedBy = [ "niri.service" ]; }; systemd.user.services.bing-wallpaper = { @@ -30,24 +39,34 @@ libnotify ]; text = '' - OUT="$HOME/.local/share/wallpaper/daily.jpg" - API=$(wget -qO- "https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&mkt=en-US&n=1") - BASE=$(echo "$API" | jq -r '.images[0].urlbase') - TITLE=$(echo "$API" | jq -r '.images[0].title') + set -euo pipefail - mkdir -p "$HOME/.local/share/wallpaper" - wget -qO "$OUT" "https://www.bing.com''${BASE}_UHD.jpg" + OUT_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/wallpaper" + OUT_FILE="$OUT_DIR/daily.jpg" + + API_URL="https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&mkt=en-US&n=1" + API_RESP=$(wget -qO- "$API_URL") + + URL_BASE=$(echo "$API_RESP" | jq -r '.images[0].urlbase') + URL_FALLBACK=$(echo "$API_RESP" | jq -r '.images[0].url') + TITLE=$(echo "$API_RESP" | jq -r '.images[0].title') + + mkdir -p "$OUT_DIR" + + if ! wget -qO "$OUT_FILE" "https://www.bing.com''${URL_BASE}_UHD.jpg"; then + wget -qO "$OUT_FILE" "https://www.bing.com$URL_FALLBACK" + fi notify-send \ - -a "Wallpaper of the day" \ + -a "wallpaper of the day" \ -u low \ -i preferences-desktop-wallpaper \ "$TITLE" ''; } ); - Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user start gowall-convert.service"; - Install.WantedBy = [ "niri.service" ]; + Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart awww-setter.service"; + Install.WantedBy = [ "graphical-session.target" ]; }; systemd.user.timers.bing-wallpaper = { @@ -56,52 +75,4 @@ Timer.Persistent = true; Install.WantedBy = [ "timers.target" ]; }; - - systemd.user.services.gowall-convert = { - Unit.Description = "Convert a wallpaper to the system color scheme"; - Unit.StartLimitBurst = 6; - Unit.StartLimitIntervalSec = "10m"; - Service.Restart = "on-failure"; - Service.RestartSec = "10s"; - Service.Type = "oneshot"; - Service.ExecStart = '' - ${pkgs.gowall}/bin/gowall convert \ - %h/.local/share/wallpaper/daily.jpg \ - --output %h/.local/share/wallpaper/daily-colored.jpg \ - -t nix - ''; - Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart wbg-daemon.service"; - }; - - home.file.".config/gowall/config.yml".text = with config.scheme.withHashtag; '' - themes: - - name: "nix" - colors: - - "${base06}" - - "${base0F}" - - "${base17}" - - "${base0E}" - - "${base08}" - - "${base12}" - - "${base09}" - - "${base0A}" - - "${base0B}" - - "${base0C}" - - "${base15}" - - "${base16}" - - "${base0D}" - - "${base07}" - - "${base05}" - - "${base07}" - - "${base0D}" - - "${base0D}" - - "${base04}" - - "${base04}" - - "${base04}" - - "${base03}" - - "${base02}" - - "${base00}" - - "${base01}" - - "${base11}" - ''; }