我听说有一种方法可以不使用显示管理器直接通过终端启动图形界面的程序。这是真的吗?如果是,我该怎么做?
答案1
您可以在没有显示管理器的情况下运行它们,但您需要一个正在运行的 X 会话。详细信息取决于您的发行版,但您应该能够通过运行以下命令获得一个具有单个终端的最小 X 会话
xinit
我已经有好几年没有这样做了,但是上次我这样做的时候,得到的结果如下:
到达那里后,您可以正常运行 GUI 程序,最好通过在后台启动它(使用&
),这样您就不会失去对唯一终端的访问权限。
答案2
vnc
以下是运行无头 GUI 应用程序的基础知识,以及连接到它的方法 ( )。适用于RHEL7
和Centos 7
,与家人一起。并从我自己的 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
您现在应该能够连接到服务器:5900 并查看应用程序。
答案3
是的。只需执行与显示管理器相同的操作即可。除了图形登录屏幕(在本例中您不需要)之外,显示管理器只执行两项操作:
- 首先它启动一个 X11 “显示服务器”,比如 Xorg,
- 然后启动“客户端”告诉 Xorg 绘制什么以及在哪里绘制。
您可以使用以下工具startx
以同样的方式从控制台登录启动 X11;它将启动 Xorg,然后启动您~/.xinitrc
文件。
例如,.xinitrc 文件可以有startkde
或gnome-session
,或者它可以列出各个组件(窗口管理器、面板/任务栏、桌面......)
xinit
(请注意和之间存在一些差异startx
——通常应该使用后者,因为某些发行版有一些重要的配置,而普通的 xinit 会忽略这些配置,即脚本xserverrc
。)
使用 Wayland,桌面和面板是“合成器”的集成部分,因此整个界面只需一步即可启动,无需其他工具。例如,您可以weston
使用 运行或启动 GNOME gnome-session --session=gnome-wayland
。
答案4
你可以使用 ssh X 转发(ssh -X;可能还需要在服务器配置中启用)启动 X 应用程序,前提是你有一个当地的X 显示。
在无头系统上运行时,应用程序将在本地启动并显示。您需要在无头系统上安装 X 才能拥有正确的库,这可能不适用于更现代的 GNOME 应用程序。
$DISPLAY
即使您的 shell 是远程 shell(ssh 或控制台),您也可以使用它在连接的 X 显示器上启动应用程序。如果您是 root 而登录 X 显示器的人不是,您可以忽略xauth
安全性并在他们的显示器上弹出一个窗口。如果您在不同的显示器上有两个不同的 X 显示服务器,这也有效。
另一位发帖者提到了 VNC;我也曾为此使用过 NX,而且我更喜欢它。