8

Я слышал, что есть способ запуска программ с графическим интерфейсом без диспетчера отображения - прямо с терминала. Это реально, и если да, то как я могу это сделать?

4 ответа4

4

Вы можете запустить их без диспетчера отображения, но вам нужен запущенный сеанс X. Детали будут зависеть от вашего дистрибутива, но вы сможете получить минимальный сеанс X с одним терминалом, запустив

xinit

Я не делал этого годами, но в прошлый раз я получил что-то вроде этого:

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

4

Вот основы запуска приложения с графическим интерфейсом без заголовка, с возможностью (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 и увидеть приложение.

2

Да. Просто делайте то же, что делает менеджер дисплеев. Помимо графического экрана входа в систему (который в данном случае вам не нужен), диспетчер отображения выполняет только две вещи:

  1. Сначала он запускает X11 "сервер дисплея", такой как Xorg,
  2. затем запускает "клиентов", которые сообщают Xorg, что и где рисовать.

Вы можете использовать такие инструменты, как startx чтобы запустить X11 таким же образом из консоли входа в систему; он запустит Xorg, а затем клиентов, перечисленных в вашем файле ~/.xinitrc .

Например, файл .xinitrc может иметь startkde или gnome-session или может содержать список отдельных компонентов (диспетчер окон, панель / панель задач, рабочий стол ...)

(Обратите внимание, что между xinit и startx есть некоторые различия - обычно вы должны использовать последний, поскольку в некоторых дистрибутивах есть несколько важных частей конфигурации, которые игнорирует обычный xinit, а именно сценарий xserverrc .)

С Wayland рабочий стол и панели являются неотъемлемой частью "композитора", поэтому весь интерфейс запускается за один шаг без дополнительных инструментов. Например, вы можете запустить weston или запустить GNOME, используя gnome-session --session=gnome-wayland .

1

Вы можете запускать X-приложения с помощью ssh X forwarding (ssh -X; возможно, также необходимо включить его в конфигурации сервера), если у вас есть локальный X-дисплей.

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

Вы также можете использовать $DISPLAY для запуска приложений на подключенном X-дисплее, даже если ваша оболочка удаленная (ssh или console). Если вы являетесь пользователем root, а пользователь, вошедший в систему на дисплее X, не является пользователем, вы можете переопределить безопасность xauth и в любом случае открыть окно на их дисплее. Это также работает, если у вас есть два разных сервера X Display на разных мониторах.

Другой плакат упоминает VNC; Я также использовал NX для этой цели, и я предпочитаю это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .