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