Переключение между приложениями с помощью клавиатуры

Я не доволен текущим состоянием переключения между окнами приложений.

Представьте, что у меня есть оконные окна с этими заголовками:

local root @ localhost user @ remotehost

Переключение между этими тремя терминалами с помощью ALT + TAB не забавно.

Я быстро нажимаю на десять пальцев.

Я искал способ переключения непосредственно на окно.

Пример: Если я хочу переключиться на терминал с именем user @ remotehost, я просто хочу набрать некоторую магию ключ, а затем «пользователь» и не более.

Я хочу сохранить ящик для окна по умолчанию, который поставляется с ubuntu.

Я знаю, что есть очень специальный оконный менеджер, который мог бы сделай это. Но я хочу использовать диспетчер окон по умолчанию и, возможно, плагин расширения.

1
задан 12 August 2015 в 20:13

2 ответа

В Unity с 14.04 вы можете нажать Super+W (расширение окна), а затем ввести тип поиска по имени или имени программы.

5
ответ дан 23 May 2018 в 18:16
  • 1
    ОК. Только одно: расширение окна существовало намного раньше, чем это. Я использовал его в 13.04. – Sergiy Kolodyazhnyy 13 August 2015 в 01:39
  • 2
    Большой! У меня был этот вопрос на мой взгляд в течение долгого времени. Я просто никогда не спрашивал. Это была ошибка. Спасибо! – guettli 13 August 2015 в 08:15
  • 3
    +1 Хороший! Я не знал, что это сработало, набрав также :) – Jacob Vlijm 13 August 2015 в 08:23
  • 4
    @Serg Да, но функция type-to-search была добавлена ​​в 14.04 – jena 21 August 2015 в 22:05

Если вы не используете Unity ...

Если вы используете Unity, определенно используйте ответ jan. Это может быть альтернативой для других оконных менеджеров.

Сценарий, приведенный ниже, должен делать в точности так, как вы описываете:

Нажмите комбинацию клавиш Тип один или больше символов имени окна Нажмите 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

Как использовать

Нажмите клавишу

Затем:

Скопируйте сценарий в пустой файл, сохраните его как window_switcher.py Введите один или несколько символов имени окна [!d6 ] Если все работает нормально, добавьте его в комбинацию клавиш: выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Нажмите «+» и добавьте команду:
python3 /path/to/window_switcher.py
2
ответ дан 23 May 2018 в 18:16
  • 1
    Отличный сценарий, простой и отличный. Улучшение будет заключаться в том, чтобы найти нужное окно для фокусировки с использованием регулярного выражения – Diogo 22 September 2017 в 03:32

Другие вопросы по тегам:

Похожие вопросы: