TL; DR внизу.
Я пытаюсь сделать простой экран блокировки для моего ноутбука с Arch / BSPWM. Я нашел программу с именем cmatrix, которая имеет флаг заставки, который заставляет ее завершать работу при нажатии клавиши. Я пытаюсь связать вместе команды bspc с cmatrix и vlock, чтобы создать строку, которая может быть запущена для запуска полноэкранного режима cmatrix, запуска vlock при нажатии клавиш, а затем выхода после выхода vlock.
Моя единственная проблема с этим состоит в том, что для того, чтобы экран блокировки был эффективным, мне нужно выйти из sxhkd, чтобы люди не могли просто закрыть окно, содержащее cmatrix/vlock. Я добавил pkill sxhkd в цепочку команд, и это работает. Сломанная часть снова запускает sxhkd. Простое добавление sxhkd в конец не работает, так как окно терминала не закроется, пока sxhkd не завершит работу, что никогда не происходит. Кроме того, если окно терминала закрыто, sxhkd останавливается, потому что он работал в нем.
Я попытался использовать "sxhkd &", но по какой-то причине это не работает.
Вот почти рабочая команда, которую я имею до сих пор:
urxvtc -e bash -c "sleep 0.1; pkill sxhkd; sleep 0.1; bspc window -t fullscreen=on; sleep 0.1; cmatrix -u 9 -s; sleep 0.1; vlock; sleep 0.1; sxhkd"
Команды sleep предназначены для того, чтобы программы не появлялись в неправильном порядке (иногда запрашивается пароль vlock перед запуском cmatrix)
В настоящее время он запускает новое окно urxvt (важно, если я хочу, чтобы мой терминальный шрифт для cmatrix), и он убивает sxhkd, чтобы никто не мог закрыть окно. Он полноэкранный, используя bspc и запускает cmatrix. Когда клавиша нажата, cmatrix завершает работу и появляется запрос пароля vlock. Когда пароль введен правильно, он пытается перезапустить sxhkd, но они остаются связанными.
Любая помощь будет принята с благодарностью!
TL; DR
Как я могу с помощью команды (обычно запускаемой из сценария) открыть окно терминала, в котором выполняются другие команды, затем запустить приложение (например, приложение графического интерфейса), затем окно терминала закрывается, но приложение графического интерфейса продолжает работать?
Более простые примеры команд:
urxvtc -e bash -c "echo hello!; sleep 3; pavucontrol"
Это должно напечатать привет !, подождите 3 секунды, затем запустите pavucontrol и закройте терминал, оставив pavucontrol. Вместо этого терминал остается открытым, потому что запущен pavucontrol.
urxvtc -e bash -c "echo hello!; sleep 3; pavucontrol &"
Это должно напечатать привет !, подождите 3 секунды, затем запустите pavucontrol и закройте терминал, оставив pavucontrol. Однако когда терминал закрывается через 3 секунды, pavucontrol нигде не видно.