feat(wallpaper): add better wallpaper module
This commit is contained in:
parent
326b14d39a
commit
3e9468d872
8 changed files with 99 additions and 23 deletions
|
@ -9,7 +9,6 @@ let
|
||||||
cfg = config.my.bin;
|
cfg = config.my.bin;
|
||||||
cycleSinks = import ./cycleSinks.nix { inherit pkgs; };
|
cycleSinks = import ./cycleSinks.nix { inherit pkgs; };
|
||||||
protonge = import ./protonge.nix { inherit pkgs; };
|
protonge = import ./protonge.nix { inherit pkgs; };
|
||||||
randomWallpaper = import ./randomWallpaper.nix { inherit pkgs; };
|
|
||||||
share = import ./share.nix { inherit pkgs; };
|
share = import ./share.nix { inherit pkgs; };
|
||||||
sxhkdHelp = import ./sxhkdHelp.nix { inherit pkgs; };
|
sxhkdHelp = import ./sxhkdHelp.nix { inherit pkgs; };
|
||||||
in
|
in
|
||||||
|
@ -17,10 +16,9 @@ in
|
||||||
options.my.bin.enable = mkEnableOption "bin";
|
options.my.bin.enable = mkEnableOption "bin";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = [
|
||||||
cycleSinks
|
cycleSinks
|
||||||
protonge
|
protonge
|
||||||
randomWallpaper
|
|
||||||
share
|
share
|
||||||
sxhkdHelp
|
sxhkdHelp
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
{ pkgs }:
|
|
||||||
pkgs.writeShellApplication {
|
|
||||||
name = "randomWallpaper";
|
|
||||||
|
|
||||||
runtimeInputs = with pkgs; [ findutils coreutils feh hyprland jq ];
|
|
||||||
|
|
||||||
text = ''
|
|
||||||
wallpaper="$(find ~/.config/wallpapers/ -type f,l | shuf -n 1)"
|
|
||||||
if [ -z ''${WAYLAND_DISPLAY+x} ]; then
|
|
||||||
feh --bg-fill "$wallpaper"
|
|
||||||
else
|
|
||||||
hyprctl hyprpaper preload "$wallpaper"
|
|
||||||
hyprctl monitors -j | jq '.[].name' | xargs -I{} hyprctl hyprpaper wallpaper '{}',"$wallpaper"
|
|
||||||
hyprctl hyprpaper unload all
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -29,6 +29,7 @@ with lib; {
|
||||||
spotify.enable = mkDefault true;
|
spotify.enable = mkDefault true;
|
||||||
ssh.enable = mkDefault true;
|
ssh.enable = mkDefault true;
|
||||||
thunar.enable = mkDefault true;
|
thunar.enable = mkDefault true;
|
||||||
|
wallpaper.enable = mkDefault true;
|
||||||
zathura.enable = mkDefault true;
|
zathura.enable = mkDefault true;
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
|
|
|
@ -45,7 +45,7 @@ in
|
||||||
focus_follows_pointer = true;
|
focus_follows_pointer = true;
|
||||||
};
|
};
|
||||||
startupPrograms = [
|
startupPrograms = [
|
||||||
"randomWallpaper"
|
"wallpaper -r"
|
||||||
];
|
];
|
||||||
extraConfig = builtins.readFile ./bspwmrc;
|
extraConfig = builtins.readFile ./bspwmrc;
|
||||||
};
|
};
|
||||||
|
|
|
@ -224,5 +224,5 @@ in
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
exec-once=randomWallpaper
|
exec-once=wallpaper -r
|
||||||
''
|
''
|
||||||
|
|
|
@ -71,7 +71,7 @@ in
|
||||||
command = "systemctl --user restart waybar";
|
command = "systemctl --user restart waybar";
|
||||||
always = true;
|
always = true;
|
||||||
}
|
}
|
||||||
{ command = "randomWallpaper"; }
|
{ command = "wallpaper -r"; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
24
modules/programs/wallpaper/default.nix
Normal file
24
modules/programs/wallpaper/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.my.programs.wallpaper;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.programs.wallpaper.enable = mkEnableOption "wallpaper";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages =
|
||||||
|
let
|
||||||
|
wallpaper = pkgs.writeShellApplication {
|
||||||
|
name = "wallpaper";
|
||||||
|
runtimeInputs = with pkgs; [ findutils coreutils feh hyprland jq fzf viu ];
|
||||||
|
text = builtins.readFile ./wallpaper.sh;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
[
|
||||||
|
wallpaper
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
70
modules/programs/wallpaper/wallpaper.sh
Normal file
70
modules/programs/wallpaper/wallpaper.sh
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
WALLPAPERS_PATH="$HOME/.config/wallpapers"
|
||||||
|
WALLPAPERS=$(find "$WALLPAPERS_PATH" -type f,l)
|
||||||
|
|
||||||
|
function help() {
|
||||||
|
echo "Usage: wallpaper [OPTIONS]"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h, --help Show this help message and exit"
|
||||||
|
echo " -r, --random Set a random wallpaper"
|
||||||
|
echo " -s, --set <PATH> Set a wallpaper"
|
||||||
|
}
|
||||||
|
|
||||||
|
function randomWallpaper() {
|
||||||
|
find ~/.config/wallpapers/ -type f,l | shuf -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function setWallpaper() {
|
||||||
|
case "$DESKTOP_SESSION" in
|
||||||
|
hyprland)
|
||||||
|
hyprctl hyprpaper preload "$1" &>/dev/null
|
||||||
|
hyprctl monitors -j | jq '.[].name' | xargs -I{} -P 0 hyprctl hyprpaper wallpaper '{}',"$1" &>/dev/null
|
||||||
|
hyprctl hyprpaper unload all &>/dev/null
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
feh --bg-fill "$1" &>/dev/null
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse arguments
|
||||||
|
# https://stackoverflow.com/a/14203146
|
||||||
|
POSITIONAL=()
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
key="$1"
|
||||||
|
|
||||||
|
case $key in
|
||||||
|
-h | --help)
|
||||||
|
help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-r | --random)
|
||||||
|
WALLPAPER=$(randomWallpaper)
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
-s | --set)
|
||||||
|
WALLPAPER="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
POSITIONAL+=("$1") # save it in an array for later
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
set -- "${POSITIONAL[@]}" # restore positional arguments
|
||||||
|
|
||||||
|
if [[ -z ${WALLPAPER+x} ]]; then
|
||||||
|
WALLPAPER=$(echo "$WALLPAPERS" | fzf --preview="viu -sb -h 30 {}" --preview-window=right:70%:wrap)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "$WALLPAPER" ]]; then
|
||||||
|
echo "File not found: $WALLPAPER"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
setWallpaper "$WALLPAPER"
|
Loading…
Reference in a new issue