{ pkgs, lib, cap-volume ? true, unmute ? true, ... }: let keysetting = pkgs.writeShellScriptBin "keysetting" '' wpctl=${pkgs.wireplumber}/bin/wpctl notify_send=${pkgs.libnotify}/bin/notify-send brightnessctl=${pkgs.brightnessctl}/bin/brightnessctl cut=${pkgs.coreutils}/bin/cut grep=${pkgs.gnugrep}/bin/grep tr=${pkgs.coreutils}/bin/tr bc=${pkgs.bc}/bin/bc cap_volume=${pkgs.coreutils}/bin/${lib.boolToString cap-volume} unmute=${pkgs.coreutils}/bin/${lib.boolToString unmute} notify-send () { $notify_send -h string:x-canonical-private-synchronous:keysetting "$@" } getvol () { echo "$(wpctl get-volume @DEFAULT_SINK@ | $tr -dc '[:digit:].')*100/1" | $bc } notifyvol () { message="Volume: $(getvol)%" if $wpctl get-volume @DEFAULT_SINK@ | $grep MUTED > /dev/null ; then message="$message [MUTED]" fi notify-send "$message" } setvol () { $wpctl set-volume @DEFAULT_SINK@ "$1" notifyvol } volup () { if $unmute ; then $wpctl set-mute @DEFAULT_SINK@ 0 fi if $cap_volume && [[ $(( $(getvol) + 5 )) -gt 100 ]] ; then setvol 1 return fi setvol 5%+ # notifyvol } voldown () { if $unmute ; then $wpctl set-mute @DEFAULT_SINK@ 0 fi setvol 5%- # notifyvol } notifybright () { notify-send "Brightness: $(($($brightnessctl g)*100/$($brightnessctl m)))%" } setbright () { $brightnessctl s "$1" notifybright } case "$1" in volumeup) volup ;; volumedown) voldown ;; mute) $wpctl set-mute @DEFAULT_SINK@ toggle; notifyvol;; monup) setbright 5%+;; mondown) setbright 5%-;; esac ''; in pkgs.symlinkJoin { name = "wm-helpers"; paths = keysetting; }