После перенесенногоошибка в Redshift, я нашел отличную замену,Ирис.
Я поместил Iris
папку в свой home
каталог и добавил следующую команду в Startup Applications sh /home/arun/Iris/Iris.sh
.
Все это работает великолепно, но при запуске также запускается окно настроек GUI. Все, что мне действительно нужно, это маленькая иконка индикатора панели. Что-то вроде функции "Скрыть" в "Элементах входа" OS X.
Можно ли этого достичь?
решение1
Окно настроек Iris
Если мы закроем окно настроек Iris с помощью X
, то онопо-видимомузакрыто.
Если мы сделаем то же самое, но с помощью wmctrl
( wmctrl -ic <window_id>
), то окажется, что не толькоокнозакрыто, но приложение полное.
Мой вывод таков, что окно на самом деле незакрыто, нонеотображенныйкогда мы нажимаем X
.
Мы можем сделать то же самое с помощью xdotool
. С отредактированной версией этого ответа:Как запустить программу при запуске, свернув ее?, то мы можем выполнить запуск Iris
без появления окна настроек.
Запуск ирисабезокно настроек (скрипт)
В скрипте используются оба
wmctrl
вариантаxdotool
:sudo apt-get install wmctrl xdotool
Скопируйте скрипт ниже в пустой файл, сохраните его вв том же каталоге, что и ваш
Iris.sh
файл(поэтому они находятся вместе в одном каталоге), какstart_iris.py
.#!/usr/bin/env python3 import subprocess import time import sys import os command = os.path.dirname(sys.argv[0])+"/Iris.sh" subprocess.Popen(["/bin/bash", "-c", command]) def get(cmd): return subprocess.check_output(cmd).decode("utf-8").strip() t = 0 while t < 12: time.sleep(1) try: w_list = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Iris" in l] for w in w_list: check = [l for l in get(["xprop", "-id", w]).splitlines()\ if "WM_CLASS(STRING)" in l][0] if "Iris" in check: subprocess.Popen(["xdotool", "windowunmap", w]) break break except (IndexError, subprocess.CalledProcessError): pass t += 1
Теперь вместо исходной команды для запуска выполните следующую команду
Iris
:python3 /path/to/start_iris.py
Окно настроек больше не будет появляться!
Объяснение
- Сценарий рассматриваетсвой собственныйкаталог для файла
Iris.sh
и запускает его. - Затем он следит за созданием новых окон
WM_CLASS
Iris
(вашего окна настроек). Если он нашел целевое окно, онне отображаетокно с
xdotool
командой:xdotool windowunmap <window_id>
Примечания
Очевидно, что нажатие на
X
окно настроек также отменяет отображение окна.
По-видимому, это делается другим способом, чемxdotool
. Следствием этого является то, что вы не можете попасть в окно настроек (из меню индикатора), не перезапустивIris
.Однако вы упомянули, что обычно вам не нужно окно настроек.совсем.
Обратите внимание, что при запуске приложений GUI из Startup APplications (особенно когда это касается настроек экрана) вам может потребоваться встроить небольшой перерыв, чтобы все работало нормально. Если это не работает из Startup Applications, измените команду для добавления в Stratup Applications на:
/bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"