哪些图形应用程序可以从终端运行?

哪些图形应用程序可以从终端运行?

究竟是什么使图形应用程序可以从终端环境运行?就 X11 而言,您需要做什么才能使应用程序可以从 tty 运行?

为什么像omxplayerminecraft或 之类的程序gedit不能从 tty 运行,但例如“愤怒的醉酒矮人”(Python 游戏)或 Retroarch 模拟器可以?

当然这些只是例子,我不想让你解释为什么这些具体运行或不运行。但我怀疑其中存在一些共同点。如果可以的话,请详细说明,但也欢迎仅提供正确文献/文章的链接。谢谢。

- 编辑 -

好吧,有一些误会。澄清一下:假设 Xorg 在 tty7 中运行,并且我们尝试在没有运行 Xorg 实例的不同终端(假设为 tty1)中执行图形程序。

答案1

实际上,您(或更准确地说,您运行的 GUI 应用程序)通常需要两件事。

  • 通过访问X11服务器xhost
  • 提供DISPLAY环境变量。

实际工作示例是我的旧答案之一ssh其中,dad-OP 请求向通过 GUI 登录的孩子显示来自终端(假设)的消息。

对于某些使用 DBUS 的桌面环境,您可能还需要为 DBUS 会话提供环境变量。这种类型的建议经常出现在有关从 向用户运行 GUI 应用程序/消息的问题中/etc/rc.local

答案2

终端能否显示图形应用取决于两个因素:终端能力和图形应用设计。

在古代,终端是通过串行线连接到计算机的真实设备,大多数终端,尤其是实际在纸上打印文本的终端(又称电传打字机)只能显示文本。

已经有某种图形“应用程序”能够打印与该应用程序类似的内容:

From: pk6811s_acad_drake_edu (Paul Kline)
[Here bingle and boobie.]
"They're 'just' pixellated art, but they're original and not overly long.
Best when viewed with light characters on dark background."

 Frank Sinatra

"The old crooner himself:"
     QB"   .  . ....^FBQQBQBQ
     #^   ..../,, ,/yyBQBDBt`"B
   B"  ._L_yQ&Qy&&QQBQQDlL;S; (Q
  B^   /DQQQBQQQQQQBQBDQQD1:   "B
 Q~   ,GQBDQDQQQQQQBBQQDQ&EC    7B
 D    lQQQQQBQBQQQQQQQQBBID('    {
 E   .iDDBQQBQQQQBBBQBQQDQ1!:    (
 3   .(BQBBQBBQQQQBBQBBBDBS'     }                     I'm
 Q   '~~<MMBQQBBQBP"""<BD1EL.    Q                   dreaming
 Q    LuL `7QBBB?../LL;.!JDL     Q                    of a
"  ,  ,__&L.DBBEEL1L_,'EylEE!  ,U                     white
1 :s&yyQQQ6-DQBBQ&QQQQQQQQJY!  lyB1Q                Christmas.
S  ?DDQQBD'.QQBDQDBQBQQQDD1<  LIQDG
Q   j8BQE2 LQQBE9EBBEBQQES{! /BQSE
 Q_ 'TS7L  <#P~^,G1?TXC3({!  3PEy
  Q, ,_>'.,___yBD1DU;,'('''  yQ
   L "Qy,  'IIIZl',L/&;!;:  LQ
   Q; FD(  (`IE2L/QDB&lY!   6Q
    Q, (/. `!?"21iQDU&/~   L FB
     Q_ (EL/&&QDBQBDJ"   ,y^  `FB
      Qy 75EEBBQESf`   _yB^      "M
      Q7  `'^""~`   _yQQM'         `"FQ
      F;         _yQQQQF              Q

然后出现了基于 CRT 的终端,例如 DEC VT100,它实现了大多数当前终端仿真器所遵循的标准。这些终端本质上是文本,尽管支持某些图形字符,但无法显示(高分辨率)图形。 80 列 25 行显示器也可以被视为低分辨率 2000 像素设备 (80x25),但串行线速度阻碍了这种方法的使用。

曾经也有能够本地显示图形的终端,例如那个:

在此输入图像描述

如今,大多数运行在Unix和Linux上的图形应用程序都基于底层的X11协议。该协议需要 X11 兼容服务器在控制屏幕的计算机上运行。该服务器正在控制底层控制台,或所有实现上的虚拟终端之一,因此在某种程度上,所有图形应用程序都从终端环境(通常是 tty7)运行,但当然该终端一旦失去其原始功能当 X11 控制时。

大多数 Unix/类 Unix 操作系统使用的控制台为图形应用程序提供了一些支持。在 Linux 上,可以通过以下方式获得此支持Linux 帧缓冲区(fbdev - /dev/fb0)。例如,它用于在启动时显示 Linux 企鹅 Tux。

在此输入图像描述

以前有一些应用程序直接使用该设备,例如doom,但现在,大多数图形应用程序都使用X11,这也是对fbdev的依赖。一些非常通用的应用程序,例如vlc 和 mplayer能够直接使用Linux帧缓冲区。

还有一些库实现了向应用程序呈现图形设备的图形层,但实际上是在文本控制台上显示的,这与六十年代在电传打字机上和八十年代在连接到 BBS 的 PC 上所做的事情没有什么不同。众所周知的一个是利布卡卡您甚至可以使用 mplayer 在终端上观看电影...

在此输入图像描述

最后,一些终端仿真器也支持图形。一个值得注意的例子是令人尊敬的 xterm,它提供 Tektronix 4014 仿真器能够使用 gnuplot 和其他应用程序/库显示矢量图形的窗口:

在此输入图像描述

答案3

图形应用程序不在终端中运行。它们在 X 服务器中运行。该 X 服务器不需要连接到 tty,尽管通常是这样。

因此,应用程序没有连接到 tty,而只有 X 服务器连接到了。您只能在 tty 上启动 X 服务器,而不能在应用程序上启动。

IIRC 不过,您可以让 X 服务器运行单个应用程序。但我无法提供详细信息。

相关内容