replace swww with wpaperd
This commit is contained in:
parent
ac78efc76b
commit
1aaf49e651
9 changed files with 37 additions and 120 deletions
|
@ -2,7 +2,6 @@ pkgs: {
|
||||||
dracula-gtk = pkgs.callPackage ./dracula-gtk { };
|
dracula-gtk = pkgs.callPackage ./dracula-gtk { };
|
||||||
misc-scripts = pkgs.callPackage ./scripts/misc { };
|
misc-scripts = pkgs.callPackage ./scripts/misc { };
|
||||||
getpaper = pkgs.callPackage ./scripts/getpaper { };
|
getpaper = pkgs.callPackage ./scripts/getpaper { };
|
||||||
setpaper = pkgs.callPackage ./scripts/setpaper { };
|
|
||||||
youtube = pkgs.callPackage ./scripts/youtube { };
|
youtube = pkgs.callPackage ./scripts/youtube { };
|
||||||
rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { };
|
rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { };
|
||||||
smc-manjari = pkgs.callPackage ./smc-manjari { };
|
smc-manjari = pkgs.callPackage ./smc-manjari { };
|
||||||
|
|
|
@ -14,12 +14,12 @@ CURL_BASE_CMD="curl --silent ${API_KEY_HEADER}"
|
||||||
CONFIG_DIR="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
CONFIG_DIR="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
||||||
CONFIG_FILE="${CONFIG_DIR}/wallpaper_config.json"
|
CONFIG_FILE="${CONFIG_DIR}/wallpaper_config.json"
|
||||||
if [ ! -e "${CONFIG_FILE}" ]; then
|
if [ ! -e "${CONFIG_FILE}" ]; then
|
||||||
echo '{"tags":null,"categories":"100","purity":"100", "sorting":"random", "size":null, "ratios":null, "colors":null, "ai_filter":1, "range": "1M", "dir":"~/Pictures/Wallpapers"}' | jq > "${CONFIG_FILE}"
|
echo '{"tags":null,"categories":"100","purity":"100", "sorting":"random", "size":null, "ratios":null, "colors":null, "ai_filter":1, "range": "1M"}' | jq > "${CONFIG_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
CONFIG="$(cat "${CONFIG_FILE}")"
|
CONFIG="$(cat "${CONFIG_FILE}")"
|
||||||
|
|
||||||
DIR="$(echo "${CONFIG}" | jq -r '.dir // empty')"
|
DIR="$1"
|
||||||
if [ -z "${DIR}" ]; then
|
if [ -z "${DIR}" ]; then
|
||||||
DIR="${XDG_PICTURES_DIR:-${HOME}/Pictures}/Wallpapers"
|
DIR="${XDG_PICTURES_DIR:-${HOME}/Pictures}/Wallpapers"
|
||||||
echo "Warning: wallpaper directory not set. using fallback directory ${DIR}" >&2
|
echo "Warning: wallpaper directory not set. using fallback directory ${DIR}" >&2
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
{ lib
|
|
||||||
, stdenvNoCC
|
|
||||||
, makeWrapper
|
|
||||||
, envsubst
|
|
||||||
, jq
|
|
||||||
, swww
|
|
||||||
,
|
|
||||||
}:
|
|
||||||
stdenvNoCC.mkDerivation {
|
|
||||||
pname = "setpaper";
|
|
||||||
version = "0.1";
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
|
|
||||||
mkdir -p $out/bin
|
|
||||||
cp setpaper.sh $out/bin/setpaper
|
|
||||||
chmod +x $out/bin/setpaper
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
wrapProgram $out/bin/setpaper --prefix PATH : ${lib.makeBinPath [envsubst jq swww]}
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
CONFIG_DIR="${XDG_CONFIG_HOME:-${HOME}/.config}"
|
|
||||||
CONFIG_FILE="${CONFIG_DIR}/wallpaper_config.json"
|
|
||||||
if [ ! -e "${CONFIG_FILE}" ]; then
|
|
||||||
echo "Wallpaper config file: ${CONFIG_FILE} missing." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
CONFIG="$(cat "${CONFIG_FILE}")"
|
|
||||||
|
|
||||||
DIR="$(echo "${CONFIG}" | jq -r '.dir // empty')"
|
|
||||||
if [ -z "${DIR}" ]; then
|
|
||||||
DIR="${XDG_PICTURES_DIR:-${HOME}/Pictures}/Wallpapers"
|
|
||||||
echo "Warning: wallpaper directory not set. using fallback directory ${DIR}" >&2
|
|
||||||
fi
|
|
||||||
DIR="$(echo "${DIR}" | envsubst)"
|
|
||||||
mkdir -p "${DIR}"
|
|
||||||
|
|
||||||
random_paper() {
|
|
||||||
if [ -d "$DIR" ] ; then
|
|
||||||
find -L "${DIR}"/ -type f -regextype egrep -regex ".*\.(jpe?g|png)$" | shuf -n1 --random-source=/dev/urandom
|
|
||||||
else
|
|
||||||
echo "${DIR} is not a directory" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
swww img \
|
|
||||||
--transition-type random \
|
|
||||||
--transition-step 2 \
|
|
||||||
--transition-duration 2 \
|
|
||||||
--transition-bezier "0.1,0.1,1.0,1.0" \
|
|
||||||
"$(random_paper)"
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
./hyprlock.nix
|
./hyprlock.nix
|
||||||
./hypridle.nix
|
./hypridle.nix
|
||||||
./kanshi.nix
|
./kanshi.nix
|
||||||
./swww.nix
|
./wpaperd.nix
|
||||||
./wallpaper.nix
|
./wallpaper.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
systemd.user.services.swww-daemon = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Solution for Wayland Wallpaper Woes";
|
|
||||||
Documentation = "https://github.com/LGFae/swww";
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
After = [ "graphical-session-pre.target" ];
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.swww}/bin/swww-daemon --no-cache";
|
|
||||||
Restart = "on-failure";
|
|
||||||
KillMode = "mixed";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,6 +1,5 @@
|
||||||
{ extra-packages, ... }:
|
{ config, extra-packages, ... }:
|
||||||
let
|
let
|
||||||
change-wallpaper = "${extra-packages.setpaper}/bin/setpaper";
|
|
||||||
wallpaper-downloader = "${extra-packages.getpaper}/bin/getpaper";
|
wallpaper-downloader = "${extra-packages.getpaper}/bin/getpaper";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
@ -15,23 +14,8 @@ in
|
||||||
};
|
};
|
||||||
Service = {
|
Service = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${wallpaper-downloader}";
|
Restart = "on-failure";
|
||||||
};
|
ExecStart = ''${wallpaper-downloader} "${config.xdg.userDirs.pictures}/Wallpapers"'';
|
||||||
|
|
||||||
};
|
|
||||||
setpaper = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Change Wallpaper";
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
After = [ "graphical-session-pre.target" ];
|
|
||||||
Wants = "swww-daemon.service";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${change-wallpaper}";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -48,18 +32,6 @@ in
|
||||||
Persistent = true;
|
Persistent = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
setpaper = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Change Wallpaper";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = [ "default.target" ];
|
|
||||||
};
|
|
||||||
Timer = {
|
|
||||||
OnStartupSec = "10min";
|
|
||||||
OnUnitActiveSec = "10min";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
29
home/wm/addon/wpaperd.nix
Normal file
29
home/wm/addon/wpaperd.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{ config, pkgs, ... }: {
|
||||||
|
programs.wpaperd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default = {
|
||||||
|
duration = "10m";
|
||||||
|
mode = "stretch";
|
||||||
|
sorting = "random";
|
||||||
|
path = "${config.xdg.userDirs.pictures}/Wallpapers";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.user.services.wpaperd = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Modern wallpaper daemon for Wayland";
|
||||||
|
Documentation = "https://github.com/danyspin97/wpaperd";
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
After = [ "graphical-session-pre.target" ];
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${pkgs.wpaperd}/bin/wpaperd";
|
||||||
|
Restart = "on-failure";
|
||||||
|
KillMode = "mixed";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ let
|
||||||
rofi = "${config.programs.rofi.package}/bin/rofi";
|
rofi = "${config.programs.rofi.package}/bin/rofi";
|
||||||
swaync-client = "${pkgs.swaynotificationcenter}/bin/swaync-client";
|
swaync-client = "${pkgs.swaynotificationcenter}/bin/swaync-client";
|
||||||
tmux = "${config.programs.tmux.package}/bin/tmux";
|
tmux = "${config.programs.tmux.package}/bin/tmux";
|
||||||
|
wpaperctl = "${config.programs.wpaperd.package}/bin/wpaperctl";
|
||||||
wpctl = "${pkgs.wireplumber}/bin/wpctl";
|
wpctl = "${pkgs.wireplumber}/bin/wpctl";
|
||||||
yazi = "${pkgs.yazi}/bin/yazi";
|
yazi = "${pkgs.yazi}/bin/yazi";
|
||||||
|
|
||||||
|
@ -177,7 +178,7 @@ in
|
||||||
"SUPER_SHIFT,b, exec, ${extra-packages.rofi-bluetooth}/bin/rofi-bluetooth"
|
"SUPER_SHIFT,b, exec, ${extra-packages.rofi-bluetooth}/bin/rofi-bluetooth"
|
||||||
|
|
||||||
"SUPER,escape, exec, ${loginctl} lock-session"
|
"SUPER,escape, exec, ${loginctl} lock-session"
|
||||||
"SUPER_SHIFT,W, exec, systemctl --user start setpaper.service"
|
"SUPER_SHIFT,W, exec, ${wpaperctl} next"
|
||||||
|
|
||||||
"SUPER,1, workspace, 1"
|
"SUPER,1, workspace, 1"
|
||||||
"SUPER,2, workspace, 2"
|
"SUPER,2, workspace, 2"
|
||||||
|
|
Loading…
Reference in a new issue