Запуск программ с графическим интерфейсом без диспетчера отображения


9

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


Вам нужно взаимодействовать с GUI?
Даниэль Б

@DanielB да, наверное
Бен

1
Вы можете запустить их без диспетчера отображения, но вам нужен запущенный сеанс X. Какой дистрибутив вы используете? У вас установлен X-сервер? Ты можешь бежать xinitили startx?
тердон

@terdon Да, я сейчас работаю с lmint, но вопрос больше для общих знаний (не для дистрибутивных целей).
Бен

Ответы:


5

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

xinit

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

введите описание изображения здесь

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


2
Возможно, стоит упомянуть, что «их нормальная работа», скорее всего, будет включать в себя фоновый процесс, поэтому вы, скорее всего, захотите использовать xterm &для получения дополнительного терминала, а не просто xterm. И т.д.
CVn

6

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


3

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

  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 для этой цели, и я предпочитаю это.


Ответ не имеет отношения, но полезен
Бен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.