- Как я могу запустить программу при запуске, свернуто?
- 6 ответов
- Запуск приложения свернут
- Общее решение для запуска приложения сведено к минимуму
- Как пользоваться
- объяснение
- Заметка
- РЕДАКТИРОВАТЬ
- узнав окно по пиду
- Сценарий
- Обратите внимание на второй сценарий
- EDIT2 конкретная версия скрипта для Steam
- Почему конкретная версия для Steam?
- Сценарий
- Использовать его
- Актуальные примеры
- Решение
- Как запустить программу в свернутом виде [Решено]
Как я могу запустить программу при запуске, свернуто?
Я просто хочу, чтобы Telegram запускался, и я добавил его в автозагрузку приложений. Дело в том, что мне нужно, чтобы это было минимизировано. Любые команды?
6 ответов
Запуск приложения свернут
Минимизированный запуск приложения требует двух команд:
- запуск приложения
- свернуть свое окно
Следовательно, команда или скрипт должны быть «умными»; вторая команда должна дождаться фактического появления окна приложения.
Общее решение для запуска приложения сведено к минимуму
Сценарий ниже делает это и может использоваться в качестве общего решения для запуска приложения в минимизированном виде. Просто запустите его в синтаксисе:
Как пользоваться
Скрипт нуждается в обоих wmctrl а также xdotool :
- Скопируйте скрипт в пустой файл, сохраните его как startup_minimizd.py
Протестируйте скрипт с помощью (например) gedit команда:
объяснение
- Сценарий запускает приложение, выполняя команду, которую вы дали в качестве первого аргумента.
- Затем скрипт проверяет список окон (с помощью wmctrl ) для окон, названный в честь вашего второго аргумента.
- Если окно появляется, оно немедленно сворачивается с помощью xdotool Чтобы предотвратить бесконечный цикл, если окно может не появиться по какой-либо причине, сценарий устанавливает ограничение времени 30 секунд для отображения окна.
Заметка
Не нужно упоминать, что вы можете использовать скрипт для нескольких приложений одновременно, так как вы запускаете его с аргументами вне скрипта.
РЕДАКТИРОВАТЬ
узнав окно по пиду
Если заголовок окна является неопределенным или переменным, или существует риск столкновения имен в имени окна, используя pid это более надежный метод для использования.
Сценарий ниже основан на использовании pid приложения, как в выводе обоих wmctrl -lp а также ps -ef ,
Настройка почти такая же, но заголовок окна в этой версии не нужен, поэтому команда для его запуска:
Так же, как и первый скрипт wmctrl а также xdotool
Сценарий
Обратите внимание на второй сценарий
Хотя в общем случае вторая версия должна быть более надежной, в случаях, когда приложение запускается сценарием-оболочкой, pid команды будет отличаться от приложения, которое окончательно вызывается.
В таких случаях я рекомендую использовать первый скрипт.
EDIT2 конкретная версия скрипта для Steam
Как указано в комментарии, ниже версия, специально сделанная для запуска STEAM, свернута.
Почему конкретная версия для Steam?
Оказывается Steam ведет себя совершенно иначе, чем «нормальное» приложение:
- Оказывается Steam не запускается один пид, но не менее (в моем тесте) восемь!
- Steam запускается при запуске как минимум с двумя окнами (одно окно, похожее на заставку), но иногда появляется дополнительное окно сообщений.
- Окна Стима есть pid 0 , которая является проблемой в сценарии, как это было.
- После того, как главное окно создано, оно поднимается второй раз через секунду или около того, поэтому минимизация не будет выполняться.
Это исключительное поведение Steam запрашивает специальную версию скрипта, которая добавлена ниже. Скрипт запускается Steam и в течение 12 секунд отслеживает все новые окна соответствующих WM_CLASS , проверяя, минимизированы ли они. Если нет, сценарий гарантирует, что они будут.
Как и оригинальный скрипт, этот нужен wmctrl а также xdotool быть установленным.
Сценарий
Использовать его
- Просто скопируйте его в пустой файл, сохраните как runsteam_minimized.py
Запустите его командой:
Хорошо иметь сценарии, предоставленные user72216 и Sergey, в качестве общих решений проблемы, но иногда приложение, которое вы хотите минимизировать при запуске, уже имеет переключатель, который будет делать то, что вы хотите.
Вот несколько примеров с соответствующими строками команд запуска программы:
- Telegram (начиная с версии 0.7.10) имеет -startintray опция:
/Telegram -startintray
В Unity эти приложения начинают сворачиваться в виде значков в верхней строке меню, а не значков на панели запуска, хотя значок обычного запуска все равно будет отображаться после запуска приложения. Другие приложения могут вести себя по-другому.
Если программа закрывается в трей, можно на самом деле захотеть закрыть окно программы при запуске, а не сворачивать его. Одним из примеров такой программы является Viber. В этом случае можно использовать следующий скрипт start_closed.sh :
Я взял сценарии Джейкоба и немного изменил их, чтобы сделать более универсальным.
- Программа устанавливает идентификатор группы (GID) для процесса. Таким образом, все дочерние процессы и их окна могут быть легко найдены
- Параметр xdotool —sync используется вместо цикла while
- Скрипт позволяет передавать аргументы программе
Значение WAIT_TIME должно быть достаточно большим, чтобы программа могла форкнуть свои дочерние процессы. На моем компьютере достаточно больших программ, таких как steam. Увеличьте его, если необходимо.
прибавление
xdotool вариант windowunmap может работать в стиле фанк с некоторыми приложениями и программами в трее (например, в linux mint’s tray), поэтому вот альтернативная версия скрипта для этих исключений.
Я просто занимался серфингом и столкнулся с этим вопросом, так что мне было просто интересно, какая у вас операционная система? Что касается меня, я использую UBUNTU BUDGIE 18.04 LTS, поэтому в этой операционной системе это очень просто.
Просто зайдите в меню
Из меню перейдите в настройки рабочего стола Budgie.
От настройки рабочего стола перейдите к автозапуску
Это даст вам 2 варианта, от «+» добавить
1. Добавить приложение
2. Добавить команду
При выборе » Добавить приложение» будут перечислены все приложения, выберите любое приложение, которое вы хотите, и оно запустится при запуске компьютера, а также будет свернуто.
Мне нужно было, чтобы программы были закрыты в трей, а не свернуты, и я перепробовал все скрипты, которые выложены здесь, те, которые работали, работали только для одних программ, а не для других. Итак, я написал код, который работает намного лучше (вы почти не видите появления окна, только значок в трее, он выглядит нативно) и работает для всех программ, которые я пробовал. Он основан на Джейкобе. С этим сценарием вам может потребоваться добавить аргумент в зависимости от программы (см. Ниже), но он всегда работал для меня со многими программами, он также должен работать с Steam.
Использование:
- sudo apt-get install wmctrl xdotool
- Сохранить скрипт как startup_closed.py дать ему разрешение на выполнение, а затем выполнить python3 ./startup_closed.py -c
- Если значок на панели задач не отображается или окно не отображается, необходимо добавить один из следующих аргументов: -splash или же -hide , методом проб и ошибок. Например: python3 ./startup_closed.py -hide -c teamviewer или же python3 ./startup_closed.py -splash -c slack
- Есть больше аргументов, но вы, вероятно, не нуждаетесь в них. Также есть полная информация о том, когда и зачем нужны аргументы в справке: ./startup_closed.py —help
Авторсценария:
Я пришел с довольно элегантным решением, которое опирается исключительно на xdotool и это весьма полезно для приложений, которые не имеют аргумента «минимизировать начало», таких как Telegram.
Единственным недостатком является то, что решение должно быть вручную создано для каждого приложения, но при условии, что это не проблема (например: если вы хотите автоматически запустить определенное приложение, не позволяя ему загрязнять экран после входа в систему), это намного проще и понятнее.,
Актуальные примеры
Решение
На первый взгляд, вы можете подумать, что лучше использовать PID или класс процесса для сопоставления, однако это на самом деле контрпродуктивно, поскольку вы часто получаете несколько результатов для одного и того же PID. Примерами являются окно 0x0, которое на самом деле ожидает уведомления, значок системного окна или любое другое «скрытое» окно.
Решением является создание команды xdotool, которая всегда возвращает только одно уникальное окно. В обоих моих примерах это было сделано с помощью —name Однако вы можете комбинировать несколько селекторов с —all (например: сопоставить заданное имя класса + имя класса + регулярное выражение имени). Обычно хороший —name регулярное выражение делает свое дело.
После создания вашего search просто создайте экземпляр xdotool (отсоединенный от оболочки) с помощью —sync параметр и ваши условия, а затем windowclose , Запустите ваше приложение потом:
Проверять, выписываться xdotool search —help для всех возможных комбинаций вы можете настроить таргетинг на нужное окно. Иногда это становится сложным, и вам приходится комбинировать несколько условий, но, как только вы закончите, он редко будет терпеть неудачу (если, конечно, обновление не изменит приложение и не нарушит вашу реализацию, конечно).
Источник
Как запустить программу в свернутом виде [Решено]
У меня в автозагрузке есть 2 программы Akregator и Psensor. Как сделать чтобы они запускались в свернутом виде?
В Psensor: в параметрах на первой вкладке «Внешний вид».
На заголовке окна программы кликнуть правой кнопкой мыши — More Actions — Special Application Settings (или Special Window Settings) — вкладка Size & Position — галочка Minimized / Forse /Yes.
По русски не знаю как будет.
Ему же в трей надо сворачивать, как я понимаю. А простое минимизирование свернет на панель и все.
Ну все равно полезная информация )) Мне все больше и больше нравится kubuntu =)
А проблема решилась очень просто =) В справке «akregator —help» русским языком было написано
«—hide-mainwindow Не показывать основное окно при запуске приложения» =)
Спасибо =) Я правда нашел еще один способ запуск с ключом akregator —hide-mainwindow =)
Параметры системы, Автозапуск, выбрать приложение, справа кнопка «Свойства. «, вкладка Приложение, кнопка «Дополнительные параметры», галка «Разместить в системном лотке».
Офигенный ход!
Да, мне до Мака срать-та-срать :0))
А вот это не нужно)) Кстати, я сам узнал перед написанием предыдущего поста =)
Источник