Как запускать программу свернутой

Я просто хочу, чтобы Telegram запускался, и я добавил его в автозагрузку приложений. Дело в том, что мне нужно, чтобы это было минимизировано. Любые команды?

Hossein Soltanloo 19 авг ’15 в 05:28 2015-08-19 05:28
2015-08-19 05:28

9 ответов

Запуск приложения свернут

Минимизированный запуск приложения требует двух команд:

  • запуск приложения
  • свернуть свое окно

Следовательно, команда или скрипт должны быть «умными»; вторая команда должна дождаться фактического появления окна приложения.

Общее решение для запуска приложения сведено к минимуму

Сценарий ниже делает это и может использоваться в качестве общего решения для запуска приложения в минимизированном виде. Просто запустите его в синтаксисе:

Сценарий

#!/usr/bin/env python3 import subprocess import sys import time subprocess.Popen([«/bin/bash», «-c», sys.argv[1]]) windowname = sys.argv[2] def read_wlist(w_name): try: l = subprocess.check_output([«wmctrl», «-l»]).decode(«utf-8»).splitlines() return [w.split()[0] for w in l if w_name in w][0] except (IndexError, subprocess.CalledProcessError): return None t = 0 while t < 30: window = read_wlist(windowname) time.sleep(0.1) if window != None: subprocess.Popen([«xdotool», «windowminimize», window]) break time.sleep(1) t += 1

Как пользоваться

Скрипт нуждается в обоих wmctrl а также xdotool :

ЗАПУСК ПРОГРАММ В СВЕРНУТОМ РЕЖИМЕ СКРИПТ


sudo apt-get install wmctrl xdotool

  1. Скопируйте скрипт в пустой файл, сохраните его как startup_minimizd.py
  2. Протестируйте скрипт с помощью (например) gedit команда:

python3 /path/to/startup_minimizd.py gedit gedit

объяснение

  • Сценарий запускает приложение, выполняя команду, которую вы дали в качестве первого аргумента.
  • Затем скрипт проверяет список окон (с помощью wmctrl ) для окон, названный в честь вашего второго аргумента.
  • Если окно появляется, оно немедленно сворачивается с помощью xdotool Чтобы предотвратить бесконечный цикл, если окно может не появиться по какой-либо причине, сценарий устанавливает ограничение времени 30 секунд для отображения окна.

Заметка

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

РЕДАКТИРОВАТЬ

узнав окно по пиду

Если заголовок окна является неопределенным или переменным, или существует риск столкновения имен в имени окна, используя pid это более надежный метод для использования.

Сценарий ниже основан на использовании pid приложения, как в выводе обоих wmctrl -lp а также ps -ef ,

Настройка почти такая же, но заголовок окна в этой версии не нужен, поэтому команда для его запуска:

python3 /path/to/startup_minimizd.py

Так же, как и первый скрипт wmctrl а также xdotool

Сценарий

#!/usr/bin/env python3 import subprocess import sys import time command = sys.argv[1] command_check = command.split(«/»)[-1] subprocess.Popen([«/bin/bash», «-c», command]) t = 1 while t < 30: try: w_list = [l.split() for l in subprocess.check_output([«wmctrl», «-lp»]).decode(«utf-8»).splitlines()] proc = subprocess.check_output([«pgrep», «-f», command_check]).decode(«utf-8»).strip().split() match = sum([[l[0] for l in w_list if p in l] for p in proc], []) subprocess.Popen([«xdotool», «windowminimize», match[0]]) break except (IndexError, subprocess.CalledProcessError): pass t += 1 time.sleep(1)

Обратите внимание на второй сценарий

Хотя в общем случае вторая версия должна быть более надежной, в случаях, когда приложение запускается сценарием-оболочкой, pid команды будет отличаться от приложения, которое окончательно вызывается.

Как запустить программу в свернутом виде при автозагрузке

В таких случаях я рекомендую использовать первый скрипт.

EDIT2 конкретная версия скрипта для Steam

Как указано в комментарии, ниже версия, специально сделанная для запуска STEAM, свернута.

Почему конкретная версия для Steam?

