diff options
| author | srdusr <trevorgray@srdusr.com> | 2023-12-18 23:31:05 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2023-12-18 23:31:05 +0200 |
| commit | 33703a86c61a57b5c9cef6a370160a36578484bd (patch) | |
| tree | d9a34f738e3b9441e57f2c5bf00f721a39659a94 | |
| parent | 60a6caee5fb3cd27de1f102636b8769ce35ddda1 (diff) | |
| download | dotfiles-33703a86c61a57b5c9cef6a370160a36578484bd.tar.gz dotfiles-33703a86c61a57b5c9cef6a370160a36578484bd.zip | |
Close control when lost focus
| -rwxr-xr-x | toggle-control | 53 |
1 files changed, 53 insertions, 0 deletions
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 |
