#!/bin/bash # transset in a bash script # copyright (c) 2011, christopher jeffrey # usage: # by window id #trans -w "$WINDOWID" -o 75 # by name #trans -n "urxvt" -o 75 # by current window #trans -c -o 75 # by selection #trans -s -o 75 # increment current window 5% #trans -c -o +5 if [ -z "$(which xprop)" -o -z "$(which xwininfo)" ]; then echo "Please install x11-utils/xorg-xprop/xorg-xwininfo." >&2 exit 1 fi window= opacity= cur= root= parent= active= while getopts "scn:w:o:" OPTION; do case "$OPTION" in s) window="" ;; c) active=$(xprop -root -notype "_NET_ACTIVE_WINDOW" \ | sed 's/^.*\(0x\S*\).*$/\1/') window="-id $active" ;; n) window="-name $OPTARG" ;; w) window="-id $OPTARG" ;; o) opacity="$OPTARG" ;; esac done root=$(xwininfo -all -root \ | grep "Root window id" \ | sed 's/^.*\(0x\S*\).*$/\1/') parent=$window while [ true ]; do parent=$(xwininfo -all $parent \ | grep Parent \ | sed 's/^.*\(0x\S*\).*$/\1/') if [ "$parent" = "$root" ]; then break fi parent="-id $parent" window=$parent done inc=$(echo "$opacity" | sed 's/^\(+\|-\).*$\|^.*$/\1/') if [ -n "$inc" ]; then cur=$(xprop $window -notype "_NET_WM_WINDOW_OPACITY" \ | sed 's/^.*\b\([0-9]\+\).*$\|^.*$/\1/') [ -z "$cur" ] && cur=$((0xffffffff)) cur=$((cur*100/0xffffffff)) opacity=$(echo "$opacity" | sed 's/\(\+\|\-\)//') if [ "$inc" = "+" ]; then opacity=$((cur+opacity)) else opacity=$((cur-opacity)) fi fi if [ -n "$opacity" ] && [ -n "$window" ]; then [ $opacity -le 0 ] && opacity=0 [ $opacity -ge 100 ] && opacity=100 opacity=$((opacity*0xffffffff/100)) xprop $window -f _NET_WM_WINDOW_OPACITY 32c \ -set _NET_WM_WINDOW_OPACITY "$opacity" fi