У меня есть приложение, использующее несколько окон. Как я могу быстро вывести все окна этого приложения на передний план?
Когда я прокручиваю приложения с помощью колеса прокрутки, отображается только одно окно. При переходе к следующему окну последнее окно снова переносится на фон.
Когда я нажимаю на значок приложения, я получаю полноэкранный обзор всех окон. Я должен выбрать каждое окно вручную и несколько раз переместить мою мышь по половине экрана.
Мое лучшее решение на данный момент - сворачивание всех окон ( Ctrl+ Super+ D), а затем показывать окна моего приложения с помощью колеса прокрутки.
Есть ли лучшее решение?
Ответы:
РЕДАКТИРОВАТЬ-новый ответ-
Ответ (ы) ниже / все еще полностью действительны, и поэтому предложенные варианты. Тем не менее, постоянное понимание заставило меня добавить эту опцию, чтобы использовать индикатор ниже, что, вероятно, является наиболее элегантным решением.
Таким образом, он, вероятно, должен заменить опцию 5 (используя файл .desktop).
Просто выберите приложение из списка, и все окна соответствующего приложения (представленные в текущем окне просмотра) появятся:
Как пользоваться
из ppa:
... или вручную:
Индикатор нуждается
wmctrl
Скопируйте индикатор в пустой файл, сохраните его как
raise_apps.py
Скопируйте изображение ниже, сохраните его с точным именем
raise.png
в том же каталоге, что и индикатор.Затем просто запустите его командой:
python3 /path/to/raise_apps.py
Добавьте, если вы хотите запускать приложения:
СТАРЫЙ ОТВЕТ:
О вопросе
С правильными инструментами не очень сложно «просто» поднять все окна приложения. Немного сложнее убедиться, что подняты только окна текущего окна просмотра. Однако реальная задача - найти удобный способ сделать действие доступным для пользователя.
Ниже пять вариантов, чтобы позаботиться об этом, чтобы показать, как это можно сделать. Все варианты готовы к использованию. Последний вариант, однако, является экспериментальным; он работает нормально, но имеет несколько мелких косметических недостатков, как описано в описании опции. Я добавил это как концепцию .
Как показано в комментарии, автоматическое разбрасывание окон без наложения друг на друга кажется мне не практической идеей; если вы работаете в (с точки зрения приложения) групповой настройке окна, сценарий может нежелательно переставить окна.
Как пользоваться
Для всех вариантов вам необходимо:
установить,
wmctrl
если он еще не установлен в вашей системе:создайте, если он еще не существует, каталог:
(объяснение: каталог
~/bin
находится в $ PATH, поэтому вы можете запускать исполняемые файлы по их именам)Скопируйте скрипт, соответствующий опции, вставьте его в пустой файл, сохраните как
raise_app
(без расширения)~/bin
и сделайте его исполняемымВ отдельных опциях будут описаны возможные дополнительные шаги.
Вариант 1: выберите приложение, введя один или несколько символов
zenity
окноЭто заставит все окна соответствующего приложения (в текущем окне просмотра) выйти вперед.
поднять все
gnome-terminal
окна в текущем окне просмотра:Как использовать:
Протестируйте его командой:
Если все работает нормально, добавьте его в комбинацию клавиш по вашему выбору: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду
Сценарий:
Вариант 2: прокручивать приложения и поднимать их окна с помощью комбинации клавиш:
Допустим, у меня есть сценарий ниже под комбинацией клавиш Alt+ 1. У меня есть несколько открытых окон:
Текущее состояние:
Жму один раз Alt+ 1, все
nautilus
окна подняты:Жму снова Alt+ 1, все
firefox
окна подняты:Я нажимаю снова Alt+ 1, все
gnome-terminal
окна снова поднимаются, цикл начинается заново:Как пользоваться
Добавьте его к комбинации клавиш по вашему выбору: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду
Затем прокрутите свои приложения с помощью сгруппированных окон приложений с помощью комбинации клавиш.
Сценарий:
Вариант 3: нажмите комбинацию клавиш + щелкните значок запуска -или- окно приложения, чтобы поднять все окна в текущем окне просмотра
Вероятно, этот вариант наиболее близок к описанному в вопросе / комментарии.
Допустим, у меня грязный рабочий стол с тремя
nautilus
окнами под другими окнами.Чтобы поднять все окна nautilus (пример ярлыка: Alt+ 1):
В течение 3 секунд либо:
нажмите на значок приложения в панели запуска
или:
нажмите на одно из окон приложения
результат:
Как использовать:
Протестируйте его командой:
Если все работает нормально, добавьте его в комбинацию клавиш по вашему выбору: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду
Затем:
Нажмите комбинацию клавиш и в течение 3 секунд либо:
Сценарий
Вариант 4: комбинация клавиш вызывает список опций, показывающий количество окон на приложение в текущем окне просмотра
Этот оказался более удобным, чем я предполагал:
Нажатие (снова пример-) комбинации клавиш Alt+ 1вызывает
zenity
окно, в котором перечислены все приложения и количество их окон в текущем окне просмотра:Простое нажатие стрелок ▴или ▾приведет вас к правильному варианту. Нажмите Enterи все окна выбранного приложения будут подняты.
Как использовать:
Протестируйте его командой:
Если все работает нормально, добавьте его в комбинацию клавиш по вашему выбору: Выберите: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду
Сценарий
Вариант 5: поднять окна запущенных приложений с помощью значка запуска
Эта опция существует в виде значка запуска, с запущенными в данный момент приложениями в быстром списке. Выберите один, и все окна приложений будут подняты.
Панель запуска автоматически обновляется при изменении списка запущенных приложений (в текущем окне просмотра). Быстрый список показывает другой список в других окнах просмотра, где открываются окна других приложений (адаптация займет 1-2 секунды).
Как уже упоминалось, хотя и полностью функциональный, этот вариант является концепцией . У него есть несколько незначительных косметических недостатков, как есть. Самое важное:
Кроме того, настройка немного сложнее (хотя подробно объясняется ниже):
Как пользоваться
Ниже вы найдете:
два скрипта / иконка /
.desktop
файлraise_app
в~/bin
Сохраните значок ниже (щелкните правой кнопкой мыши, сохраните как) как
raise.png
Скопируйте
.desktop
файл в пустой файл, отредактируйте строкук реальному пути к значку (пути с пробелами между кавычками)
Сохраните его как
raise.desktop
в~/.local/share/applications
Перетащите
.desktop
файл в панель запуска, чтобы добавить егоupdate_apps
в~/bin
, сделать его исполняемым.Добавьте следующую команду в свои автозагрузки (Dash> Startup Applications> Add):
Первый скрипт
Второй сценарий
Файл .desktop
Краткое объяснение
Все вышеперечисленные решения используют
wmctrl
для создания списка окон, используяwmctrl -lpG
команду. Эта команда производит строки, похожие на:Эти строки включают в себя:
xrandr
)Идентификатор pid ищется в выходных данных,
ps -u <username>
чтобы получить «читабельную» идентификацию (имя) приложения.Таким образом, мы можем выделить окна для приложений. Впоследствии мы можем поднять окна данного приложения в
for
цикле с помощью командыwmctrl -ia
.В варианте 3
сценарий запускает 3-секундный цикл ожидания, используя
xprop -root
команду несколько раз, чтобы увидеть, есть ли какие-либо изменения в том, что находится в переднем окне; это произойдет, если пользователь щелкнет значок запуска, чтобы открыть окно приложения, или непосредственно щелкнет окно. Если это так, цикл while прерывает и ищет «новое» переднее приложение, а затем открывает все остальные окна этого приложения.источник
Option 2
сценария, когда окно приложения сфокусировано (оно не развернуто), и я щелкаю другое окно, которое видно «внизу», приложение ниже не получает фокус.Есть ярлык Super+, Wкоторый покажет экспо всех открытых в данный момент окон, хотя это будет включать и другие приложения. Это происходит по умолчанию и не требует каких-либо изменений, поэтому, возможно, это самый простой доступный вариант.
Помимо прочего, вы можете расположить окна в правой и левой частях экрана с помощью кнопок Ctrl+ Super+ Left/ Rightи переключаться между ними с помощью Alt + ~ (тильда, та, которая находится рядом с клавишей номер один).
источник
Если вы нажимаете Alt + Tab для циклического перемещения по приложениям и получаете одно с несколькими окнами, просто удерживайте нажатой клавишу alt, и примерно через 1 полную секунду значок будет заменен на представление всех окон для этого приложения.
Это может или не может быть то, что вы ищете, но это работает для меня и намного проще, поэтому я решил, что поделюсь этим вариантом!
источник
Я взял скрипт @ JacobVlijm Raise_apps.py и внес в него некоторые улучшения, в том числе сделав его более надежным.
В частности, я обнаружил, что через день или два сценарий @ JacobVlijm перестанет работать, и мне придется вручную перезапустить сценарий, чтобы он снова заработал. Оглядываясь назад, я думаю, что многочисленные обращения к xrandr в конечном итоге вызывают проблемы.
В любом случае, я адаптировал его код, увеличил частоту опроса с 5 секунд до 1 секунды, так как он все равно не потребляет много ресурсов процессора, и сделал его более устойчивым. Обычно я могу запустить его в течение нескольких дней / недель без проблем.
Одно предостережение: я вызываю xrandr только один раз во время запуска, чтобы получить размеры экрана. Поэтому, если вы измените разрешение экрана (например, с 1920x1080 на другое разрешение), вам, вероятно, понадобится вручную перезапустить rise-apps.py, чтобы он выбрал новое разрешение. Лично я никогда не меняю разрешение экрана, так что это не проблема для меня. Кроме того, у меня есть веские основания полагать, что слишком много вызовов xrandr были причиной того, что версия сценария @ JacobVlijm перестала работать через день или два, поэтому я настоятельно рекомендую не просто возвращать многочисленные вызовы xrandr обратно.
Кстати, вам нужно поместить изображение lift.png в каталог / usr / local / icons /. Или, если вы хотите поместить файл lift.png в другой каталог, внесите соответствующие изменения в скрипт, чтобы скрипт мог найти файл изображения.
Надеемся, что Ubuntu интегрирует этот тип функциональности «поднять все окна» в свою систему раньше, чем позже, поскольку это очень полезно:
источник