Я не доволен текущим состоянием переключения между окнами приложения.
Предположите, что у меня есть древовидные окна терминала с этими заголовками:
Переключение между этими тремя терминалами с ALT+TAB не является никакой забавой.
Я - быстрые десять, пальцы касаются печатающего устройства.
Я ищу способ переключиться непосредственно на окно. Я не хочу обременять глаза рассмотрением списка и выбором одной записи.
Пример: Если я хочу переключить на терминал с заголовком user@remotehost, я просто хочу ввести некоторый волшебный ключ и затем "пользователя" и не больше. Как все те хорошие автоматические полные исходные данные мы видим сегодня.
Я хочу сохранить кормушку окна по умолчанию, которая идет с человечностью.
Я знаю, что существует некоторый совершенно особый менеджер окон, который мог сделать это. Но я хочу использовать менеджер окон по умолчанию и возможно некоторый дополнительный плагин.
Учитывая недавний упадок рабочего стола Единицы, другая опция для рабочих столов неединицы (таких как новый Gnome по умолчанию*) состоит в том, чтобы использовать средство запуска приложения Kupfer, который имеет сменный список Окна, который позволяет переключаться между окнами путем введения их имени. Я просто протестировал с двумя окнами терминала, открытыми в различных папках и работавшем как ожидалось OP.
Учитывая, что Kupfer имеет намного больше функции, чем просто это, если Вы планируете использовать его только для переключения между окнами, я рекомендую выключить все другие нежелательные плагины, так, чтобы результаты списка Окна закончились на вершине и были применимы непосредственно.
*примечание - Gnome имеет некоторую ограниченную функциональность для переключения на открытое окно путем ввода. В обзоре операций (открытый, например, Супер ключ) можно ввести, например, Терминал для переключения на уже открытый терминал. Однако с версии 3.18 (который используется в качестве значения по умолчанию на моих 16.04 полях LTS) Вы не можете дифференцироваться между различными окнами того же приложения.Править: Можно даже переключиться на конкретные окна путем ввода, но это не столь удобно как в Единице, потому что это также показывает все другие результаты выше списка окна, таким образом, необходимо спуститься со стрелками много.
При использовании Единицы определенно используйте ответ в январе. Этот мог быть альтернативой для других менеджеров окон.
Сценарий ниже должен сделать в значительной степени точно, как Вы описываете:
Нажмите Return
и соответствующее окно появляется:
#!/usr/bin/env python3
import subprocess
import socket
machine_name = socket.gethostname()
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
w_list = get("wmctrl -l").splitlines()
w_data = [(w.split()[0], w[w.find(machine_name)+len(machine_name)+1:])for w in w_list]
windows = [it[1] for it in w_data if "_NET_WM_WINDOW_TYPE_NORMAL" in get("xprop -id "+it[0])]
l = "'"+("' '").join(windows)+"'"
cmd = "zenity --list --title='Window chooser' --column='Type one or more characters' "+l
try:
window = get(cmd).split("|")[-1].strip()
w_id = [item[0] for item in w_data if window in item[1]][0]
subprocess.Popen(["wmctrl", "-ia", w_id])
except:
pass
Потребности сценария wmctrl
быть установленным:
sudo apt-get install wmctrl
Затем:
window_switcher.py
Тестовый прогон это командой:
python3 /path/to/window_switcher.py
Если все хорошо работает, добавьте его к сочетанию клавиш: выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
python3 /path/to/window_switcher.py
В Единице с тех пор 14.04 можно совершить нападки Super+W
(распространение окна) и затем тип к поиску окно, он - имя или название программы.
, например, wmctrl -a 'Chromium'
, чтобы переключиться в окно с именем хрома
wmctrl -Fa 'Terminal - 12'
wmctrl -l
Утилита "rofi" позволяет отображать список открытых окон, который можно сузить, набрав части названия приложения и/или заголовка окна.
rofi можно установить командой sudo apt install rofi
.
Запустите rofi в "оконном" режиме командой
rofi -show window
Привяжите эту команду к горячей клавише.