Первоначальный запрос с 2006 года ?! o_O https://bugs.launchpad.net/nautilus/+bug/35347
Будем надеяться ...; -)
Этот скрипт делает то, что вы хотите:
#!/bin/bash
app=$1
workspace=$(wmctrl -d | grep '\*' | cut -d ' ' -f1)
win_list=$(wmctrl -lx | grep $app | grep " $workspace " | awk '{print $1}')
IDs=$(xprop -root|grep "^_NET_CLIENT_LIST_STACKING" | tr "," " ")
IDs=(${IDs##*#})
for (( idx=${#IDs[@]}-1 ; idx>=0 ; idx-- )) ; do
for i in $win_list; do
if [ $((i)) = $((IDs[idx])) ]; then
wmctrl -ia $i
exit 0
fi
done
done
exit 1
EDIT: этот скрипт всегда фокусируется на последнем сфокусированном окне, а не на велосипеде через окна в том порядке, в котором они были открыты.
EDIT 2: я изменил скрипт (получается, что wmctrl и xprop используют несколько разные форматы для отображения шестнадцатеричных чисел).
EDIT 3: имя приложения должно быть взято из 3-го столбца wmctrl -lx to избегать определенных конфликтов.