aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2023-12-18 23:31:05 +0200
committersrdusr <trevorgray@srdusr.com>2023-12-18 23:31:05 +0200
commit33703a86c61a57b5c9cef6a370160a36578484bd (patch)
treed9a34f738e3b9441e57f2c5bf00f721a39659a94
parent60a6caee5fb3cd27de1f102636b8769ce35ddda1 (diff)
downloaddotfiles-33703a86c61a57b5c9cef6a370160a36578484bd.tar.gz
dotfiles-33703a86c61a57b5c9cef6a370160a36578484bd.zip
Close control when lost focus
-rwxr-xr-xtoggle-control53
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