在没有显示管理器的情况下使用 GUI 启动程序

Ben*_*Ben 9 linux terminal gui runlevel

我听说有一种方法可以在没有显示管理器的情况下使用图形界面启动程序 - 直接从终端启动。这是真的吗,如果是的话,我该怎么做?

xeo*_*eor 7

以下是无头运行 GUI 应用程序的基础知识,并通过一种方式 ( vnc) 连接到它。工程于RHEL7Centos 7,与家人。并撕掉了我自己用于 Crashplan 的 Docker 映像,位于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
Run Code Online (Sandbox Code Playgroud)

您现在应该能够连接到 server:5900 并查看应用程序。


ter*_*don 5

您可以在没有显示管理器的情况下运行它们,但您确实需要一个正在运行的 X 会话。详细信息将取决于您的发行版,但您应该能够通过运行在单个终端上获得最少的 X 会话

xinit
Run Code Online (Sandbox Code Playgroud)

我已经很多年没有这样做了,但是,上次我这样做时,会给出这样的结果:

在此处输入图片说明

在那里,您可以正常运行 GUI 程序,最好是在后台启动它(使用&),这样您就不会失去对唯一终端的访问权限。

  • 值得一提的是,“正常运行它们”很可能会涉及到后台进程,因此您很可能希望使用 `xterm &` 来获得一个额外的终端,而不仅仅是 `xterm`。等等。 (2认同)