Я слышал, что есть способ запуска программ с графическим интерфейсом без диспетчера отображения - прямо с терминала. Это реально, и если да, то как я могу это сделать?
xinit
или startx
?
Я слышал, что есть способ запуска программ с графическим интерфейсом без диспетчера отображения - прямо с терминала. Это реально, и если да, то как я могу это сделать?
xinit
или startx
?
Ответы:
Вы можете запустить их без диспетчера отображения, но вам нужен запущенный сеанс X. Детали будут зависеть от вашего дистрибутива, но вы сможете получить минимальный сеанс X с одним терминалом, запустив
xinit
Я не делал этого годами, но в прошлый раз это выглядело бы примерно так:
Оказавшись там, вы можете нормально запустить программу с графическим интерфейсом, предпочтительно запустив ее в фоновом режиме (с &
), чтобы не потерять доступ к своему единственному терминалу.
xterm &
для получения дополнительного терминала, а не просто xterm
. И т.д.
Вот основные принципы запуска приложения с графическим интерфейсом без заголовка и способа ( 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 и увидеть приложение.
Да. Просто делайте то же, что делает менеджер дисплеев. Помимо графического экрана входа в систему (который в данном случае вам не нужен), менеджер дисплеев выполняет только две вещи:
Вы можете использовать такие инструменты, как 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 для этой цели, и я предпочитаю это.