Оказывается Steam ведет себя совершенно иначе, чем «нормальное» приложение:

  • Оказывается Steam не запускается один пид, но не менее (в моем тесте) восемь!
  • Steam запускается при запуске как минимум с двумя окнами (одно окно, похожее на заставку), но иногда появляется дополнительное окно сообщений.
  • Окна Стима есть pid 0 , которая является проблемой в сценарии, как это было.
  • После того, как главное окно создано, оно поднимается второй раз через секунду или около того, поэтому минимизация не будет выполняться.
Читайте также:
Программа и план ревизии пример

Это исключительное поведение Steam запрашивает специальную версию скрипта, которая добавлена ​​ниже. Скрипт запускается Steam и в течение 12 секунд отслеживает все новые окна соответствующих WM_CLASS , проверяя, минимизированы ли они. Если нет, сценарий гарантирует, что они будут.

Как и оригинальный скрипт, этот нужен wmctrl а также xdotool быть установленным.

Сценарий

#!/usr/bin/env python3 import subprocess import time command = «steam» subprocess.Popen([«/bin/bash», «-c», command]) def get(cmd): return subprocess.check_output(cmd).decode(«utf-8»).strip() t = 0 while t < 12: try: w_list = [l.split()[0] for l in get([«wmctrl», «-l»]).splitlines()] for w in w_list: data = get([«xprop», «-id», w]) if all([«Steam» in data, not «_NET_WM_STATE_HIDDEN» in data]): subprocess.Popen([«xdotool», «windowminimize», w]) except (IndexError, subprocess.CalledProcessError): pass t += 1 time.sleep(1)

Использовать его

  • Просто скопируйте его в пустой файл, сохраните как runsteam_minimized.py
  • Запустите его командой:

python3 /path/to/runsteam_minimized.py
Jacob Vlijm 19 авг ’15 в 11:56 2015-08-19 11:56
2015-08-19 11:56

Хорошо иметь сценарии, предоставленные user72216 и Sergey, в качестве общих решений проблемы, но иногда приложение, которое вы хотите минимизировать при запуске, уже имеет переключатель, который будет делать то, что вы хотите.

Вот несколько примеров с соответствующими строками команд запуска программы:

  • Telegram (начиная с версии 0.7.10) имеет -startintray опция: /Telegram -startintray
  • Steam имеет -silent опция: /usr/bin/steam %U -silent
  • Коробка передач имеет —minimized опция: /usr/bin/transmission-gtk —minimized

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

Francis Chin 24 сен ’16 в 15:57 2016-09-24 15:57
2016-09-24 15:57

Мне нужно было, чтобы программы были закрыты в трей, а не свернуты, и я перепробовал все скрипты, которые выложены здесь, те, которые работали, работали только для одних программ, а не для других. Итак, я написал код, который работает намного лучше (вы почти не видите появления окна, только значок в трее, он выглядит нативно) и работает для всех программ, которые я пробовал. Он основан на Джейкобе. С этим сценарием вам может потребоваться добавить аргумент в зависимости от программы (см. Ниже), но он всегда работал для меня со многими программами, он также должен работать с Steam.

Использование:

  1. sudo apt-get install wmctrl xdotool
  2. Сохранить скрипт как startup_closed.py дать ему разрешение на выполнение, а затем выполнить python3 ./startup_closed.py -c
  3. Если значок на панели задач не отображается или окно не отображается, необходимо добавить один из следующих аргументов: -splash или же -hide , методом проб и ошибок. Например: python3 ./startup_closed.py -hide -c teamviewer или же python3 ./startup_closed.py -splash -c slack
  4. Есть больше аргументов, но вы, вероятно, не нуждаетесь в них. Также есть полная информация о том, когда и зачем нужны аргументы в справке: ./startup_closed.py —help

Авторсценария:

#!/usr/bin/env python3 import subprocess import sys import time import argparse import random parser = argparse.ArgumentParser(description=’This script executes a command you specify and closes or hides the window/s that opens from it, leaving only the tray icon. Useful to «open closed to tray» a program. If the program does not have a tray icon then it just gets closed.

