Любой способ открыть окна из панели Windows с помощью сочетания клавиш

Любой способ открыть окна из панели Windows с помощью сочетания клавиш

Есть ли способ открывать окна из панели окон с помощью сочетания клавиш? Например, чтобы открыть первое окно слева, нажмите Ctrl+1, чтобы открыть второе окно слева, нажмите Ctrl+2.

В данный момент я использую xfce4, но если в xfce4 это невозможно, есть ли какая-то другая среда рабочего стола, которая это позволяет?

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

решение1

С помощью небольшого скрипта и небольшой операции в вашей системе все можно организовать именно так, как вы описываете.

Ингредиенты

  1. wmctrl; возможно, его необходимо установить.
  2. Сценарий ниже
  3. xprop, чтобы получить свойства окна. Это уже установлено в вашей системе.
  4. Изменения настроек в настройках панели xfce
  5. Дополнительные сочетания клавиш

Как настроить

  • Установить 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="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      

      Скопируйте строку, вставьте ее в следующую строку (вставка) и измените оба вхождения 1 на 2, чтобы получить:

      <property name="&lt;Primary&gt;1" type="string" value="panel_navigate 1"/>
      <property name="&lt;Primary&gt;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.

Связанный контент