Advertisement
KiteX3

launchit

Apr 28th, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.82 KB | None | 0 0
  1. #!/bin/bash
  2. #Usage: launchit -w windowclass -l launchcmd
  3.  
  4. currentdesktop ()
  5. {
  6. wmctrl -d | awk '$2=="*" {print $1}'
  7. }
  8.  
  9. #Variables that matter:
  10. WC=$1
  11. LC=$2
  12. READMODE=
  13. ALLDESKTOPS=
  14.  
  15. while true
  16. do
  17.     case $READMODE in
  18.         w)
  19.             WC=$1
  20.             READMODE=
  21.             ;;
  22.         l)
  23.             LC=$1
  24.             READMODE=
  25.             ;;
  26.         *)
  27.             case $1 in
  28.                 -w)
  29.                     READMODE=w
  30.                     ;;
  31.                 -l)
  32.                     READMODE=l
  33.                     ;;
  34.                 -a)
  35.                     ALLDESKTOPS=y
  36.                     ;;
  37.                 *)
  38.                     if [[ -n "$1" ]] ; then
  39.                     echo "Confusing input: $1"
  40.                     fi
  41.                     ;;
  42.             esac
  43.             ;;
  44.     esac
  45.     shift || break
  46. done
  47. echo $WC $LC
  48.  
  49. case $ALLDESKTOPS in
  50.     y)
  51.         #Search ALL the desktops!...but prefer the current desktop.
  52.         #Anything on the current desktop?
  53.         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 } }') ]] ;
  54.         then
  55.             for i in $( wmctrl -lx | awk -v r=$(currentdesktop) '$2==r || $2=="-1" {print}' | awk -v r=$WC '{ if ($3 ~ r) { print $1 } }' ) ;
  56.                 do wmctrl -ia $i ; echo "Brought $i to forefront"
  57.             done
  58.         #No? Then try other desktops!
  59.         elif [[ -n $( wmctrl -lx | awk '{ print $3 }' | awk -v r=$WC -F. '{ if ($1~r) { print $1 } }') ]] ;
  60.         then
  61.         for i in $( wmctrl -lx | awk -v r=$WC '{ if ($3 ~ r) { print $1 } }' ) ;
  62.             do wmctrl -ia $i ; echo "Brought $i to forefront"
  63.         done
  64.         #Nothing? Then let's start the app.
  65.         else
  66.             $LC &
  67.         fi
  68.         ;;
  69.     *)
  70.         #Just search the current desktop
  71.         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 } }') ]] ;
  72.         then
  73.             for i in $( wmctrl -lx | awk -v r=$(currentdesktop) '$2==r || $2=="-1" {print}' | awk -v r=$WC '{ if ($3 ~ r) { print $1 } }' ) ;
  74.                 do wmctrl -ia $i ; echo "Brought $i to forefront"
  75.             done
  76.         else
  77.             $LC &
  78.         fi
  79.         ;;
  80. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement