找到默认的终端模拟器

nat*_*ala 7 linux desktop terminal

如何检测当前桌面环境中使用的是哪个终端模拟器(xtermgnome-terminal...)?像xdg-open,但用于终端模拟器。

我已经xdg-terminal在我的 Xubuntu 安装上尝试过这个脚本,但没有成功:

./xdg-terminal.sh: 305: [: x: unexpected operator
./xdg-terminal.sh: 399: [: xxterm: unexpected operator
xdg-terminal: configured terminal program 'xterm' not found or not executable
Run Code Online (Sandbox Code Playgroud)

它将用于在 C++ 程序中使用,因此任何脚本、包或内置命令都可以。

谢谢您的帮助 !

Ale*_*oss 6

简短回答

没有标准可以了解各个发行版的默认终端模拟器是什么。事实上,用户可能“默认”使用与桌面环境附带的终端完全不同的终端。您只能通过查看不同的系统变量和配置文件来猜测它。

更长的答案

你可以尝试猜测你的前进方向$TERM

请参阅man term.5和/或man term.7(术语手册页第 5 页和第 7 页)。

环境变量 TERM 通常应包含您正在使用的终端、控制台或显示设备类型的类型名称。此信息对于所有面向屏幕的程序(包括编辑器和邮件程序)至关重要。

默认 TERM 值将通过 /etc/inittab(Linux 和类似 System-V 的 UNIX)或 /etc/ttys(BSD UNIX)按行设置。对于工作站和微型计算机控制台来说,这几乎总是足够的。

在我的 Manjaro i3 安装上

$ echo $TERM
rxvt-unicode-256color
Run Code Online (Sandbox Code Playgroud)

这是 的另一个名称urxvt。所以你甚至不能指望获得默认终端的正确名称。

如此回复中详细说明的

如果您的 $TERM 有 [您无法识别的内容],请仔细检查您的配置,包括:

  • /etc/inittab 中的agetty 行(最后应该说 linux1)
    • 系统范围的 shell 启动脚本
      • /etc/profile, /etc/profile.d/*.sh
      • /etc/bash.bashrc (如果使用 bash)
    • 您自己的 shell 启动脚本
      • 〜/ .profile,〜/ .bash_profile,〜/ .bash_login,〜/ .bashrc

建议:只需浏览已知终端模拟器的列表

默认情况下,i3 附带i3-sensible-terminal. 根据它的说明书

i3-sensible-terminal 在 i3 默认配置中调用来启动终端。这个包装脚本是必要的,因为没有独立于发行版的终端启动器(但例如 Debian 有 x-terminal-emulator)。分发打包者负责以适合分发的方式传送此脚本。

它的工作方式只是浏览常用终端模拟器的列表

它尝试启动以下操作之一(按顺序):

  • $TERMINAL(这是一个非标准变量)
  • x-terminal-emulator(仅存在于 Debian 及其衍生版本上)
  • 乌尔克斯VT
  • 接收值
  • 白蚁
  • 终结者
  • ...

在哪里

  • $TERMINAL使用时通常在前述启动脚本中设置。
  • x-terminal-emulator是 Debian 询问默认终端的方式(适用于 Ubuntu)

在 bash 脚本中,这会给出类似的内容

$ echo $TERM
rxvt-unicode-256color
Run Code Online (Sandbox Code Playgroud)