{ config, pkgs, ... }: let modifier = config.windowManager.modifierKey; terminal = config.programs.terminal; termcmd = "${terminal}/bin/${terminal.pname}"; my-deps = { notify-send = "${pkgs.libnotify}/bin/notify-send"; playerctl = "${pkgs.playerctl}/bin/playerctl"; grim = "${pkgs.grim}/bin/grim"; slurp = "${pkgs.slurp}/bin/slurp"; amixer = "${pkgs.alsa-utils}/bin/amixer"; swaybg = "${pkgs.swaybg}/bin/swaybg"; chafa = "${pkgs.chafa}/bin/chafa"; exiftool = "${pkgs.exiftool}/bin/exiftool"; wc = "${pkgs.coreutils}/bin/wc"; jq = "${pkgs.jq}/bin/jq"; hyprctl = "${pkgs.hyprland}/bin/hyprctl"; xargs = "${pkgs.findutils}/bin/xargs"; menu = "${config.programs.menu.package}${config.programs.menu.dmenuCommand}"; runmenu = "${config.programs.menu.package}/bin/wofi --show drun"; fileman = "${pkgs.pcmanfm}/bin/pcmanfm"; gawk = "${pkgs.gawk}/bin/awk"; hyprpicker = "${pkgs.hyprpicker}/bin/hyprpicker"; sed = "${pkgs.gnused}/bin/sed"; }; in { programs.scripts = [ { name = "play-pause"; text = '' if [ "$(${my-deps.playerctl} --list-all | ${my-deps.wc} -l)" -lt 2 ] then ${my-deps.playerctl} play-pause else ${my-deps.playerctl} --list-all | \ ${my-deps.xargs} -I _ ${my-deps.playerctl} --player _ metadata --format '_ - {{title}}' | \ ${my-deps.menu} | ${my-deps.gawk} '{print $1}' | \ ${my-deps.xargs} -I _ ${my-deps.playerctl} --player _ play-pause fi ''; hotkeys = [ { modifier = ""; key = "XF86AudioPlay"; } ]; } { name = "bwmenu"; text = '' items="$(rbw list)" echo "$items" | ${my-deps.menu} | xargs -I_ rbw get _ | wl-copy ''; hotkeys = [{key = "P";}]; install = false; } { name = "bwotpmenu"; text = '' items="$(rbw list)" echo "$items" | ${my-deps.menu} | xargs -I_ rbw code _ | wl-copy ''; hotkeys = [ { modifier = "${modifier}_SHIFT"; key = "P"; } ]; install = false; } { name = "screenshot"; text = '' OUT_DIR=~/Pictures/Screenshots mkdir -p "$OUT_DIR" FILE=$OUT_DIR/$(date +"%Y-%m-%dT%H:%M:%SZ").png ${my-deps.grim} -g "$(${my-deps.slurp} -o)" "$FILE" ${my-deps.notify-send} "Screenshot Taken" "$FILE" cat "$FILE" | wl-copy -t image/png ''; hotkeys = [ { modifier = "${modifier}_SHIFT"; key = "S"; } ]; } { name = "brightness-down"; text = '' light -U $1 ${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-down -t 1000 ''; hotkeys = [ { modifier = ""; key = "XF86MonBrightnessDown"; args = "10"; } { modifier = "SHIFT"; key = "XF86MonBrightnessDown"; args = "1"; } ]; install = false; } { name = "brightness-up"; text = '' light -A $1 ${my-deps.notify-send} "Brightness" -h int:value:$(light) -a brightness-up -t 1000 ''; hotkeys = [ { modifier = ""; key = "XF86MonBrightnessUp"; args = "10"; } { modifier = "SHIFT"; key = "XF86MonBrightnessUp"; args = "1"; } ]; install = false; } { name = "picker"; text = '' ${my-deps.hyprpicker} | wl-copy && notify-send "Copied Colour" "$(wl-paste)" ''; hotkeys = [ { key = "G"; } ]; } { name = "menu"; text = '' ${my-deps.runmenu} ''; hotkeys = [ { key = "D"; } ]; install = false; } { name = "zoom-in"; text = '' hyprctl keyword misc:cursor_zoom_factor 2 ''; hotkeys = [ { modifier = "${modifier}"; key = "EQUAL"; } ]; install = false; } { name = "zoom-out"; text = '' hyprctl keyword misc:cursor_zoom_factor 1 ''; hotkeys = [ { modifier = "${modifier}"; key = "MINUS"; } ]; install = false; } { name = "raise-volume"; text = '' ${my-deps.amixer} sset Master 5%+ && ${my-deps.amixer} sset Master unmute ''; hotkeys = [ {key = "bracketright";} { modifier = ""; key = "XF86AudioRaiseVolume"; } ]; install = false; } { name = "lower-volume"; text = '' ${my-deps.amixer} sset Master 5%- ''; hotkeys = [ {key = "bracketleft";} { modifier = ""; key = "XF86AudioLowerVolume"; } ]; install = false; } { name = "skip-track"; text = '' ${my-deps.playerctl} next ''; hotkeys = [ { modifier = "${modifier}_SHIFT"; key = "period"; } { modifier = ""; key = "XF86AudioNext"; } ]; install = false; } { name = "skip-track-back"; text = '' ${my-deps.playerctl} previous ''; hotkeys = [ { modifier = "${modifier}_SHIFT"; key = "comma"; } { modifier = ""; key = "XF86AudioPrev"; } ]; install = false; } { name = "terminal"; text = termcmd; hotkeys = [ {key = "RETURN";} ]; install = false; } { name = "fileman"; text = my-deps.fileman; hotkeys = [ {key = "O";} ]; install = false; } { name = "lock"; text = '' res=$(echo "lock sleep hibernate" | ${my-deps.menu}) case $res in lock) swaylock;; sleep) systemctl suspend;; hibernate) systemctl hibernate;; esac ''; hotkeys = [ {key = "Z";} ]; install = false; } { name = "clone-copied-repo"; text = '' url=$(wl-paste) ${my-deps.notify-send} "Cloning $url" ${termcmd} -e -- git clone "$url" ${my-deps.notify-send} "Finished cloning $url" ''; install = true; hotkeys = [ { key = "C"; modifier = "${modifier}_SHIFT"; } ]; } { name = "select-emoji"; text = '' cat ${../../lib/emotes.txt} | ${my-deps.menu} | awk '{print $1}' | wl-copy ''; install = true; hotkeys = [ { key = "E"; modifier = "${modifier}_SHIFT"; } ]; } ]; }