LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1061|回复: 0

窗口切换脚本

[复制链接]
发表于 2011-9-11 18:16:52 | 显示全部楼层 |阅读模式
如果你工作的时候会打开很多程序,经常在各程序之间切换,那么下面这个脚本可能可以很好帮助你。
脚本名:activewin,脚本内容:
  1. #!/bin/bash
  2. lockfile=/tmp/wmctrl.lock
  3. #exe=win_class
  4. winword=winword.exe
  5. foxit="foxit reader.exe"

  6. eval declare wc="\${$1:-$1}"

  7. if mkdir $lockfile."$1"
  8. then
  9.         wmctrl -x -l|sed -n 's/ *'"$HOSTNAME"'.*$//g;/'"$wc"'/Ip' >$lockfile."$1"/list
  10.         if [[ ! -s $lockfile."$1"/list ]]
  11.         then

  12.                 [[ $2 == notrun ]] || { "$@" & }
  13.                 sleep 5
  14.                 rm -fr $lockfile."$1"
  15.                 exit
  16.         fi
  17.         echo -n "1">$lockfile
  18. fi

  19. i=0
  20. read next<$lockfile
  21. while [[ $i -lt $next ]] && read id other
  22. do
  23.         ((i++))
  24. done <$lockfile."$1"/list

  25. if [[ $i -ne $next ]]
  26. then
  27.         i=1
  28.         read id other <$lockfile."$1"/list
  29. fi
  30. echo $((i+1)) >$lockfile

  31. wmctrl -i -a $id
  32. sleep 2
  33. id=$BASHPID
  34. ps -o pid,cmd -C ${0##*/}|grep -v -E "$id|PID"|grep -q "$1" || rm -fr $lockfile."$1"

复制代码


脚本用到一个叫wmctrl的程序。可以实现只在相同窗口类里的程序切换。使用方法是定义全局快捷键,比如,如下:

  1. win+w activewin firefox
  2. win+1 activewin okular notrun
  3. win+2 activewin libreoffice
  4. win+x activewin goldendict
  5. ...
复制代码


可以实现按win+w激活firefox,连续按win+w在不同firefox窗口间切换。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表