Есть ли способ открыть окна из панели Windows с помощью ярлыка? например, чтобы открыть первое окно слева Ctrl + 1, чтобы открыть второе окно слева Ctrl + 2.
В данный момент я использую xfce4, но если в xfce4 это невозможно, есть ли другая среда рабочего стола, позволяющая это?
Поскольку у меня открыто несколько окон для одного и того же приложения, я не ищу команды сортировки, связанные с приложение, но, как я говорю ниже, в окно.
С помощью небольшого скрипта и небольшой операции в вашей системе все можно организовать в точности так, как вы описываете.
wmctrl
; возможно, его необходимо установить. xprop
, чтобы получить свойства окна. Он уже установлен в вашей системе. Установить wmctrl
:
sudo apt-get install wmctrl
Создайте каталог ~ / bin
( / home / <ваше имя> / 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
). Откройте файл с помощью коврика для мыши
и найдите строку вроде:
Скопируйте строку, вставьте ее в следующую строку (вставьте) и замените оба вхождения 1 на 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 + <число>
не вызывала никаких ошибок, пока тестирование, оно может конфликтовать с некоторыми приложениями. Может быть безопаснее выбрать (например,)
Ctrl + Alt + 1
Не уверен для того же приложения , но в Unity
вы можете переключать приложения с помощью super + number
, например, super + 1
= первый элемент на панели запуска, super + 2
= второй элемент программы запуска, super + n
= n-й элемент программы запуска. Это также помогает открыть любой элемент, размещенный на панели запуска, например, если наутилус является первым элементом средства запуска, super + 1
откроет файловый менеджер наутилуса.