feat: hyprpaper separate config with auto wallpaper
This commit is contained in:
parent
1d5f428cb1
commit
7b929c0b02
@ -12,6 +12,7 @@ in {
|
|||||||
./swaync.nix
|
./swaync.nix
|
||||||
./waybar.nix
|
./waybar.nix
|
||||||
./wlsunset.nix
|
./wlsunset.nix
|
||||||
|
./hyprpaper.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options.home.desktop.hyprland = {
|
options.home.desktop.hyprland = {
|
||||||
@ -33,6 +34,7 @@ in {
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.desktop = {
|
home.desktop = {
|
||||||
|
hyprpaper.enable = true;
|
||||||
rofi.enable = mkDefault true;
|
rofi.enable = mkDefault true;
|
||||||
swaync.enable = mkDefault true;
|
swaync.enable = mkDefault true;
|
||||||
waybar = {
|
waybar = {
|
||||||
@ -41,6 +43,7 @@ in {
|
|||||||
};
|
};
|
||||||
wlsunset.enable = mkDefault true;
|
wlsunset.enable = mkDefault true;
|
||||||
};
|
};
|
||||||
|
services.blueman-applet.enable = true;
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
@ -274,19 +277,5 @@ in {
|
|||||||
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
|
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
services = {
|
|
||||||
blueman-applet.enable = true;
|
|
||||||
hyprpaper = let
|
|
||||||
img = "/home/phundrak/Pictures/Wallpapers/nord/Nordic6.jpg";
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
ipc = "on";
|
|
||||||
splash = false;
|
|
||||||
preload = img;
|
|
||||||
wallpaper = ", ${img}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
87
users/modules/desktop/hyprpaper.nix
Normal file
87
users/modules/desktop/hyprpaper.nix
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.home.desktop.hyprpaper;
|
||||||
|
in {
|
||||||
|
options.home.desktop.hyprpaper = {
|
||||||
|
enable = mkEnableOption "Enables Hyprpaper";
|
||||||
|
default = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/home/phundrak/Pictures/Wallpapers/nord/Nordic6.jpg";
|
||||||
|
example = "/home/user/image.jpg";
|
||||||
|
};
|
||||||
|
wallpapers-dir = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/home/phundrak/Pictures/Wallpapers/nord/";
|
||||||
|
example = "/home/user/Pictures/";
|
||||||
|
};
|
||||||
|
rotation-interval = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "5m";
|
||||||
|
example = "10m";
|
||||||
|
description = "Interval between wallpaper rotations";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.hyprpaper = {
|
||||||
|
inherit (cfg) enable;
|
||||||
|
settings = {
|
||||||
|
ipc = "on";
|
||||||
|
splash = false;
|
||||||
|
preload = cfg.default;
|
||||||
|
wallpaper = ", ${cfg.default}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.user = {
|
||||||
|
services.hyprpaper-rotation = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Rotate Hyprpaper wallpaper";
|
||||||
|
After = "graphical-session.target";
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecCondition = "pidof Hyprland";
|
||||||
|
ExecStart = "${config.home.homeDirectory}/.config/hypr/hyprpaper-rotate.sh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
timers.hyprpaper-rotation = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Timer for rotating Hyprpaper wallpaper";
|
||||||
|
};
|
||||||
|
Timer = {
|
||||||
|
OnBootSec = cfg.rotation-interval;
|
||||||
|
OnUnitActiveSec = cfg.rotation-interval;
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["timers.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.file.".config/hypr/hyprpaper-rotate.sh" = {
|
||||||
|
text = ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
WALLPAPER_DIR="${cfg.wallpapers-dir}"
|
||||||
|
|
||||||
|
# Find a random wallpaper
|
||||||
|
WP=$(find "$WALLPAPER_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) | shuf -n 1)
|
||||||
|
|
||||||
|
if [ -z "$WP" ]; then
|
||||||
|
echo "No wallpapers found in $WALLPAPER_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Setting wallpaper to: $WP"
|
||||||
|
|
||||||
|
# Load and set the wallpaper
|
||||||
|
hyprctl hyprpaper preload "$WP" && hyprctl hyprpaper wallpaper ",$WP"
|
||||||
|
'';
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user