«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.
#!/bin/bash
# usage: "launchorswitch.sh xterm" to change to/start/hide xterm
app=$1
app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1`
case $app in
terminator)
app_exec="terminator --geometry=1000x720+140+28"
;;
*)
app_exec=$app
;;
esac
if [ -z $app_win_id ]; then
$app_exec & # app not started, so start it
else
active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3`
if [ $app_win_id == $active_win_id ]; then
wmctrl -r :ACTIVE: -b toggle,hidden # hide app when active
else
wmctrl -i -a $app_win_id #switch to app
fi;
fi;
В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.