Как запустить приложение из терминала в текущем графическом сеансе?

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

Предыстория простая, есть скрипт на python, который если запустить просто находясь в среде из терминала, стартуется и работает.
Задача в том что бы запустить его с веб сервера, который стоит на этой же машине, просто через exec() выполняется команда запуска, в этом случае он падает с ошибкой на Open_gl
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@rPman
в окружении, в котором запускаешь приложение должна быть определена переменная DISPLAY, ее значение можешь смотреть в терминале, запущенном из графического окружения, скорее всего это будет :0
Однократно можно это использовать так:
DISPLAY=:0.0 xclock

Так же пользователю, если он отличен от того, для которого запущено графическое окружение, необходимо выдать права на подключение к xserver, это делается xhost (еще есть xauth):
xhost +local:root
Даст права root авторизованного локально работать с графической оболочкой.

Если подключаешься удаленно с помощью ssh можно указать ключ -Y и тогда все будет настроено автоматически (это могут отключать в настройках sshd.conf), т.е. имеется в виду из терминала, запущенного в графической оболочке xserver (например xwin идущий с пакетом cygwin для windows) подключаешься к удаленному серверу ssh -Y user@server и запускаешь там приложения, окна которого будут отображаться локально. Не очень эффективный метод, но будет работать даже 3d графика (если локальный сервер умеет). Эффективнее использовать x2go для таких вещей.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы