From ffeaf344c429ab195160be967a5fb62346f3eed9 Mon Sep 17 00:00:00 2001 From: krolxon Date: Mon, 25 Aug 2025 15:44:14 +0530 Subject: move to fuzzel from rofi rofi is bad when it comes to fuzzy matching and also you cannot execute command as it is, for example you cannot pass arguements to commands like "setwall -m". Fuzzel is way simpler, natively supports wayland and is a drop in replacement for dmenu. --- .local/bin/askpass-fuzzel | 12 ++++++++++++ .local/bin/fuzzelunicode | 13 +++++++++++++ .local/bin/madd | 2 +- .local/bin/mounter | 8 ++++---- .local/bin/movie | 2 +- .local/bin/rofipass | 9 --------- .local/bin/rofiunicode | 13 ------------- .local/bin/screenshot | 2 +- .local/bin/sysact | 2 +- .local/bin/unmounter | 4 ++-- 10 files changed, 35 insertions(+), 32 deletions(-) create mode 100755 .local/bin/askpass-fuzzel create mode 100755 .local/bin/fuzzelunicode delete mode 100755 .local/bin/rofipass delete mode 100755 .local/bin/rofiunicode (limited to '.local') diff --git a/.local/bin/askpass-fuzzel b/.local/bin/askpass-fuzzel new file mode 100755 index 0000000..c8941ca --- /dev/null +++ b/.local/bin/askpass-fuzzel @@ -0,0 +1,12 @@ +#!/bin/bash + +prompt="${1:-Password:}" + +password=$(fuzzel --dmenu --password --prompt="" --placeholder="$prompt" --width=60 --lines=0 --keyboard-focus=on-demand --no-exit-on-keyboard-focus-loss) + +if [ $? -eq 0 ]; then + echo "$password" + exit 0 +else + exit 1 +fi diff --git a/.local/bin/fuzzelunicode b/.local/bin/fuzzelunicode new file mode 100755 index 0000000..cc97f19 --- /dev/null +++ b/.local/bin/fuzzelunicode @@ -0,0 +1,13 @@ +#!/bin/sh + +# The famous "get a menu of emojis to copy" script. + +# Get user selection via dmenu from emoji file. +chosen=$(cut -d ';' -f1 ~/.local/share/chars/* | fuzzel -d -i -l 30 | sed "s/ .*//") + +# Exit if none chosen. +[ -z "$chosen" ] && exit + +wtype "$chosen" +printf "$chosen" | wl-copy +notify-send "'$chosen' copied to clipboard." & diff --git a/.local/bin/madd b/.local/bin/madd index d1cb8ef..130fd85 100755 --- a/.local/bin/madd +++ b/.local/bin/madd @@ -14,7 +14,7 @@ madd() { if [ -t 0 ]; then filename=$(mpc listall | fzf) else - filename=$(mpc listall | rofi -dmenu -l 30 -case-smart) + filename=$(mpc listall | fuzzel -d -l 30) fi if [ -n "$filename" ]; then diff --git a/.local/bin/mounter b/.local/bin/mounter index 38d3c9c..949fdce 100755 --- a/.local/bin/mounter +++ b/.local/bin/mounter @@ -1,6 +1,6 @@ #!/bin/sh -# Gives a rofi -dmenu prompt to mount unmounted drives. If +# Gives a dmenu prompt to mount unmounted drives. If # they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll # be prompted to give a mountpoint from already existsing directories. If you # input a novel directory, it will prompt you to create that directory. @@ -8,16 +8,16 @@ getmount() { \ [ -z "$chosen" ] && exit 1 # shellcheck disable=SC2086 - mp="$(find $1 2>/dev/null | rofi -dmenu -i -p "Type in mount point.")" || exit 1 + mp="$(find $1 2>/dev/null | fuzzel -d -i -p "Type in mount point.")" || exit 1 test -z "$mp" && exit 1 if [ ! -d "$mp" ]; then - mkdiryn=$(printf "No\\nYes" | rofi -dmenu -i -p "$mp does not exist. Create it?") || exit 1 + mkdiryn=$(printf "No\\nYes" | fuzzel -d -i -p "$mp does not exist. Create it?") || exit 1 [ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp") fi } mountusb() { \ - chosen="$(echo "$usbdrives" | rofi -dmenu -i -p "Mount which drive?")" || exit 1 + chosen="$(echo "$usbdrives" | fuzzel -d -i -p "Mount which drive?")" || exit 1 chosen="$(echo "$chosen" | awk '{print $1}')" sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0 alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}') diff --git a/.local/bin/movie b/.local/bin/movie index 4ceb432..b56828f 100755 --- a/.local/bin/movie +++ b/.local/bin/movie @@ -4,7 +4,7 @@ if [ -t 0 ]; then filename="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)" -printf "%f\n" | sort | fzf)" else - filename="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)" -printf "%f\n" | sort | rofi -case-smart -matching "fuzzy" -dmenu -l 25)" + filename="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)" -printf "%f\n" | sort | fuzzel -d -l 25)" fi filepath="$(find ~/media/movies/ -type f -regex ".*\.\(mkv\|mp4\|mpeg\|avi\|mov\|webm\)")" diff --git a/.local/bin/rofipass b/.local/bin/rofipass deleted file mode 100755 index b1bf6a3..0000000 --- a/.local/bin/rofipass +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# -# Take password prompt from STDIN, print password to STDOUT -# the sed piece just removes the colon from the provided -# prompt: rofi -p already gives us a colon -rofi -dmenu \ - -password \ - -no-fixed-num-lines \ - -p "$(printf "$1" | sed s/://)" diff --git a/.local/bin/rofiunicode b/.local/bin/rofiunicode deleted file mode 100755 index d6d4239..0000000 --- a/.local/bin/rofiunicode +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# The famous "get a menu of emojis to copy" script. - -# Get user selection via dmenu from emoji file. -chosen=$(cut -d ';' -f1 ~/.local/share/chars/* | rofi -dmenu -i -l 30 | sed "s/ .*//") - -# Exit if none chosen. -[ -z "$chosen" ] && exit - -wtype "$chosen" -printf "$chosen" | wl-copy -notify-send "'$chosen' copied to clipboard." & diff --git a/.local/bin/screenshot b/.local/bin/screenshot index 3cb9b0f..8048bfa 100755 --- a/.local/bin/screenshot +++ b/.local/bin/screenshot @@ -2,7 +2,7 @@ ocr_cmd="wl-copy" -case "$(printf "a selected area (copy)\ncurrent window (copy)\nfull screen (copy)\na selected area\ncurrent window\nfull screen\na selected area (OCR)" | rofi -dmenu -l 7 -i -p "Screenshot which area?")" in +case "$(printf "a selected area (copy)\ncurrent window (copy)\nfull screen (copy)\na selected area\ncurrent window\nfull screen\na selected area (OCR)" | fuzzel -d -l 7 -i -p "Screenshot which area?")" in "a selected area (copy)") hyprshot -m region --clipboard-only ;; "current window (copy)") hyprshot -m window --clipboard-only ;; "full screen (copy)") hyprshot -m output --clipboard-only ;; diff --git a/.local/bin/sysact b/.local/bin/sysact index 5ea92fa..c014639 100755 --- a/.local/bin/sysact +++ b/.local/bin/sysact @@ -10,7 +10,7 @@ wmpid(){ # Get Hyprland process PID pgrep -o hyprland } -case "$(printf " lock\n󰠚 leave $WM\n renew $WM\n󱣻 hibernate\n reboot\n shutdown\n sleep\n display off" | rofi -dmenu -i -l 15 -p 'Action: ')" in +case "$(printf " lock\n󰠚 leave $WM\n renew $WM\n󱣻 hibernate\n reboot\n shutdown\n sleep\n display off" | fuzzel -d -i -l 15 -p 'Action: ')" in ' lock') hyprlock ;; "󰠚 leave $WM") kill -TERM "$(wmpid)" ;; " renew $WM") hyprctl reload ;; diff --git a/.local/bin/unmounter b/.local/bin/unmounter index 184b3ae..796fd76 100755 --- a/.local/bin/unmounter +++ b/.local/bin/unmounter @@ -1,12 +1,12 @@ #!/bin/sh -# A rofi -dmenu prompt to unmount drives. +# A dmenu prompt to unmount drives. # Provides you with mounted partitions, select one to unmount. # Drives mounted at /, /boot and /home will not be options to unmount. unmountusb() { [ -z "$drives" ] && exit - chosen="$(echo "$drives" | rofi -dmenu -i -p "Unmount which drive?")" || exit 1 + chosen="$(echo "$drives" | fuzzel -d -i -p "Unmount which drive?")" || exit 1 chosen="$(echo "$chosen" | awk '{print $1}')" [ -z "$chosen" ] && exit sudo -A umount "$chosen" && notify-send "💻 USB unmounting" "$chosen unmounted." -- cgit v1.2.3