如何检测Gnome终端?

Pis*_*tos 2 ruby linux terminal console gnome

我正在编写一个使用F1键的控制台应用程序(求助).不幸的是,虽然Konsole(KDE)不使用此密钥,Gnome终端会这样做,因此我的应用程序无法访问F1密钥.我不认为有一种方法可以检测F1键是否已经在事物的GUI端映射(Gnome Terminal),但是如果有,那么答案将消除这个问题.:)

因此,我的下一个最好的选择是尝试检测我是否在Gnome终端内运行.有办法做到这一点吗?我主要感兴趣的是从Ruby中收集它,但如果可以通过shell或环境变量或虚拟文件系统(/ proc,/ dev等)来完成,那么这就足够了.

我希望有一个可靠的方法来做到这一点,但我可以满足于"最好的猜测"方法,比如贪图环境变量以寻找可以让我合理地假设Gnome Terminal是包装终端的线索.

额外信息:其他钥匙也被Gnome Terminal"偷走".我打算为Gnome用户显示一些关于替代密钥的信息性消息.

Pis*_*tos 9

谷歌已经透露,我可能可以依靠Gnome Terminal将COLORTERM环境变量设置为'gnome-terminal'.

  • 由于v3.13 gnome-terminal删除了COLORTERM变量的设置,因此这不适用于较新版本的gnome-terminal. (2认同)

blu*_*yed 5

对于 zsh:

[[ "$COLORTERM" == "gnome-terminal" ]] || [[ ${$(ps -p $(ps -p $$ -o ppid=) -o cmd=):t} == gnome-terminal* ]]
Run Code Online (Sandbox Code Playgroud)

gnome-terminal 用于设置$COLORTERM,但这已被删除(在 3.12.0-67-g1d5c1b6 中)。