All pastes #737771 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-10-15 18:19 UTC
rendered paste body
#!/bin/bash

# set field separator to newline

ORIGIFS=${IFS}

IFS=$'\n'
#-----------------------------------------------------------

# get current desktop and width

cdesk=-1
width=-1

for k in `wmctrl -d | cut -d' ' -f1,3,12`
do
    if [ "`echo ${k} | cut -d' ' -f2`" == "*" ]
    then
        cdesk=`echo ${k} | cut -d' ' -f1`
        size=`echo ${k} | cut -d' ' -f3`
        width=`echo ${size} | cut -d'x' -f1`
        height=`echo ${size} | cut -d'x' -f2`
    fi
done
(( height -= 26 ))
#-----------------------------------------------------------

# get number of windows on screen

winCount=0

for k in `wmctrl -l | cut -d' ' -f3`
do
    if [ ${k} == ${cdesk} ]
    then
        (( winCount++ ))
    fi
done

if [ ${winCount} -ne 0 ]
then
    avgWidth=$(( width / winCount ))
else
    avgWidth=${width}
fi
(( avgWidth -= 3 ))
#-----------------------------------------------------------

col=2
for k in `wmctrl -l | cut -d' ' -f1,3`
do
    if [ "`echo ${k} | cut -d' ' -f2`" == "${cdesk}" ]
    then
        cwin="`echo ${k} | cut -d' ' -f1`"
        wmctrl -i -r ${cwin} -e 0,${col},0,$((avgWidth)),${height}
        (( col += avgWidth ))
    fi
done
#-----------------------------------------------------------

IFS=${ORIGIFS}
#-----------------------------------------------------------