LINUX.ORG.RU

запуск и сворачивание программы по клику

 , ,


0

1

Есть программа, которая настраивает планшет XP-PEN. Преимущество последнего заключается в том, что он дешевле аналога от Wacom почти в два раза, но программу настройки нужно запускать _каждый_ раз после включения или просыпания компьютера.

Автозапуск то я освоил, так что просто выключение компьютера меня не пугает. Но почему перезапуск требуется после засыпания я не понимаю.

Среда: стандартная Ubuntu 18.04

Что хочется:

В первом приближении достаточно достаточно иконки на панели, которая запустит программу и свернёт её.

Во втором приближении хочется, чтобы при запуске проверялось, а не запущена ли программа уже и убивала её перед запуском новой копии. При этом скрывал программу с десктопа полностью (не показывал на панели её иконку — кстати, как эту иконку поменять?)

Какова польза от ЛОР была уже получена

Следуя треду: Графический планшет в UBUNTU. Автозагрузка драйвера я написал (весьма поверхностно понимая что делаю) юнит для целей автозапуска (~/.config/systemd/user/xppen.service):

[Unit]
Description=XPPen Image Creative
PartOf=graphical-session.target

[Service]
ExecStart=/Data/Archive/Hard/XP-PEN/AutoStart.sh
#Type=oneshot
Type=forking

[Install]
WantedBy=graphical-session.target
Alias=xppen.service
Запуск по команде:
systemctl --user status xppen.service
Убивать по команде stop я естественно не могу. Хотелось бы понять куда копать.

Для автосарта я добавил /etc/xdg/autostart/xppen.desktop

[Desktop Entry]
Comment=Graphics tablet driver
Exec=systemctl --user start xppen.service
Name[ru_RU]=XPPen
Name=XPPen
StartupNotify=true
Terminal=false
Type=Application
X-KDE-SubstituteUID=false

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

Собрат по несчастью планшету: aleksey183

Эксперт (?): mky

★★★★★

Последнее исправление: Evgueni (всего исправлений: 3)

Для автосарта я добавил /etc/xdg/autostart/xppen.desktop

Exec=systemctl --user start xppen.service

почему не сделать просто systemctl --user enable xppen.service? вместо добавления в autostart

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

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

Evgueni ★★★★★
() автор топика
Последнее исправление: Evgueni (всего исправлений: 2)
Ответ на: комментарий от eternal_sorrow

Сходи в этот тред Графический планшет в UBUNTU. Автозагрузка драйвера Там много чего понаписано. Сейчас мне убегать нужно. Приду — поизучаю вывод.

Evgueni ★★★★★
() автор топика
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

В любом случае спасибо за участие. Разбираться не хочется, но похоже придётся.

Evgueni ★★★★★
() автор топика

А зачем так все усложнять? Зачем эти сервисы системди? Тебе нужно просто запустить какую-то программу, если она уже запущена – кильнуть ее, так? У меня есть похожий скриптик:

$ cat `which focus-last_run`
#!/bin/sh

ps aux | grep -e "focus-last$" | awk '{ print $2 }' | xargs kill -9
focus-last

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

Im_not_a_robot ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

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

Evgueni ★★★★★
() автор топика
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от Evgueni

Гном3? У меня есть тоже несколько гуи-программ, которые в аутостарте и видеть их я не хочу. Я просто запускаю их на дальнем десктопе – например 6. В гноме (значит и убунте) есть встроенное расширение, которое позволяет автоматически раскидывать программы по воркспейсам – работает идеально.

Im_not_a_robot ★★★★★
()
Последнее исправление: Im_not_a_robot (всего исправлений: 1)
Ответ на: комментарий от Evgueni

По Гному не эксперт, но гуглится расширение ″Icon Hider Gnome Extension″.

Если у вас в сервисе ″Type=forking″, то, ИМХО, можно процесс убивать по имени через killall. Посмотреть один раз имя процесса в выводе ps axfuwww и вбить в скрипт. Всё одно у вас на планшете подразумевается одна пользовательская сессия — не более одного процесса настройки планшета.

Что касается запуска при выходе из сна, то, вроде как если у юнита:

[Unit]
After=suspend.target

[Istall]
WantedBy=multi-user.target sleep.target

то юнит будет запущен при выходе из сна, но это системный юнит, а вам нужно из окружения пользователя. И вырисовывается что-то большое — у пользвателя через автозапуск запущен скрипт, который слушает dbus, и ловит сигнал PrepareForSleep() https://serverfault.com/questions/573379/system-suspend-dbus-upower-signals-a... и запускает (перезапускает) программу настройки планшета.

И тут вам разбираться самому — работает ли у вас dbus, появляется ли этот сигнал (или его уже назвали по другому)...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.