LINUX.ORG.RU

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


0

1

Очень часто, люди не имеющие практики с Линукс, запускают по несколько раз одно и то же приложение. Просто в момент запуска например Либре, нигде нет уведомления что запуск уже происходит. И тычут и тычут по значку. Оно потом открывает и открывает каждую копию программы. Это очень ужасно, когда дело касается игр.

Можно ли как-то заблокировать запуск программ если запуск уже производится. Например если запустилось, то 2-4 сек не позволять запускать программу повторно.

Или может стороннее что нить впихнуть, чтобы на центру экрана было, что «Производится запуск приложения, погдождите Вы пару сек.»

Спасибо.

★★

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

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

Ну тогда придется запускать программу нажимая на этот скрипт. Получится, что для каждого приложения скрипт писать. В принципе это на деле и щас так. (почти так) А вот хотелось бы что-то поуниверсальнее

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

flock

Что за изврат? Лучше пробежаться по окошками и выяснить: нет ли совпадений по, скажем, classname.

anonymous
()
Ответ на: комментарий от dimon555

а пробегаться по икс окнам, вот это изврат

Почему именно?

anonymous
()
Ответ на: комментарий от abbat81

Получится, что для каждого приложения скрипт писать

можно написать скрипт, который по всем (ну или можно где-нибудь прописать исключения ) desktop-файлам, которые есть в меню, сгенерирует новые. Если делать правильно - для каждого пункта в меню нужно запрещать старый desktop-файл, а если быстро (хотя тоже будет работать) - просто sed-ом сменить на месте строчку с Exec

например из

Exec=qmmp %F

сделать

Exec=wrapper.sh qmmp %F

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

lazyklimm ★★★★★
()
$ cat ~/bin/firefox 

#!/bin/sh
PATH=/bin:/usr/bin

  # запущена ли уже программа 
  # если запущена, то CMD='wmctrl -a "Iceweasel"'
CMD=`xlsclients -l | awk '$1 == "Name:" {n=$0; sub(" *Name: *", "", n)}; $1 == "Command:" && $2 == "firefox-bin" {print "wmctrl -a \""n"\""}'`

if [ -z "$CMD" ]; then
   # не запущена
        iceweasel "$@"
else
  # переключить фокус на запущенный экземпляр
        echo $CMD | $SHELL
fi
sdio ★★★★★
()
Ответ на: комментарий от sdio

Извиняюсь за тупой вопрос. Что с кодом сделать? Вставить в файл, сохранить, сделать запускательным. Дальше как?

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