Я слышал, что есть способ запуска программ с графическим интерфейсом без диспетчера отображения - прямо с терминала. Это реально, и если да, то как я могу это сделать?
4 ответа
Вы можете запустить их без диспетчера отображения, но вам нужен запущенный сеанс X. Детали будут зависеть от вашего дистрибутива, но вы сможете получить минимальный сеанс X с одним терминалом, запустив
xinit
Я не делал этого годами, но в прошлый раз я получил что-то вроде этого:
Оказавшись там, вы можете нормально запустить программу с графическим интерфейсом, предпочтительно запустив ее в фоновом режиме (с помощью &
), чтобы не потерять доступ к своему единственному терминалу.
Вот основы запуска приложения с графическим интерфейсом без заголовка, с возможностью (vnc
) для подключения к нему.
Работает на RHEL7
и Centos 7
, с семьей. И извлек из моего собственного Docker-образа, который я использую для Crashplan, расположенного по адресу https://github.com/xeor/dockerfiles/tree/master/crashplan/ (см. « Dockerfile
init/setup
для запуска.
# Needed environment variables
export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"
# Needed packages
yum install -y xorg-x11-server-Xvfb x11vnc gtk2 xorg-x11-fonts-*
# Set a password (if variable vncpass is sat, else its `secret`)
mkdir -p ~/.vnc && x11vnc -storepasswd ${vncpass:-secret} ~/.vnc/passwd
# Start up the fake display and run the application you want (the `java ...` part)
xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" java .... > log/ui_output.log 2> log/ui_error.log &
# Wait for the app to start, or else, the vnc server will die before starting
sleep 5
# vnc itself
x11vnc -forever -usepw -shared -rfbport 5900 -display $DISPLAY
Теперь вы должны иметь возможность подключиться к серверу:5900 и увидеть приложение.
Да. Просто делайте то же, что делает менеджер дисплеев. Помимо графического экрана входа в систему (который в данном случае вам не нужен), диспетчер отображения выполняет только две вещи:
- Сначала он запускает X11 "сервер дисплея", такой как Xorg,
- затем запускает "клиентов", которые сообщают Xorg, что и где рисовать.
Вы можете использовать такие инструменты, как startx
чтобы запустить X11 таким же образом из консоли входа в систему; он запустит Xorg, а затем клиентов, перечисленных в вашем файле ~/.xinitrc
.
Например, файл .xinitrc может иметь startkde
или gnome-session
или может содержать список отдельных компонентов (диспетчер окон, панель / панель задач, рабочий стол ...)
(Обратите внимание, что между xinit
и startx
есть некоторые различия - обычно вы должны использовать последний, поскольку в некоторых дистрибутивах есть несколько важных частей конфигурации, которые игнорирует обычный xinit, а именно сценарий xserverrc
.)
С Wayland рабочий стол и панели являются неотъемлемой частью "композитора", поэтому весь интерфейс запускается за один шаг без дополнительных инструментов. Например, вы можете запустить weston
или запустить GNOME, используя gnome-session --session=gnome-wayland
.
Вы можете запускать X-приложения с помощью ssh X forwarding (ssh -X; возможно, также необходимо включить его в конфигурации сервера), если у вас есть локальный X-дисплей.
Приложение будет запускаться и отображаться локально при работе в автономной системе. Вам понадобится установить X в системе без головок, чтобы иметь правильные библиотеки, и это может не работать с более современными приложениями GNOME.
Вы также можете использовать $DISPLAY
для запуска приложений на подключенном X-дисплее, даже если ваша оболочка удаленная (ssh или console). Если вы являетесь пользователем root, а пользователь, вошедший в систему на дисплее X, не является пользователем, вы можете переопределить безопасность xauth
и в любом случае открыть окно на их дисплее. Это также работает, если у вас есть два разных сервера X Display на разных мониторах.
Другой плакат упоминает VNC; Я также использовал NX для этой цели, и я предпочитаю это.