There is no magic solution to achieve this that works for all the programs, so you may need to tweek a couple of arguments to make it work for your program, a couple of trial and error may be required with the arguments -splash and -hide, you probably will not need the others.’) parser.add_argument(«-c», type=str, help=»The command to open your program. This parameter is required.», required=True) parser.add_argument(«-splash», help=»Does not close the first screen detected. Closes the second window detected. Use in programs that opens an independent splash screen.

Читайте также:
Установить программу для сдачи отчетности в электронном виде

Otherwise the splash screen gets closed and the program cannot start.», action=’store_true’, default=False) parser.add_argument(«-hide», help=»Hides instead of closing, for you is the same but some programs needs this for the tray icon to appear.», action=’store_true’, default=False) parser.add_argument(«-skip», type=int, default=0, help=’Skips the ammount of windows specified. For example if you set -skip 2 then the first 2 windows that appear from the program will not be affected, use it in programs that opens multiple screens and not all must be closed. The -splash argument just increments by 1 this argument.’, required=False) parser.add_argument(«-repeat», type=int, default=1, help=’The amount of times the window will be closed or hidden. Default = 1. Use it for programs that opens multiple windows to be closed or hidden.’, required=False) parser.add_argument(«-delay», type=float, default=10, help=»Delay in seconds to wait before running the application, useful at boot to not choke the computer. Default = 10″, required=False) parser.add_argument(«-speed», type=float, default=0.02, help=»Delay in seconds to wait between closing attempts, multiple frequent attempts are required because the application may be still loading Default = 0.02″, required=False) args = parser.parse_args() if args.delay > 0: finalWaitTime = random.randint(args.delay, args.delay * 2); print(str(args.delay) + » seconds of delay configured, will wait for: » + str(finalWaitTime)) time.sleep(finalWaitTime) print(«waiting finished, running the application command. «) command_check = args.c.split(«/»)[-1] subprocess.Popen([«/bin/bash», «-c», args.c]) hasIndependentSplashScreen = args.splash onlyHide = args.hide skip = args.skip repeatAmmount = args.repeat speed = args.speed actionsPerformed = 0 lastWindowId = 0 if hasIndependentSplashScreen: skip += 1 while True: try: w_list = [l.split() for l in subprocess.check_output([«wmctrl», «-lp»]).decode(«utf-8»).splitlines()] proc = subprocess.check_output([«pgrep», «-f», command_check]).decode(«utf-8»).strip().split() match = sum([[l[0] for l in w_list if p in l] for p in proc], []) if len(match) > 0: windowId = match[0] if windowId != lastWindowId: if skip > 0: skip -= 1 print(«skipped window: » + windowId) lastWindowId = windowId else: print(«new window detected: » + windowId) if onlyHide: subprocess.Popen([«xdotool», «windowunmap», windowId]) print(«window was hidden: » + windowId) else: subprocess.Popen([«xdotool», «key», windowId, «alt+F4»]) print(«window was closed: » + windowId) actionsPerformed += 1 lastWindowId = windowId if actionsPerformed == repeatAmmount: break except (IndexError, subprocess.CalledProcessError): break time.sleep(speed) print(«finished»)

Источник: ask-ubuntu.ru

Как запустить приложение WinForm, свернутое в трей?

Я успешно создал приложение, которое сворачивается в лоток с помощью NotifyIcon. Когда форма закрывается вручную, она успешно скрывается с рабочего стола, панели задач и альтернативной вкладки. Проблема возникает при попытке запустить приложение в свернутом виде. Сначала проблема заключалась в том, что приложение было свернуто, но все равно отображалось в диалоговом окне alt-tab. Изменение FormBorderStyle на одну из опций ToolWindow (из опции «None») устранило это, но представило другую проблему. Когда приложение запускается в первый раз, строка заголовка свернутого окна видна прямо над стартовым меню:

Открытие и закрытие формы заставляет ее правильно скрываться. Я пробовал много вариантов, но вот как это работает сейчас .

WindowState имеет значение Minimized в конструкторе. После некоторой инициализации в конструкторе у меня появляются следующие строки:

this.Visible = false; this.ShowInTaskbar = false;

При двойном щелчке по NotifyIcon у меня появляется следующее:

this.WindowState = FormWindowState.Normal; this.Visible = true; this.ShowInTaskbar = true;

