dwm picom added
This commit is contained in:
1 parent
471b6062af
commit
964ff4b2c7
132 files changed
+32922
No files matched your search
Executable
+54
@@ -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"
|
||||
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
|
||||
# == Declare stderr function ===
|
||||
|
||||
stderr() {
|
||||
printf "\033[1;31m%s\n\033[0m" "$@" >&2
|
||||
}
|
||||
|
||||
# === Verify `picom --dbus` status ===
|
||||
|
||||
if [ -z "$(dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep compton)" ]; then
|
||||
stderr "picom DBus interface unavailable"
|
||||
if [ -n "$(pgrep picom)" ]; then
|
||||
stderr "picom running without dbus interface"
|
||||
#killall picom & # Causes all windows to flicker away and come back ugly.
|
||||
#picom --dbus & # Causes all windows to flicker away and come back beautiful
|
||||
else
|
||||
stderr "picom not running"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# === Setup sed ===
|
||||
|
||||
SED="${SED:-$(command -v gsed || printf 'sed')}"
|
||||
|
||||
# === Get connection parameters ===
|
||||
|
||||
dpy=$(printf "$DISPLAY" | tr -c '[:alnum:]' _)
|
||||
|
||||
if [ -z "$dpy" ]; then
|
||||
stderr "Cannot find display."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
service="com.github.chjj.compton.${dpy}"
|
||||
interface="com.github.chjj.compton"
|
||||
picom_dbus="dbus-send --print-reply --dest="${service}" / "${interface}"."
|
||||
type_win='uint32'
|
||||
type_enum='uint32'
|
||||
|
||||
# === Color Inversion ===
|
||||
|
||||
# Get window ID of window to invert
|
||||
if [ -z "$1" -o "$1" = "selected" ]; then
|
||||
window=$(xwininfo -frame | sed -n 's/^xwininfo: Window id: \(0x[[:xdigit:]][[:xdigit:]]*\).*/\1/p') # Select window by mouse
|
||||
elif [ "$1" = "focused" ]; then
|
||||
# Ensure we are tracking focus
|
||||
window=$(${picom_dbus}find_win string:focused | $SED -n 's/^[[:space:]]*'${type_win}'[[:space:]]*\([[:digit:]]*\).*/\1/p') # Query picom for the active window
|
||||
elif echo "$1" | grep -Eiq '^([[:digit:]][[:digit:]]*|0x[[:xdigit:]][[:xdigit:]]*)$'; then
|
||||
window="$1" # Accept user-specified window-id if the format is correct
|
||||
else
|
||||
echo "$0" "[ selected | focused | window-id ]"
|
||||
fi
|
||||
|
||||
# Color invert the selected or focused window
|
||||
if [ -n "$window" ]; then
|
||||
invert_status="$(${picom_dbus}win_get "${type_win}:${window}" string:invert_color | $SED -n 's/^[[:space:]]*boolean[[:space:]]*\([[:alpha:]]*\).*/\1/p')"
|
||||
if [ "$invert_status" = true ]; then
|
||||
invert=0 # Set the window to have normal color
|
||||
else
|
||||
invert=1 # Set the window to have inverted color
|
||||
fi
|
||||
${picom_dbus}win_set "${type_win}:${window}" string:invert_color_force "${type_enum}:${invert}" &
|
||||
else
|
||||
stderr "Cannot find $1 window."
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
Reference in new issue
Block a user