Запуск программы в оконном менеджере

Запуск программы в оконном менеджере

Есть ли способ запустить программу из терминала, который не является «потомком» оконного менеджера (например, XFCE), в оконном менеджере?

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

Примером может служить подключение по ssh (без x-forward или чего-то подобного) к серверу, запуск браузера, закрытие соединения. Сидя перед сервером и используя недавно открытый браузер, который все еще работает, отсоединился от моего сеанса ssh с новым «владельцем» оконного менеджера.

решение1

Обычные методы отсоединения процесса от оболочки:

  • запустить в фоновом режиме с помощью &, а затем попросить оболочку прекратить отслеживать его с помощью disown:

    $ xterm &
    $ disown
    

    (или xterm & disown)

  • запустите в фоновом режиме с помощью &и используйте nohupинструмент, чтобы предотвратить его завершение:

    $ nohup xterm &
    
  • запустите в фоновом режиме с помощью &, и используйте double-fork, чтобы оболочка не могла его отслеживать:

    $ (xterm &)
    
  • запустить в фоновом режиме с помощью setsid:

    $ setsid xterm
    

(Попробуйте (setsid xterm &), если некоторые варианты не работают.)

решение2

xterm -e "bash -c \"./script.sh; exec bash\"" &

где ./script.shможет быть только команда.

решение3

Войдите в систему, на которой запущен X-сервер, с помощью SSH и выполните:

DISPLAY=:0 xterm &

На вашем X-дисплее должен появиться xterm, и он должен оставаться открытым даже после закрытия сеанса SSH.

Приложения X11 используют DISPLAYпеременную среды для поиска X-сервера; типичное значение — :0, что означает, что приложения X11 должны подключаться к локальному X-серверу через сокет домена Unix /tmp/X11-unix/X0.

Приложения, запущенные из сеанса X, наследуют DISPLAYпеременную среды, которая указывает на сервер X, но процессы, запущенные вне сеанса X (например, вход по SSH), не будут иметь этой переменной. Вот почему вам придется явно задать ее при запуске приложения X11 из входа по SSH.

Связанный контент