From ef797eb971986f4e82573d6393c25118d4217403 Mon Sep 17 00:00:00 2001 From: Tigor Hutasuhut Date: Thu, 17 Oct 2024 08:24:59 +0700 Subject: [PATCH] hyrpland: refactor into modules --- home/modules/hyprland/hyprland.nix | 11 +- .../modules/hyprland/scripts/gnome-keyring.sh | 6 - .../hyprland/scripts/init-wallpaper.sh | 26 --- home/modules/hyprland/wallust.nix | 189 ++++++++++-------- 4 files changed, 106 insertions(+), 126 deletions(-) delete mode 100644 home/modules/hyprland/scripts/gnome-keyring.sh delete mode 100644 home/modules/hyprland/scripts/init-wallpaper.sh diff --git a/home/modules/hyprland/hyprland.nix b/home/modules/hyprland/hyprland.nix index b69db7d..da7b5a0 100644 --- a/home/modules/hyprland/hyprland.nix +++ b/home/modules/hyprland/hyprland.nix @@ -6,11 +6,6 @@ let script = pkgs.writeScriptBin filename (builtins.readFile (./scripts/search-window.sh)); path = "${script}/bin/${filename}"; }; - init-wallpaper = rec { - filename = "init-wallpaper.sh"; - script = pkgs.writeScriptBin filename (builtins.readFile (./scripts/init-wallpaper.sh)); - path = "${script}/bin/${filename}"; - }; in { config = lib.mkIf cfg.enable { @@ -25,6 +20,9 @@ in enable = true; systemd.variables = [ "all" ]; settings = { + exec-once = lib.mkOrder 5 [ + ''${pkgs.dbus}/bin/dbus-update-activation-environment --all'' + ]; # window decors general = { gaps_in = 10; @@ -205,11 +203,8 @@ in ]; }; extraConfig = /*hyprlang*/ '' - exec-once=dbus-update-activation-environment --all exec-once=foot --server - exec-once=${init-wallpaper.path} ${./wallpaper.jpeg} - exec-once=wallust run ${config.home.homeDirectory}/.cache/wallpaper/current exec-once=swww-daemon exec-once=bash -c "sleep 10; hypridle" exec-once=waybar diff --git a/home/modules/hyprland/scripts/gnome-keyring.sh b/home/modules/hyprland/scripts/gnome-keyring.sh deleted file mode 100644 index 8f54616..0000000 --- a/home/modules/hyprland/scripts/gnome-keyring.sh +++ /dev/null @@ -1,6 +0,0 @@ -#/usr/bin/bash - -secret_file=$1 - -cat "$secret_file" | gnome-keyring-daemon --unlock -gnome-keyring-daemon --start --components=pkcs11,secrets,ssh diff --git a/home/modules/hyprland/scripts/init-wallpaper.sh b/home/modules/hyprland/scripts/init-wallpaper.sh deleted file mode 100644 index 635bb5d..0000000 --- a/home/modules/hyprland/scripts/init-wallpaper.sh +++ /dev/null @@ -1,26 +0,0 @@ -#/usr/bin/env bash - -# This shell script ensures there are wallpaper files in expected locations -# where hyprland ecosystem expected them to find. -# -# Requirements: -# - GraphicsMagick for the 'gm' command. - -if [ "$1" == "" ]; then - echo "Initial image path is required" - exit 1 -fi - -init_wallpaper="$1" -cache_file="$HOME/.cache/wallpaper/current" -blurred="$HOME/.cache/wallpaper/blurred.png" - -mkdir -p $HOME/.cache/wallpaper - -if [ ! -f "$cache_file" ]; then - cp "$init_wallpaper" "$cache_file" -fi - -if [ ! -f "$blurred" ]; then - gm convert -resize 75% -blur 50x30 "$cache_file" "$blurred" -fi diff --git a/home/modules/hyprland/wallust.nix b/home/modules/hyprland/wallust.nix index d49c4dc..c92ca1b 100644 --- a/home/modules/hyprland/wallust.nix +++ b/home/modules/hyprland/wallust.nix @@ -1,105 +1,122 @@ { pkgs, unstable, lib, config, ... }: let cfg = config.profile.hyprland; + inherit (lib.meta) getExe; wallust = cfg.wallust; + wallpaperDir = "${config.home.homeDirectory}/.cache/wallpaper"; + initWallPaperScript = pkgs.writeShellScriptBin "init-wallpaper.sh" '' + init_wallpaper="${./wallpaper.jpeg}" + cache_file="${wallpaperDir}/current" + blurred="${wallpaperDir}/blurred" + + mkdir -p "${wallpaperDir}" + + if [ ! -f "$cache_file" ]; then + cp "$init_wallpaper" "$cache_file" + fi + + if [ ! -f "$blurred" ]; then + ${pkgs.imagemagick}/bin/gm convert -resize 75% -blur 50x30 "$cache_file" "$blurred" + fi + + if [ ! -f "${config.home.homeDirectory}/.cache/wallust/sequences" ]; then + wallust run "$cache_file" + fi + ''; in { config = lib.mkIf cfg.enable { home.packages = [ pkgs.imagemagick - # unstable.wallust - (pkgs.callPackage ./wallust-build.nix { }) + unstable.wallust ]; - home. file.".config/wallust/templates" = { + wayland.windowManager.hyprland.settings.exec-once = lib.mkOrder 10 ([ + (getExe initWallPaperScript) + ]); + + home.file.".config/wallust/templates" = { source = ./wallust-templates; recursive = true; }; - home.file.".config/wallust/wallust.toml".source = - let - tomlFormat = pkgs.formats.toml { }; - in - tomlFormat.generate - "wallust.toml" + home.file.".config/wallust/wallust.toml".source = ((pkgs.formats.toml { }).generate "wallust.toml" { + # See https://codeberg.org/explosion-mental/wallust/src/branch/master/wallust.toml + # for more information about the configuration options. + + # How the image is parse, in order to get the colors: + # full - resized - wal - thumb - fastresize - kmeans + backend = wallust.backend; + + # What color space to use to produce and select the most prominent colors: + # lab - labmixed - lch - lchmixed + color_space = wallust.colorSpace; + threshold = wallust.threshold; + + # Use the most prominent colors in a way that makes sense, a scheme color palette: + # dark - dark16 - darkcomp - darkcomp16 + # light - light16 - lightcomp - lightcomp16 + # harddark - harddark16 - harddarkcomp - harddarkcomp16 + # softdark - softdark16 - softdarkcomp - softdarkcomp16 + # softlight - softlight16 - softlightcomp - softlightcomp16 + palette = wallust.palette; + + # Ensures a "readable contrast" (OPTIONAL, disabled by default) + # Should only be enabled when you notice an unreadable contrast frequently happening + # with your images. The reference color for the contrast is the background color. + check_contrast = wallust.checkContrast; + + # Color saturation, between [1% and 100%] (OPTIONAL, disabled by default) + # usually something higher than 50 increases the saturation and below + # decreases it (on a scheme with strong and vivid colors) + # saturation = 50; + + # Alpha value for templating, by default 100 (no other use whatsoever) + alpha = wallust.alpha; + + templates = + # Templates requires certain syntax + # + # See: https://codeberg.org/explosion-mental/wallust/wiki/wallust.1-Man-Page + # Note that the documentation is for 3.x and above. + let + out = config.home.homeDirectory + "/.cache/wallust"; + in { - # See https://codeberg.org/explosion-mental/wallust/src/branch/master/wallust.toml - # for more information about the configuration options. - - # How the image is parse, in order to get the colors: - # full - resized - wal - thumb - fastresize - kmeans - backend = wallust.backend; - - # What color space to use to produce and select the most prominent colors: - # lab - labmixed - lch - lchmixed - color_space = wallust.colorSpace; - threshold = wallust.threshold; - - # Use the most prominent colors in a way that makes sense, a scheme color palette: - # dark - dark16 - darkcomp - darkcomp16 - # light - light16 - lightcomp - lightcomp16 - # harddark - harddark16 - harddarkcomp - harddarkcomp16 - # softdark - softdark16 - softdarkcomp - softdarkcomp16 - # softlight - softlight16 - softlightcomp - softlightcomp16 - palette = wallust.palette; - - # Ensures a "readable contrast" (OPTIONAL, disabled by default) - # Should only be enabled when you notice an unreadable contrast frequently happening - # with your images. The reference color for the contrast is the background color. - check_contrast = wallust.checkContrast; - - # Color saturation, between [1% and 100%] (OPTIONAL, disabled by default) - # usually something higher than 50 increases the saturation and below - # decreases it (on a scheme with strong and vivid colors) - # saturation = 50; - - # Alpha value for templating, by default 100 (no other use whatsoever) - alpha = wallust.alpha; - - templates = - # Templates requires certain syntax - # - # See: https://codeberg.org/explosion-mental/wallust/wiki/wallust.1-Man-Page - # Note that the documentation is for 3.x and above. - let - out = config.home.homeDirectory + "/.cache/wallust"; - in - { - waybar = { - template = "waybar.css"; - # target = out + "/waybar.css"; - target = "${config.home.homeDirectory}/.config/waybar/style.css"; - }; - wlogout = { - template = "wlogout.css"; - target = out + "/wlogout.css"; - }; - hyprland = { - template = "hyprland.conf"; - target = out + "/hyprland.conf"; - }; - kitty = { - template = "kitty.conf"; - target = "${config.home.homeDirectory}/.config/kitty/kitty.d/99-colors.conf"; - }; - base16-nvim = { - template = "base16-nvim.lua"; - target = out + "/base16-nvim.lua"; - }; - rofi = { - template = "rofi.rasi"; - target = out + "/rofi.rasi"; - }; - alacritty = { - template = "alacritty.toml"; - target = out + "/alacritty.toml"; - }; - foot = { - template = "foot.ini"; - target = "${config.home.homeDirectory}/.config/foot/colors.ini"; - }; - }; + waybar = { + template = "waybar.css"; + # target = out + "/waybar.css"; + target = "${config.home.homeDirectory}/.config/waybar/style.css"; + }; + wlogout = { + template = "wlogout.css"; + target = out + "/wlogout.css"; + }; + hyprland = { + template = "hyprland.conf"; + target = out + "/hyprland.conf"; + }; + kitty = { + template = "kitty.conf"; + target = "${config.home.homeDirectory}/.config/kitty/kitty.d/99-colors.conf"; + }; + base16-nvim = { + template = "base16-nvim.lua"; + target = out + "/base16-nvim.lua"; + }; + rofi = { + template = "rofi.rasi"; + target = out + "/rofi.rasi"; + }; + alacritty = { + template = "alacritty.toml"; + target = out + "/alacritty.toml"; + }; + foot = { + template = "foot.ini"; + target = "${config.home.homeDirectory}/.config/foot/colors.ini"; + }; }; + }); }; - }