Есть ли способ открывать окна из панели окон с помощью сочетания клавиш? Например, чтобы открыть первое окно слева, нажмите Ctrl+1, чтобы открыть второе окно слева, нажмите Ctrl+2.
В данный момент я использую xfce4, но если в xfce4 это невозможно, есть ли какая-то другая среда рабочего стола, которая это позволяет?
Поскольку у меня открыто несколько окон для одного и того же приложения, я ищу не сортировки, относящиеся к приложению, а, как я скажу ниже, к окну.
решение1
С помощью небольшого скрипта и небольшой операции в вашей системе все можно организовать именно так, как вы описываете.
Ингредиенты
wmctrl
; возможно, его необходимо установить.- Сценарий ниже
xprop
, чтобы получить свойства окна. Это уже установлено в вашей системе.- Изменения настроек в настройках панели xfce
- Дополнительные сочетания клавиш
Как настроить
Установить
wmctrl
:sudo apt-get install wmctrl
Создайте каталог
~/bin
(/home/<yourname>/bin
). Скопируйте скрипт ниже в пустой файл, сохраните его какpanel_navigate
(без расширения) в~/bin
исделать его исполняемым.Измените настройки панели:
перейдите в Диспетчер настроек > «Панель» > «Элементы» (вкладка) > «Кнопки окон» >- «Порядок сортировки» > Выберите:Временная метка
- «Группировка окон» > Выберите: «Никогда»
- Убедитесь, что «Показывать окна со всех рабочих пространств или видовых экранов» включено.ООНотмечено галочкой
- «Порядок сортировки» > Выберите:Временная метка
Добавьте сочетания клавиш:
перейдите в Диспетчер настроек > «Клавиатура» > «Сочетания клавиш приложений», выберите «Добавить». Добавьте команду:panel_navigate 1
Установите его на комбинацию клавиш Ctrl+1
Теперь вы можете выбрать:
- повторить эту процедуру, чтобы добавить
panel_navigate 2
под Ctrl+ 2и так далее (до 9)
(сохранить вариант)или(если вы не боитесь редактировать файлы конфигурации вручную):
Вы можете редактировать файл:
~/.config/xfce4/xfconf/xfce-perchanel-xml/xfce4-keyboard-shortcuts.xml
xfce
в котором хранятся сочетания клавиш (в ). Откройте файл с помощьюmousepad
и найдите строку типа:<property name="<Primary>1" type="string" value="panel_navigate 1"/>
Скопируйте строку, вставьте ее в следующую строку (вставка) и измените оба вхождения 1 на 2, чтобы получить:
<property name="<Primary>1" type="string" value="panel_navigate 1"/> <property name="<Primary>2" type="string" value="panel_navigate 2"/>
и так далее..
Убедитесь, что отступ точно такой же. Повторите процедуру до 9.
- повторить эту процедуру, чтобы добавить
Выйдите из системы и войдите снова, и это должно заработать:
Ctrl+1
Ctrl+3
И так далее...
Сценарий
#!/usr/bin/env python3
import subprocess
import sys
def get_value(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.Popen(["/bin/bash", "-c", command])
current_workspace = [l for l in get_value("wmctrl -d").splitlines() if l.split(" ")[2] == "*"][0][0]
wlist_ids = [item.split()[0:4] for item in get_value("wmctrl -l").splitlines()]
relevant = [item for item in wlist_ids if item[1] == current_workspace]
panel = []
for item in relevant:
data = get_value("xprop -id "+item[0])
if ("_TYPE_NORMAL" in data, "TYPE_DIALOG" in data).count(True) == 1:
panel.append(item)
try:
window = panel[int(sys.argv[1])-1][0]
run_command("wmctrl -ia "+window)
except IndexError:
pass
Объяснение
Решение является оппортунистическим. Мне пришло в голову, что список окон, вызываемый командой wmcrl -l
, упорядочен по возрасту окон. Заставив панель xfce сделать то же самое (настройки), оба порядка идеально соответствуют друг другу. Скрипт создает список окон, отфильтровывая «реальные», видимые окна (с помощью xprop
) и переключается на выбранное окно командой panel_navigate
, с номером окна (слева направо) в качестве аргумента.
Проблемы
Я заметил одно исключение: окна IDLE (интерпретатор Python) имеют pid 0 и их свойства не могут быть «исследованы» с помощью xprop
. Окна не отображаются в списке окон и пропускаются скриптом.
Примечание
Хотя сочетание клавиш Ctrl+ <number>
не вызвало никаких ошибок при тестировании, оно может конфликтовать с некоторыми приложениями. Возможно, безопаснее выбрать (например)
Ctrl+ Alt+1
решение2
Не уверен для того же приложения, но в Unity
вы можете переключать приложения с помощью super+number
, например, super + 1
= первый элемент на панели запуска, super + 2
= второй элемент панели запуска, super + n
= n-ный элемент панели запуска. Это также помогает открыть любой элемент, размещенный на панели запуска, например, если nautilus является первым элементом панели запуска, super + 1
откроется файловый менеджер nautilus.