4

Я использую программу под названием easystroke для вызова команд из жестов мыши - обычно для запуска приложения. например, «гном-терминал». Если у меня уже открыто окно gnome-терминала, и я вызываю жест gnome-терминала, я хотел бы установить фокус на уже работающий экземпляр, а не создавать новый экземпляр, что, конечно, происходит сейчас. (На самом деле меня больше интересует это для ярлыка приложения Gmail Chrome и других более крупных приложений.)

Я очень новичок в Ubuntu и Linux в целом, но я надеялся, что могла бы быть изящная команда, которую я мог бы обернуть вокруг моей команды запуска, которая выдаст такое поведение. (Я представляю себе какую-то программу-хранитель списка одноэлементных приложений, которая использует мою командную строку, проверяет, есть ли она в списке, переносит фокус на запущенный процесс, если он есть (и если этот процесс еще выполняется), или порождает новый процесс, а затем добавляет его в свой список, используя командную строку в качестве ключа.)

4 ответа4

1

Сценарий оболочки, который использует pidof и wmctrl. Не знаете, как работает ваша программа жестов мыши - можете ли вы определить сценарий оболочки, который будет запускаться в результате жеста?

Если это так, то такой сценарий может использовать pidof, чтобы определить, запущена ли программа, и если это так, используйте wmctrl для ее активации, в противном случае запустите ее. По умолчанию pidof существует в Ubuntu, но вам придется добавить wmctrl самостоятельно. Найдите wmctrl в менеджере пакетов Synaptic.

1

xwit "имя программы" выведет окно на передний план по имени. Все, что в Linux может использовать исполняемый файл, может использовать #!Скрипт /bin /sh с включенными привилегиями выполнения. xwit также может перемещать указатель мыши, перемещать окно, изменять размер окна, давать список имен окон, соответствующих шаблону, получать уникальный идентификатор окна для определенного окна или закрывать окно ... все, что вы можете сделать с окном, которое вы можете сделать через xwit.

1

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

Usage: jumpapp [OPTION]... COMMAND [ARG]...

Jump to (focus) the first open window for an application, if it's running.
Otherwise, launch COMMAND (with opitonal ARGs) to start the application.

Внутреннее приложение jumpapp находит окна приложения двумя способами: 1) получает все запущенные pids для COMMAND и ищет окна с совпадающим _NET_WM_PID , и 2) ищет окна с WM_CLASS , совпадающим с COMMAND.

Если вы хотите попробовать его, его легко установить из исходного кода, или вы можете установить его из моего PPA:

sudo add-apt-repository ppa:mkropat/ppa
sudo apt-get update
sudo apt-get install jumpapp
0

Несколько лет назад я специально для этого создал небольшое приложение mcgr . Изначально он работал только с менеджером окон Metacity, но позже я адаптировал его для Gnome.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .