From 33703a86c61a57b5c9cef6a370160a36578484bd Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 18 Dec 2023 23:31:05 +0200 Subject: Close control when lost focus --- toggle-control | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 toggle-control diff --git a/toggle-control b/toggle-control new file mode 100755 index 0000000..8de5200 --- /dev/null +++ b/toggle-control @@ -0,0 +1,53 @@ +#!/bin/bash + +EWW=$(which eww) +STATE_FILE="$HOME/.eww_module_state" + +# Function to close the control module +close_control_module() { + "$EWW" close control & +} + +# Function to open the control module +open_control_module() { + touch "$STATE_FILE" + "$EWW" open control & +} + +# Function to check if the cursor is inside the control window +is_cursor_inside_control() { + local mouse_x=$(xdotool getmouselocation --shell | awk -F '=' '/X/{print $2}') + local mouse_y=$(xdotool getmouselocation --shell | awk -F '=' '/Y/{print $2}') + + local control_x=1110 + local control_y=0 + local control_width=240 + local control_height=360 + + [ "$mouse_x" -ge "$control_x" -a "$mouse_x" -le "$((control_x + control_width))" -a \ + "$mouse_y" -ge "$control_y" -a "$mouse_y" -le "$((control_y + control_height))" ] +} + +# Function to close the control module if cursor is outside the control window +close_control_on_leave() { + while true; do + sleep 0.1 + if [ -e "$STATE_FILE" ] && ! is_cursor_inside_control; then + close_control_module + rm "$STATE_FILE" + break + fi + done +} + +# Check if the module is currently running +if [ -e "$STATE_FILE" ]; then + # If the file exists, the module is running, so close it when cursor leaves + close_control_on_leave +else + # If the file doesn't exist, the module is not running, so start it + open_control_module + + # Start monitoring cursor position to close the control window if it leaves + close_control_on_leave & +fi -- cgit v1.2.3