#!/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