diff --git a/modules/desktop/swww.nix b/modules/desktop/swww.nix index cbcaff6..a194234 100644 --- a/modules/desktop/swww.nix +++ b/modules/desktop/swww.nix @@ -4,7 +4,8 @@ with lib; let cfg = config.modules.desktop.swww; - img = ../../assets/wallpaper.png; + wallpapersFolder = "${pkgs.my.wallpapers}/share/backgrounds"; + lastWallpaper = "$XDG_DATA_HOME/swww-last-wallpaper"; in { options.modules.desktop.swww = { enable = mkEnableOption "Enable swww, a Solution to your Wayland Wallpaper Woes"; @@ -16,8 +17,25 @@ in { startScript = mkOption { type = types.package; default = pkgs.writeScript "swww-start" '' + if [ ! -f "${lastWallpaper}" ]; then + echo "$(ls ${wallpapersFolder} | shuf -n 1)" > "${lastWallpaper}" + fi + ${cfg.package}/bin/swww-daemon & - ${lib.getExe cfg.package} img "${img}" --transition-type none + ${lib.getExe cfg.package} img "${wallpapersFolder}/$(cat ${lastWallpaper})" --transition-type none + ''; + }; + swapScript = mkOption { + type = types.package; + default = pkgs.writeScript "swww-swap" '' + file=$(ls ${wallpapersFolder} | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '\n' -i -p "select a wallpaper") + wallpaper="${wallpapersFolder}/$file" + + [ ! -f "$wallpaper" ] && exit 1 + + ${lib.getExe cfg.package} img "$wallpaper" --transition-type grow --transition-fps 60 --transition-pos 0.915,0.977 --transition-duration 1.5 + + echo "$file" > "${lastWallpaper}" ''; }; }; diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index b4ebce0..254bb00 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -66,6 +66,7 @@ in { "battery" "custom/weather" "privacy" + "custom/wallpaper" ]; }; "group/power" = { @@ -98,6 +99,12 @@ in { tooltip-format = "Power menu"; on-click = "${powerSelect}"; }; + "custom/wallpaper" = { + format = ""; + tooltip = true; + tooltip-format = "Change wallpaper"; + on-click = "${config.modules.desktop.swww.swapScript}"; + }; "hyprland/workspaces" = { format = "{icon}"; format-icons = { diff --git a/packages/apple-firmware/default.nix b/packages/apple-firmware/default.nix index 183855a..148b3f5 100644 --- a/packages/apple-firmware/default.nix +++ b/packages/apple-firmware/default.nix @@ -13,7 +13,7 @@ stdenvNoCC.mkDerivation { installPhase = '' mkdir -p "$out/lib/firmware/brcm" - cp -r lib/firmware/brcm/. "$out/lib/firmware/brcm/" + cp -r "$src/lib/firmware/brcm/." "$out/lib/firmware/brcm/" ''; meta = with lib; { diff --git a/packages/wallpapers/default.nix b/packages/wallpapers/default.nix new file mode 100644 index 0000000..bed0644 --- /dev/null +++ b/packages/wallpapers/default.nix @@ -0,0 +1,22 @@ +{ lib, stdenvNoCC }: + +stdenvNoCC.mkDerivation { + pname = "wallpapers"; + version = "unstable"; + + src = ./.; + + # later, add XML files to /usr(?)/share/backgrounds + # then, it is selectable from places like in gnome and also do the same for KDE + installPhase = '' + mkdir -p "$out/share/backgrounds" + cp -r "$src/img/." "$out/share/backgrounds/" + ''; + + meta = with lib; { + description = "Small collection of wallpapers"; + # idk what to put here: + # license = licenses.ofl; + platforms = platforms.all; + }; +} diff --git a/packages/wallpapers/img/fish_whisperer.jpg b/packages/wallpapers/img/fish_whisperer.jpg new file mode 100644 index 0000000..ac33b8d Binary files /dev/null and b/packages/wallpapers/img/fish_whisperer.jpg differ diff --git a/packages/wallpapers/img/os_catwalks.png b/packages/wallpapers/img/os_catwalks.png new file mode 100644 index 0000000..7f7903a Binary files /dev/null and b/packages/wallpapers/img/os_catwalks.png differ diff --git a/assets/wallpaper.png b/packages/wallpapers/img/os_factory.png similarity index 100% rename from assets/wallpaper.png rename to packages/wallpapers/img/os_factory.png diff --git a/packages/wallpapers/img/os_library_stroll.png b/packages/wallpapers/img/os_library_stroll.png new file mode 100644 index 0000000..1431614 Binary files /dev/null and b/packages/wallpapers/img/os_library_stroll.png differ diff --git a/packages/wallpapers/img/os_memory.png b/packages/wallpapers/img/os_memory.png new file mode 100644 index 0000000..e4d14b7 Binary files /dev/null and b/packages/wallpapers/img/os_memory.png differ diff --git a/packages/wallpapers/img/os_outpost.png b/packages/wallpapers/img/os_outpost.png new file mode 100644 index 0000000..c42735e Binary files /dev/null and b/packages/wallpapers/img/os_outpost.png differ diff --git a/packages/wallpapers/img/os_prophets.png b/packages/wallpapers/img/os_prophets.png new file mode 100644 index 0000000..60de391 Binary files /dev/null and b/packages/wallpapers/img/os_prophets.png differ diff --git a/packages/wallpapers/img/rw_drainage_system.png b/packages/wallpapers/img/rw_drainage_system.png new file mode 100644 index 0000000..620f631 Binary files /dev/null and b/packages/wallpapers/img/rw_drainage_system.png differ diff --git a/packages/wallpapers/img/rw_shoreline.jpg b/packages/wallpapers/img/rw_shoreline.jpg new file mode 100644 index 0000000..a95b9f5 Binary files /dev/null and b/packages/wallpapers/img/rw_shoreline.jpg differ