Files
dotfiles/.config/hypr/scripts/float-bitwarden.sh
2024-11-11 02:30:59 +01:00

33 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
timeout=0
handle() {
case $1 in
windowtitle*)
# Extract the window ID from the line
window_id=${1#*>>}
# Fetch the list of windows and parse it using jq to find the window by its decimal ID
window_info=$(hyprctl clients -j | jq --arg id "0x$window_id" '.[] | select(.address == ($id))')
# Extract the title from the window info
window_title=$(echo "$window_info" | jq -r '.title')
# Check if the title matches the characteristics of the Bitwarden popup window
if [[ "$window_title" == *"(Bitwarden"*"Password Manager) - Bitwarden"* ]]; then
# in case of double rename only allow once per second
if ((SECONDS < timeout)); then
return
fi
timeout=$((SECONDS + 1))
# echo "$window_id", "$window_title"
hyprctl --batch "dispatch togglefloating address:0x$window_id; dispatch resizewindowpixel exact 20% 54%,address:0x$window_id; dispatch centerwindow"
fi
;;
esac
}
# Listen to the Hyprland socket for events and process each line with the handle function
socat -U - UNIX-CONNECT:"$XDG_RUNTIME_DIR"/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock | while read -r line; do handle "$line"; done