{ pkgs, config, lib, ... }: let cfg = config.xyno.desktop.wpaperd; # wpaperdConf = pkgs.writeText "wpaperd.conf" '' # [default] # path = "/home/${config.xyno.system.user.name}/Pictures/backgrounds" # duration = "10m" # sorting = "random" # mode = "center" # ''; in { options.xyno.desktop.wpaperd.enable = lib.mkEnableOption "enable wpaperd wallpaper daemon"; options.xyno.desktop.wpaperd.wantedBy = lib.mkOption { type = lib.types.str; default = "niri.service"; }; options.xyno.desktop.wpaperd.package = lib.mkOption { type = lib.types.package; default = pkgs.swww; }; config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ]; xyno.desktop.niri.extraConfig = '' // Put swww inside the overview backdrop. layer-rule { match namespace="^swww.*$" place-within-backdrop true } ''; systemd.user.services.swww-daemon = { unitConfig.PartOf = "graphical-session.target"; unitConfig.After = "graphical-session.target"; unitConfig.Requisite = "graphical-session.target"; serviceConfig.Restart = "on-failure"; wantedBy = [ cfg.wantedBy ]; script = '' exec ${cfg.package}/bin/swww-daemon''; }; systemd.user.services.swww-randomize = { unitConfig.PartOf = "graphical-session.target"; unitConfig.After = "graphical-session.target"; unitConfig.Requisite = "graphical-session.target"; serviceConfig.Restart = "on-failure"; wantedBy = [ "swww-daemon.service" ]; script = '' set -eox export DEFAULT_INTERVAL=300 # In seconds export DIR=''$HOME/Pictures/backgrounds # See swww-img(1) RESIZE_TYPE="crop" export SWWW_TRANSITION_FPS="120" export SWWW_TRANSITION="fade" export SWWW_TRANSITION_DURATION="1" # export SWWW_TRANSITION_STEP="90" while true; do find "''$DIR" -type f \ | while read -r img; do echo "''$(