aboutsummaryrefslogtreecommitdiff
path: root/toggle-control
blob: 8de52002a10257f734e2d90d6783155d4fbc8ed1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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