Dividido em etapas, você pode primeiro procurar uma tarefa pelo nome e executá-la se não for encontrada:
APPID='pgrep <taskname>'
if [ $APPID == "" ] ; then
<app-command-with-options>
exit 0
fi
O script será encerrado se tiver que executar o aplicativo, caso contrário, continue com procurando pelas janelas pertencentes à tarefa:
known_windows=$(xwininfo -root -children|sed -e 's/^ *//'|grep -E "^0x"|awk '{ print $1 }')
for id in ${known_windows}
do
xp=$(xprop -id $id _NET_WM_PID)
if test $? -eq 0; then
pid=$(xprop -id $id _NET_WM_PID|cut -d'=' -f2|tr -d ' ')
if test "x${pid}" = x${APPID}
then
echo "Windows Id: $id"
fi
fi
done
Neste ponto, o script passou pela lista de janelas correspondentes. Você poderia simplesmente adicionar após o loop um comando para ativar a janela representada por '$ id'; isso mudaria para a última janela da lista e deveria subir para o topo ...
xdotool windowactivate $id
Você pode descobrir diferentes estratégias para selecionar janelas em uma sequência que seja útil para você. Além disso, o script provavelmente pode ser simplificado com o uso mais inteligente do comando xdotool
e de suas opções de pesquisa.