Запуск програм із GUI без диспетчера дисплеїв


9

Я чув, що є спосіб запускати програми з графічним інтерфейсом без диспетчера дисплеїв - прямо з терміналу. Це реально і якщо так, то як це зробити?


Чи потрібно взаємодіяти з графічним інтерфейсом?
Даніель Б

@DanielB так, певно
Бен

1
Ви можете запустити їх без диспетчера дисплеїв, але вам потрібен запущений X сеанс. Який дистрибутив ви використовуєте? У вас встановлений X-сервер? Ви можете бігти xinitабо startx?
тердон

@terdon Так, я зараз працюю lmint, але питання стосується загальних знань (не націлений на distro).
Бен

Відповіді:


5

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

xinit

Я цього не робив протягом років, але, востаннє, робив щось подібне:

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

Потрапивши туди, ви можете запустити програму GUI звичайно, бажано, запустивши її у фоновому режимі (з &), щоб не втратити доступ до свого єдиного терміналу.


2
Можливо, варто згадати, що "звичайний запуск їх", швидше за все, буде включати в себе фоновий процес, тому ви, швидше за все, хочете скористатися, xterm &щоб отримати додатковий термінал, а не просто xterm. І т.д.
CVn

6

Ось основи запуску програми GUI без голови, із способом ( 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 (ssh -X; можливо, потрібно буде також увімкнути конфігурацію сервера), якщо у вас є локальний X-дисплей.

Додаток запуститься та відображатиметься локально, під час роботи на безголовій системі. Для того, щоб мати потрібні бібліотеки, вам знадобиться встановити X у безголовій системі, а це може не працювати з більш сучасними програмами GNOME.

Ви також $DISPLAYможете запускати програми на доданому дисплеї X, навіть якщо ваша оболонка є віддаленою (ssh або консольною). Якщо ви користуєтеся коренем, а людина, яка ввійшла на дисплей X, відсутня, ви можете змінити xauthбезпеку та все-таки спливати вікно на їх дисплеї. Це також працює, якщо у вас є два різних сервери відображення X на різних моніторах.

В іншому плакаті згадується VNC; Я також використовував NX для цієї мети, і я вважаю за краще.


Відповідь не пов'язана, але корисна
Бен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.