Я чув, що є спосіб запускати програми з графічним інтерфейсом без диспетчера дисплеїв - прямо з терміналу. Це реально і якщо так, то як це зробити?
xinit
або startx
?
Я чув, що є спосіб запускати програми з графічним інтерфейсом без диспетчера дисплеїв - прямо з терміналу. Це реально і якщо так, то як це зробити?
xinit
або startx
?
Відповіді:
Ви можете запустити їх без менеджера дисплеїв, але вам потрібен запущений X сеанс. Деталі залежатимуть від вашого розповсюдження, але ви повинні мати змогу отримати мінімальний X сеанс з одним терміналом, запустивши
xinit
Я цього не робив протягом років, але, востаннє, робив щось подібне:
Потрапивши туди, ви можете запустити програму GUI звичайно, бажано, запустивши її у фоновому режимі (з &
), щоб не втратити доступ до свого єдиного терміналу.
xterm &
щоб отримати додатковий термінал, а не просто xterm
. І т.д.
Ось основи запуску програми 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 та переглянути програму.
Так. Виконайте те саме, що робить диспетчер дисплеїв. Окрім графічного екрана входу (який вам у цьому випадку не потрібен), менеджер дисплеїв виконує лише дві речі:
Ви можете використовувати такі інструменти, як, наприклад, startx
запускати X11 так само, як увійти в консоль; він запустить Xorg з наступними клієнтами, переліченими у вашому ~/.xinitrc
файлі.
Наприклад, файл .xinitrc міг містити startkde
або містити gnome-session
список окремих компонентів (менеджер вікон, панель / панель завдань, робочий стіл ...)
(Зверніть увагу, що є деякі відмінності між xinit
і startx
- зазвичай вам слід скористатися останнім, оскільки деякі дистрибутиви мають кілька важливих фрагментів конфігурації, які звичайний xinit ігнорує, а саме xserverrc
сценарій.)
У Wayland робочий стіл та панелі є невід'ємною частиною "композитора", тому весь інтерфейс запускається в один крок без додаткових інструментів. Наприклад, ви можете запустити weston
або запустити GNOME за допомогою gnome-session --session=gnome-wayland
.
Ви можете запускати програми X, використовуючи пересилання пересилання ssh X (ssh -X; можливо, потрібно буде також увімкнути конфігурацію сервера), якщо у вас є локальний X-дисплей.
Додаток запуститься та відображатиметься локально, під час роботи на безголовій системі. Для того, щоб мати потрібні бібліотеки, вам знадобиться встановити X у безголовій системі, а це може не працювати з більш сучасними програмами GNOME.
Ви також $DISPLAY
можете запускати програми на доданому дисплеї X, навіть якщо ваша оболонка є віддаленою (ssh або консольною). Якщо ви користуєтеся коренем, а людина, яка ввійшла на дисплей X, відсутня, ви можете змінити xauth
безпеку та все-таки спливати вікно на їх дисплеї. Це також працює, якщо у вас є два різних сервери відображення X на різних моніторах.
В іншому плакаті згадується VNC; Я також використовував NX для цієї мети, і я вважаю за краще.