在运行 startx 并返回中断 Xorg 后切换到另一个 TTY

jos*_*max 8 xorg tty 12.04 framebuffer

我一直对 Xorg 的一个特性感到好奇,它似乎发生在我尝试过的每台机器上;每当我手动使用 startx 在 TTY 上启动一个新的 X 实例时(即,没有显示管理器的帮助),切换到另一个 TTY,然后尝试返回到我原来的 TTY,X 的帧缓冲区中断,我被丢弃到我原来的外壳与 X 仍在运行。点击 ^C 或 ^D停止 X,但我将不得不再次运行 startx/xinit,从而丢失我的原始会话。IE:

CTRL+ALT+F1
$ startx /usr/bin/xterm -- :1
CTRL+ALT+F7
CTRL+ALT+F1
Run Code Online (Sandbox Code Playgroud)

将破坏我在 TTY1 上的 X 缓冲区。似乎依赖 Wayland/Mir 进行组合的应用程序可以像我期望的那样处理 TTY 切换,但是对于使用 X 的应用程序而言,这些应用程序不是使用 LightDM 等显示管理器启动的,无法返回到我手动启动的 X 会话是一种真正的痛苦。有什么办法可以纠正这个问题,以便我在切换 TTY 时可以切换回我的 X 会话?

jos*_*max 2

嗯,解决办法比较简单,不用运行

$ startx /usr/bin/xterm -- :1
Run Code Online (Sandbox Code Playgroud)

跑步

$ startx /usr/bin/xterm -- :1 vt$(tty | sed -e "s:/dev/tty::")
Run Code Online (Sandbox Code Playgroud)

当我切换 TTY 时,将防止 X 损坏。

  • @Masi也许你想阐述为什么你认为这个方法不是那么好,并解释你更好的实现它的方法?这比这种含糊不清的情况要偶然得多。 (2认同)