Чтобы открыть окно в X11, системе Windows Linux и других, вы должны указать отображение.Обычно это определяется в переменной окружения DISPLAY.В моем случае он установлен на «: 0.0».Если эта переменная не установлена, программа не знает, где рисовать окно:
marco$ DISPLAY= xeyes
Error: Can't open display:
marco$
В некоторых программах можно указать отображение с помощью параметра -display
.Одной этой информации недостаточно: X11 включает в себя список контроля доступа разрешенных клиентов, которые могут подключаться к определенному серверу.
marco$ su - test
Password:
test$ env | grep DISPLAY
DISPLAY=:0.0
test$ xeyes
No protocol specified
Error: Can't open display: :0.0
xhost
- это инструмент для управления acl:
marco$ xhost +
access control disabled, clients can connect from any host
marco$ su - test
Password:
# disable X11 acl with xhost +
test:~$ xeyes
^C
В любом случае помните, что сервер X11 должен работать, чтобы иметь возможность открывать окна, и вы можете столкнуться с другими видами ошибок, если сервер не прослушивает при запуске службы (Невозможно инициализировать сервер: Не удалось подключиться:Соединение отказано)