Я использую Debian с Gnome3, и я хотел бы знать, существует ли элегантный способ запуска одной программы при запуске другой.

Мой пример использования следующий: я использую keepass в качестве менеджера паролей и не хочу запускать его вручную, когда запускаю свой любимый веб-браузер (Iceweasel). Также Iceweasel автоматически запускается при входе в систему.

Сейчас я использую файлы рабочего стола для автоматического запуска Iceweasel и Keepass при входе в систему. Проблема в том, что keepass запускается до веб-браузера, я начинаю вводить свой пароль на Keepass, запускается Iceweasel и беру фокус, поэтому мне приходится возвращаться на Keepass, чтобы закончить вводить свой пароль, что не очень удобно.

Итак, мои главные допросы:

  • Имеет ли Gnome3 функцию автоматического запуска программы с графическим интерфейсом после запуска другой?
  • Если Gnome3 не предоставляет такую функцию, я должен создать сценарий оболочки для этого. И если так, как я могу это сделать? (Я знаком с базовыми сценариями оболочки, но я не знаю, как это сделать на самом деле)
  • Есть ли решение, кроме встроенной функции и скрипта Gnome3?

Несколько заметок по моему вопросу:

  • Я нашел похожий вопрос с использованием Windows, но ни один из них не использует Linux, а точнее Gnome.
  • Было бы замечательно, если бы решение работало с экземпляром Iceweasel, автоматически запускаемым при входе в систему, а также с другими экземплярами, которые я запустил бы позже после закрытия первого экземпляра.
  • РЕДАКТИРОВАТЬ Из-за моей конфигурации Vimperator у меня нет навигационной панели в моем Iceweasel. Это означает, что использовать плагины, такие как KeeFox , не так удобно, потому что у меня нет прямого доступа к значку плагина.

1 ответ1

1

Первый вопрос: Нет, вы не можете быть на 100% уверены, что ваша программа будет запущена в определенном порядке (и это не связано с GNOME). Процесс ставится в очередь, и каждый квант времени выбирается другим, который определяется процессором, и это зависит от настроек ядра (т. Е. Вашей ОС). Таким образом, вы можете использовать сценарий оболочки. Это не лучшее решение, мы выясним почему.

Для сценария оболочки основным подходом было бы вызвать keepass и Iceweasel, просто написав их имена в сценарии, но это не сработает

(Это не сработает, не используйте его)

#! /bin/bash
Keepass
Iceweasel

(Любая строка, начинающаяся с #, будет рассматриваться как комментарий. Строка, начинающаяся с #! Называется шебанг и имеет единственную цель - указать, какую оболочку использовать, но не беспокойтесь пока, если вы новичок в сценариях оболочки)

Это не будет работать, потому что оболочка будет ждать завершения первой программы, прежде чем работать со второй строкой.

Таким образом, вы должны указать оболочке, что не хотите ждать окончания одной программы для начала другой. Вы можете сделать это с помощью & после команды, например:

Keepass &

Использование этого просто позволяет вам продолжать использовать вашу оболочку.

Так что вы думаете, что можете сделать

#! /bin/bash
Keepass &
Iceweasel

Это будет работать, но не решит вашу проблему. Поскольку очень маловероятно, что любая из этих программ закодирована таким образом, что заставляет их отправлять сигнал, когда они полностью загружены, мы должны использовать подвох. Я только рекомендую это, поскольку это для вашего личного удобства, но помните, что использовать это для чего-либо на профессиональном или системном уровне очень плохо. Вы скажете компьютеру подождать несколько секунд, прежде чем запускать другую программу. Это делается с помощью команды сна . Например: sleep 10 заставит ваш скрипт ждать десять секунд

Так что ваш скрипт должен выглядеть так

#! /bin/bash
Keepass &
sleep 10
Iceweasel

Установите значение 10, чтобы у вас оставалось достаточно времени для ввода пароля, но имейте в виду, что использование режима сна для синхронизации очень плохо.

Затем вы можете указать своей системе запустить этот скрипт при входе в систему (не забудьте при необходимости изменить разрешения)

Наконец, я советую вам использовать плагин Iceweasel, так как он больше подходит для этого случая. На веб-сайте Keepass вы можете найти больше информации о KeeForm и KeeFox (и многих других плагинах, но эти, кажется, соответствуют вашим потребностям)(у меня нет прав размещать достаточно ссылок)

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