Linux GUI
│
┌─────────────┴─────────────┐
│ │
X11 Wayland
│ │
┌──────┼──────┐ │
│ │ │ ▼
Xorg Xvfb Xtigervnc Mutter
│ │ │ │
│ │ │ │
GPU 虚拟 VNC网络 GPU
│ │
│ ▼
│ VNC Client
│
└───────────────┐
▼
GNOME / XFCE
│
▼
Applications
(base) wy@node1:~$ cat ~/.vnc/xstartup
#!/bin/sh
# unset SESSION_MANAGER
# unset DBUS_SESSION_BUS_ADDRESS
# exec startxfce4
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
dbus-launch --exit-with-session startxfce4 &
# 启动 RustDesk
sleep 3
rustdesk &
(base) wy@node1:~$ loginctl list-sessions
SESSION UID USER SEAT TTY
121 1000 nuosen seat0 tty2
c1 125 gdm seat0 tty1
2 sessions listed.
物理电脑可能是:
鼠标
↓
Linux Kernel
↓
GPU/Input Driver
↓
X Server (Xorg)
↓
Firefox
↓
应用逻辑
↓
绘制请求
↓
X Server
↓
GPU Driver
↓
GPU
↓
显示器
X Server
/ \
/ \
输入事件 绘图请求
↑ ↓
Kernel GPU/软件渲染
↑ ↓
鼠标/键盘 framebuffer
GPU
│
▼
Xorg
│
▼
显示器
Xorg
↓
物理 GPU
↓
物理显示器
而 VNC:
Xtigervnc
│
▼
虚拟显示器
│
▼
VNC网络
│
▼
VNC Client
Xvfb
Application
│
▼
X Server
│
▼
内存 framebuffer