查找默认终端仿真器

查找默认终端仿真器

如何检测当前桌面环境中使用了哪个终端仿真器( xterm, ...)?类似,但针对的是终端仿真器。gnome-terminalxdg-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

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

答案1

简短回答

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

较长的答案

你可以试着猜测你的前进方向$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

这是 的另一个名称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 及其衍生版本中)
  • 乌尔希
  • 接收
  • 白蚁
  • 终结者
  • ...

在哪里

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

在 Bash 脚本中,结果如下

terms=(emulator1 emulator2 emulator3)
for t in ${terms[*]}
do
    if [ $(command -v $t) ]
    then
        detected_term=$t
        break
    fi
done
echo $detected_term

相关内容