Как я уже сказал, я пробовал множество незначительных вариаций этого (this.Hide () и т. Д.). Есть ли способ сделать NotifyIcon основным компонентом, чтобы я мог полностью запускать и удалять форму, оставляя NotifyIcon работающим? Должен быть способ запустить приложение с минимизированной формой без каких-либо странностей. Пожалуйста, помогите мне его найти!

Источник: question-it.com

запуск приложения в свернутом виде windows 10

Добрый день уважаемые читатели блога pyatilistnik.org, сегодня хочу рассказать как настраивается автозагрузка программ в свернутом виде при загрузке Windows 10, Windows 8,1, чтобы программы автоматически запускались в свернутом виде при загрузке Windows 8.1 и тем самым не мешали, появляясь поверх рабочего стола. В данном примере мы будем работать с программой Outlook.

Читайте также:
Spr расширение какой программы

Нажимаем правой кнопкой мыши на ярлык программы, которую необходимо автоматически запускать при загрузке системы, затем выбираем “Копировать”.

Автозагрузка программ в свернутом виде при загрузке Windows 8.1-01

На клавиатуре нажимаем сочетание клавиш “Win” и “R”, затем вводим

и нажимаем на кнопку “OK”. Обратите внимание, если вы хотите, чтобы программа автоматически запускалась у всех пользователей, то необходимо ввести “C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp”.

Автозагрузка программ в свернутом виде при загрузке Windows 8.1-02

Нажимаем правой кнопкой мыши на свободном месте в папке и выбираем “Вставить”.

Автозагрузка программ в свернутом виде при загрузке Windows 8.1-03

Теперь указанная программа будет автоматически запускаться при загрузке системы, и окно программы будет появляться поверх рабочего стола Windows 8.1. Это не очень удобно, поэтому мы сделаем так, чтобы программа запускалась в свернутом виде.

Автозагрузка программ в свернутом виде при загрузке Windows 8.1-04

Выбираем нужный файл и нажимаем на нем правой кнопкой мыши, затем выбираем “Свойства”.

Автозагрузка программ в свернутом виде при загрузке Windows 8.1-05

Для того, чтобы программа “Outlook” запускалась в свернутом виде, необходимо в разделе “Окно” выбрать “Свернуть в значок”. Нажимаем на кнопку “OK”

Автозагрузка программ в свернутом виде при загрузке Windows 8.1-06

Теперь программа “Outlook” будет автоматически запускаться в свернутом виде при загрузке Windows 8.1 и тем самым не будет мешать, появляясь поверх рабочего стола. До новых встреч.

Как запустить нужную программу в Windows в свернутом виде?

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

Прекрасным примером такого рода программных продуктов служит известная утилита SnagIt, основное назначение которой — снимать скриншоты с экрана монитора.

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

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

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

На самом деле соответствующая опция в ОС Windows предусмотрена, притом как в самой новой ее версии, так и в нескольких предыдущих, то бишь не нужно ничего дополнительно скачивать и устанавливать.

Кстати, многие аксакалы Windows ее активно юзают не первый год. Хотя новичкам или юзерам, котороые об этой фиче не знают (в основном потому, что необходимость в ее использовании раньше никогда не возникала, а теперь возникла), она тоже может пригодится, так как позволяет настраивать форматы запуска отдельных программ в Windows.

Итак, чтобы в Windows определенная программа открывалась только в свернутом виде, сделать нужно следующее:

#1. находим ярлык этой программы (опция настраивается только через ярлык — это важно, если ярлыка еще нет, то его нужно создать) в меню «Пуск», в панели задач или на рабочем столе компа, кликаем по нему правой кнопкой мыши и в появившемся контекстном меню выбираем «Свойства» (в зависимости от версии ОС в меню сначала может не быть вкладки «Свойства», зато будет еще один такой же ярлык программы, тогда нужно еще раз кликнуть по нему ПКМ);

#2. в окне «Свойства» открываем вкладку «Ярлык«, в ней находим строку «Окно«, вместо «Обычный размер окна» выбираем «Свернутое в значок» и жмем «Применить«.

На этом все. При необходимости настройки ярлыка можно вернуть к исходному состоянию точно таким же методом.

Запуск приложений в свёрнутых окнах

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru