All scripts have been moved to the overlay folder in the top level directory Overlay is now instantiated per configuration to make use of the host variable
96 lines
3.8 KiB
Nix
Executable File
96 lines
3.8 KiB
Nix
Executable File
{ pkgs }:
|
|
pkgs.writeShellApplication {
|
|
name = "toolbelt";
|
|
runtimeInputs = with pkgs; [
|
|
cliphist
|
|
fzf
|
|
ripgrep
|
|
gawk
|
|
wl-clipboard
|
|
hyprland
|
|
alsa-utils
|
|
btop
|
|
coreutils
|
|
];
|
|
text = ''
|
|
cliphistory() {
|
|
selection=$(cliphist list | fzf --preview="
|
|
index=\$(echo {} | awk '{print \$1}'); \
|
|
mime=\$(cliphist decode \$index | file -i -); \
|
|
if echo \"\$mime\" | grep -q 'image'; then \
|
|
echo \$(cliphist list | rg \"^\$index\" | cut -d ' ' -f 2- | fmt -w 30); \
|
|
else \
|
|
cliphist decode \"\$index\" | fmt -w 30; \
|
|
fi" --prompt="> " | awk '{print $1}')
|
|
[ -z "$selection" ] && return 1
|
|
cliphist decode "$selection" | wl-copy
|
|
}
|
|
btop_cmd() {
|
|
|
|
if [ "$(cat /etc/hostname)" = "oganesson" ]; then
|
|
hyprctl dispatch resizeactive 20% 155% &&
|
|
moveonscreen --center &&
|
|
btop &&
|
|
hyprctl dispatch resizeactive exact 40% 25% &&
|
|
moveonscreen
|
|
else
|
|
hyprctl dispatch resizeactive exact 60% 68% &&
|
|
moveonscreen --center &&
|
|
btop &&
|
|
hyprctl dispatch resizeactive exact 40% 25% &&
|
|
moveonscreen
|
|
fi
|
|
}
|
|
|
|
running=true
|
|
|
|
declare -A commands=(
|
|
["Change Wallpaper"]="moveonscreen --center && if chpaper; then running=false; else moveonscreen; fi"
|
|
["Change System Color Scheme"]="hyprctl dispatch resizeactive 10% 80% && moveonscreen --center && if chscheme; then running=false; else hyprctl dispatch resizeactive exact 40% 25% && moveonscreen; fi"
|
|
["Open System Monitor"]="btop_cmd"
|
|
["Open Volume Controls"]="hyprctl dispatch resizeactive 10% 80% && moveonscreen --center && alsamixer && hyprctl dispatch resizeactive exact 40% 25% && moveonscreen"
|
|
["Open Keyring"]="hyprctl dispatch resizeactive -300 0 && moveonscreen && if keyring; then running=false; else hyprctl dispatch resizeactive exact 40% 25% && moveonscreen; fi"
|
|
["View Clipboard History"]="hyprctl dispatch resizeactive 45% 120% && moveonscreen --center && if cliphistory;then running=false; else hyprctl dispatch resizeactive exact 40% 25% && moveonscreen; fi"
|
|
)
|
|
|
|
ordered_commands=(
|
|
"Open Keyring"
|
|
"Open System Monitor"
|
|
"Open Volume Controls"
|
|
"Change Wallpaper"
|
|
"Change System Color Scheme"
|
|
"View Clipboard History"
|
|
)
|
|
|
|
# Use fzf to select a command with preview
|
|
while $running; do
|
|
selected_command=$(printf "%s\n" "''${ordered_commands[@]}" | fzf --preview="
|
|
cleaned_key=\$(echo {} | tr -d \"'\"); \
|
|
echo \"Cleaned key: \$cleaned_key\"; \
|
|
declare -A descriptions=(
|
|
[\"Change Wallpaper\"]=\"Choose a wallpaper to switch to from the assets/wallpapers folder in the system flake directory. Requires rebuilding the system and restarting hyprpaper.\"
|
|
[\"Change System Color Scheme\"]=\"Changes the base16 color scheme used by stylix to color system applications.\"
|
|
[\"Open System Monitor\"]=\"Opens a btop window.\"
|
|
[\"Open Volume Controls\"]=\"Opens alsamixer.\"
|
|
[\"Open Keyring\"]=\"Opens a fuzzy finder with all of the paths held in ~/.password-store. Selecting one uses pass to copy that password to the clipboard. Password is cleared from clipboard after 45 seconds, and isn't saved to clipboard history.\"
|
|
[\"View Clipboard History\"]=\"Opens clipboard history. Selecting an item copies it to the clipboard.\"
|
|
); \
|
|
if [[ -v descriptions[\$cleaned_key] ]]; then \
|
|
clear; \
|
|
echo \''${descriptions[\$cleaned_key]} | fmt -w 28; \
|
|
else \
|
|
clear; \
|
|
echo \"No description available\"; \
|
|
fi" --prompt="> ")
|
|
|
|
|
|
#Execute the selected command if selection is not empty
|
|
if [[ -n $selected_command ]]; then
|
|
eval "''${commands[$selected_command]}"
|
|
else
|
|
running=false
|
|
fi
|
|
done
|
|
'';
|
|
}
|