diff options
| author | Allusive_ <[email protected]> | 2023-08-01 09:01:37 +1000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-08-01 09:01:37 +1000 |
| commit | 584b88db220fb759f9df5b16e867422a43a63828 (patch) | |
| tree | 3d35f6ec36d0ef8f397f8278aa27c0f8b42f7c28 /dbus-examples/cdbus-driver.sh | |
| parent | Add files via upload (diff) | |
| download | compfy-584b88db220fb759f9df5b16e867422a43a63828.tar.xz compfy-584b88db220fb759f9df5b16e867422a43a63828.zip | |
Add files via upload
Diffstat (limited to 'dbus-examples/cdbus-driver.sh')
| -rw-r--r-- | dbus-examples/cdbus-driver.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/dbus-examples/cdbus-driver.sh b/dbus-examples/cdbus-driver.sh new file mode 100644 index 0000000..31a9b2f --- /dev/null +++ b/dbus-examples/cdbus-driver.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +if [ -z "$SED" ]; then + SED="sed" + command -v gsed > /dev/null && SED="gsed" +fi + +# === Get connection parameters === + +dpy=$(echo -n "$DISPLAY" | tr -c '[:alnum:]' _) + +if [ -z "$dpy" ]; then + echo "Cannot find display." + exit 1 +fi + +service="com.github.chjj.compton.${dpy}" +interface='com.github.chjj.compton' +object='/com/github/chjj/compton' +type_win='uint32' +type_enum='uint32' + +# === DBus methods === + +# List all window ID compton manages (except destroyed ones) +dbus-send --print-reply --dest="$service" "$object" "${interface}.list_win" + +# Get window ID of currently focused window +focused=$(dbus-send --print-reply --dest="$service" "$object" "${interface}.find_win" string:focused | $SED -n 's/^[[:space:]]*'${type_win}'[[:space:]]*\([[:digit:]]*\).*/\1/p') + +if [ -n "$focused" ]; then + # Get invert_color_force property of the window + dbus-send --print-reply --dest="$service" "$object" "${interface}.win_get" "${type_win}:${focused}" string:invert_color_force + + # Set the window to have inverted color + dbus-send --print-reply --dest="$service" "$object" "${interface}.win_set" "${type_win}:${focused}" string:invert_color_force "${type_enum}:1" +else + echo "Cannot find focused window." +fi + +# Reset compton +sleep 3 +dbus-send --print-reply --dest="$service" "$object" "${interface}.reset" + +# Undirect window +sleep 3 +dbus-send --print-reply --dest="$service" "$object" "${interface}.opts_set" string:redirected_force "${type_enum}:0" + +# Revert back to auto +sleep 3 +dbus-send --print-reply --dest="$service" "$object" "${interface}.opts_set" string:redirected_force "${type_enum}:2" + +# Force repaint +dbus-send --print-reply --dest="$service" "$object" "${interface}.repaint" |