Все-же alt+tab иногда хороший инструмент.
Он прекрасно ложиться на паттерн “быстро свитчимся между двумя окнами”.
Возможно неплохо работал-бы и на большем количестве окон, но так как нету никакой возможности удобно поменять порядок переключения окон, больше чем для пары, приходиться много тыкать в кнопки. Это что-то сродни
алгоритму маляра Шлемиэля.
Тем более плохо, когда эти бесполезные дополнительные нажатия вылезают даже при переключении между двумя приложениями.
Звучит странно, но действительно - нужно переключиться на предыдущее активное приложение, но в нём сейчас активен попап - который мне и нужен.
Дальше всё сильно зависит от конкретной реализации. Кто-то поднимет поап, но не поднимет родителя, кто-то поднимет родителя (и соответственно попап), но отдаст фокус родителю. Вариантов много - большинство совсем бестолковые.
Хороший альттаб (фастсвитч?) не должен делать различия между попапом и его родительским окном, считая их за единое целое. И должен отдавать фокус попапу.
И ещё о переключении.
Недавно прикрутил себе вывод в заголовок терминала и скрина текущий хост, юзера, путь и команду - если что-то выполняется.
Сразу вылезли два бага:
Во первых не очень интересно наблюдать тайтлы вроде “kleptos@ep:~ fg”, ещё надо будет вкурить как на момент запуска preexec() узнать какой именно job вытягивается в foreground.
Во вторых - оказывается
Инкрементальный поиск окон тоже может делать совсем не то, что от него ожидаешь.
Например дёргаем из консоли gliv. Получаем два окна, сам глив с заголовком “GLiv - 2007-11-20-222255_1024x768_scrot.png” и терминал с “kleptos@ep:~ gliv .”.
При глупом strstr() поиске есть хороший шанс неглядя написав gliv попасть в терминал, что совсем не то, чего хотелось.
Думаю хороший iswitch должен учитывать wm_class с приоритетом над (_net_)?wm_title.
Интересно, а выделение болдом совпавшей части и превьюхи нужны? нет?