nixos/home/scripts/tofi/default.nix
2024-06-24 11:05:38 +02:00

63 lines
1.6 KiB
Nix

{ pkgs, config, ... }:
let
tofi = pkgs.writeShellScriptBin "tofi" ''
hyprexec="hyprctl dispatch exec"
function exec() {
$@
}
function ui(){
DEFAULT_ICON="󰘳"
# "icon;name;command"[]
apps=(
";Nixy;nixy"
";Nerdfont FZF;nerdfont-fzf"
";Brightness Up;brightness-up"
";Brightness Down;brightness-down"
";Sound Up;sound-up"
";Sound Down;sound-down"
";Sound Toggle Mute;sound-toggle"
";Sound Change Output;sound-output"
";Caffeine;caffeine"
";Night Shift Toggle;night-shift-toggle"
";Firefox;$hyprexec firefox"
";Qutebrowser;$hyprexec qutebrowser"
";Kitty;$hyprexec kitty"
";Thunar;$hyprexec thunar"
";Powermenu;powermenu"
";Wofi;menu"
";Lock;lock"
";Bitwarden;$hyprexec bitwarden"
";Clock; peaclock"
";Nextcloud;$hyprexec nextcloud"
";Spotify;$hyprexec spotify"
";Btop;btop"
";Cava;cava"
";Discord;$hyprexec discord"
";Vlc;$hyprexec vlc"
";Obsidian;$hyprexec obsidian"
)
# Apply default icons if empty:
for i in "''${!apps[@]}"; do
apps[i]=$(echo "''${apps[i]}" | sed 's/^;/'$DEFAULT_ICON';/')
done
fzf_result=$(printf "%s\n" "''${apps[@]}" | awk -F ';' '{print $1" "$2}' | fzf)
[[ -z $fzf_result ]] && exit 0
fzf_result=''${fzf_result/ /;}
line=$(printf "%s\n" "''${apps[@]}" | grep "$fzf_result")
command=$(echo "$line" | sed 's/^[^;]*;//;s/^[^;]*;//')
exec "$command"
exit 0
}
ui
'';
in { home.packages = [ tofi ]; }