Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Usage: launchit -w windowclass -l launchcmd
- currentdesktop ()
- {
- wmctrl -d | awk '$2=="*" {print $1}'
- }
- #Variables that matter:
- WC=$1
- LC=$2
- READMODE=
- ALLDESKTOPS=
- while true
- do
- case $READMODE in
- w)
- WC=$1
- READMODE=
- ;;
- l)
- LC=$1
- READMODE=
- ;;
- *)
- case $1 in
- -w)
- READMODE=w
- ;;
- -l)
- READMODE=l
- ;;
- -a)
- ALLDESKTOPS=y
- ;;
- *)
- if [[ -n "$1" ]] ; then
- echo "Confusing input: $1"
- fi
- ;;
- esac
- ;;
- esac
- shift || break
- done
- echo $WC $LC
- case $ALLDESKTOPS in
- y)
- #Search ALL the desktops!...but prefer the current desktop.
- #Anything on the current desktop?
- if [[ -n $( wmctrl -lx | awk -v r=$(currentdesktop) '$2==r || $2=="-1" {print}' | awk '{ print $3 }' | awk -v r=$WC -F. '{ if ($1~r) { print $1 } }') ]] ;
- then
- for i in $( wmctrl -lx | awk -v r=$(currentdesktop) '$2==r || $2=="-1" {print}' | awk -v r=$WC '{ if ($3 ~ r) { print $1 } }' ) ;
- do wmctrl -ia $i ; echo "Brought $i to forefront"
- done
- #No? Then try other desktops!
- elif [[ -n $( wmctrl -lx | awk '{ print $3 }' | awk -v r=$WC -F. '{ if ($1~r) { print $1 } }') ]] ;
- then
- for i in $( wmctrl -lx | awk -v r=$WC '{ if ($3 ~ r) { print $1 } }' ) ;
- do wmctrl -ia $i ; echo "Brought $i to forefront"
- done
- #Nothing? Then let's start the app.
- else
- $LC &
- fi
- ;;
- *)
- #Just search the current desktop
- if [[ -n $( wmctrl -lx | awk -v r=$(currentdesktop) '$2==r || $2=="-1" {print}' | awk '{ print $3 }' | awk -v r=$WC -F. '{ if ($1~r) { print $1 } }') ]] ;
- then
- for i in $( wmctrl -lx | awk -v r=$(currentdesktop) '$2==r || $2=="-1" {print}' | awk -v r=$WC '{ if ($3 ~ r) { print $1 } }' ) ;
- do wmctrl -ia $i ; echo "Brought $i to forefront"
- done
- else
- $LC &
- fi
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement