|
如果你工作的时候会打开很多程序,经常在各程序之间切换,那么下面这个脚本可能可以很好帮助你。
脚本名:activewin,脚本内容:
- #!/bin/bash
- lockfile=/tmp/wmctrl.lock
- #exe=win_class
- winword=winword.exe
- foxit="foxit reader.exe"
- eval declare wc="\${$1:-$1}"
- if mkdir $lockfile."$1"
- then
- wmctrl -x -l|sed -n 's/ *'"$HOSTNAME"'.*$//g;/'"$wc"'/Ip' >$lockfile."$1"/list
- if [[ ! -s $lockfile."$1"/list ]]
- then
- [[ $2 == notrun ]] || { "$@" & }
- sleep 5
- rm -fr $lockfile."$1"
- exit
- fi
- echo -n "1">$lockfile
- fi
- i=0
- read next<$lockfile
- while [[ $i -lt $next ]] && read id other
- do
- ((i++))
- done <$lockfile."$1"/list
- if [[ $i -ne $next ]]
- then
- i=1
- read id other <$lockfile."$1"/list
- fi
- echo $((i+1)) >$lockfile
- wmctrl -i -a $id
- sleep 2
- id=$BASHPID
- ps -o pid,cmd -C ${0##*/}|grep -v -E "$id|PID"|grep -q "$1" || rm -fr $lockfile."$1"
复制代码
脚本用到一个叫wmctrl的程序。可以实现只在相同窗口类里的程序切换。使用方法是定义全局快捷键,比如,如下:
- win+w activewin firefox
- win+1 activewin okular notrun
- win+2 activewin libreoffice
- win+x activewin goldendict
- ...
复制代码
可以实现按win+w激活firefox,连续按win+w在不同firefox窗口间切换。 |
|