Почему нельзя сделать ограничение на запуск одного приложения? #339

Open
opened 1 month ago by rodion.n · 19 comments
Collaborator

Сейчас возможно включить 2 окна установки системы, и одно из окон будет выдавать ошибку но дублировать то что происходит на рабочем окне. Спрашивается. Зачем это нужно?
image

Сейчас возможно включить 2 окна установки системы, и одно из окон будет выдавать ошибку но дублировать то что происходит на рабочем окне. Спрашивается. Зачем это нужно? ![image](/attachments/fb2d80a1-b934-447e-b7b8-252ef100e5d6)
asmeron was assigned by rodion.n 1 month ago
rodion.n self-assigned this 1 month ago
YanTheKaller was assigned by rodion.n 1 month ago
Collaborator

если у тебя есть понимание как это сделать я с радостью тебя выслушаю

если у тебя есть понимание как это сделать я с радостью тебя выслушаю
Poster
Collaborator

Могу предположить такой алгоритм:

  1. получить список https://docs.gtk.org/gtk3/method.Application.get_windows.html открытых окон этого приложения записав их в GList
  2. Передаем интовую переменную Статус из команды g_application_run https://docs.gtk.org/gio/method.Application.run.html
  3. и в случае если if (windows != NULL) то возвращаем диалоговое окно с уведомлением что окно уже открыто.

Если где-то ошибаюсь то извиняйте

Могу предположить такой алгоритм: 1. получить список https://docs.gtk.org/gtk3/method.Application.get_windows.html открытых окон этого приложения записав их в GList 2. Передаем интовую переменную Статус из команды g_application_run https://docs.gtk.org/gio/method.Application.run.html 3. и в случае если if (windows != NULL) то возвращаем диалоговое окно с уведомлением что окно уже открыто. Если где-то ошибаюсь то извиняйте
Collaborator

проблема в том что я не использую GtkApplication ни в одной утилите

проблема в том что я не использую GtkApplication ни в одной утилите
Owner

Выполнить

command -v wmctrl &>/dev/null && command -v xdotool &>/dev/null && UBLPID=$(pidof ubinstall-gtk) && wmctrl -i -a $(xdotool search --pid ${UBLPID} | tail -1)

ubinstall-gtk имя приложения подставить
если истина, то приложение станет активным, закончить открытие окна
иначе открыть окно установщика

Выполнить ``` command -v wmctrl &>/dev/null && command -v xdotool &>/dev/null && UBLPID=$(pidof ubinstall-gtk) && wmctrl -i -a $(xdotool search --pid ${UBLPID} | tail -1) ``` `ubinstall-gtk` имя приложения подставить если истина, то приложение станет активным, закончить открытие окна иначе открыть окно установщика
Collaborator

и при попытке получить GtkApplication, возвращается NULL.
Да и в описании функции прямым текстом написано что возвращаются окна, связанные с конкретным GtkApplication, а не со всеми запущенными инстанциями утилиты

и при попытке получить GtkApplication, возвращается NULL. Да и в описании функции прямым текстом написано что возвращаются окна, связанные с конкретным GtkApplication, а не со всеми запущенными инстанциями утилиты
Collaborator

Тем не менее я понял как это сделать через гтк

Тем не менее я понял как это сделать через гтк
Collaborator
https://gitea.ublinux.ru/YanTheKaller/ubinstall-gtk/commit/d6de60e97571e57c561a35f2e93c0c8472a95e66
Poster
Collaborator

Хотите 3. Забирайте.
image

Хотите 4. Бог с ним тоже
image

Но один лишь должен остаться

Хотите 3. Забирайте. ![image](/attachments/496073f0-2505-411a-bfd4-98c8f70d4d79) Хотите 4. Бог с ним тоже ![image](/attachments/3d413e4e-63ca-4965-a1d4-1d895914e2fa) Но один лишь должен остаться
178 KiB
237 KiB
Owner

Теоретически 3и подряд установки можно выполнять, только лог у всех трёх будет один.
Может быть не стоит запрещать несколько установок запускать.
Могу разбить ЛОГ для каждой установки что-бы был отдельно.

Теоретически 3и подряд установки можно выполнять, только лог у всех трёх будет один. Может быть не стоит запрещать несколько установок запускать. Могу разбить ЛОГ для каждой установки что-бы был отдельно.
Owner

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

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

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

фиг пойми как она работает, эта проверка за уникальность приложения. От пользователя работает нормально, через pkexec и sudo не работает
Owner

Цель команды, найти утановщик и его окно и сделать его активным.
Для pkexec и sudo нужно передавать дисплей и пользователя реального. Если запускать от sudo, то так sudo -E.

Если ты хочешь проверку сделать внутри установщика, то запускай

pidof ubinstall-gtk

Если возврат более 1 пида, то установщик запущен второй раз.

Цель команды, найти утановщик и его окно и сделать его активным. Для `pkexec` и `sudo` нужно передавать дисплей и пользователя реального. Если запускать от `sudo`, то так `sudo -E`. Если ты хочешь проверку сделать внутри установщика, то запускай ``` pidof ubinstall-gtk ``` Если возврат более 1 пида, то установщик запущен второй раз.
Collaborator

image

![image](/attachments/279ac3e6-c9df-4b5d-af57-4c9781ab7c75)
Owner

Делай через pidof ubinstall-gtk как выше написал, простая проверка.

Делай через `pidof ubinstall-gtk` как выше написал, простая проверка.
Collaborator

вот я про неё и пишу

вот я про неё и пишу
Owner

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

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

я вижу что он возвращает 0 в статус если установщик запущен и 1 если не запущен без различий с 1 или 2 инстанциями

я вижу что он возвращает 0 в статус если установщик запущен и 1 если не запущен без различий с 1 или 2 инстанциями
Poster
Collaborator

Что по итогу по этой задаче?

Что по итогу по этой задаче?
Collaborator

Я стёр всё что делал, почему - писал выше

Я стёр всё что делал, почему - писал выше
Sign in to join this conversation.
No Milestone
No project
3 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: Applications/ubinstall-gtk#339
Loading…
There is no content yet.