我的应用程序中有以下硬编码的终端列表:
"/usr/bin/konsole", // KDE
"/usr/bin/gnome-terminal", // Gnome
"/usr/bin/pantheon-terminal" // Pantheon (Elementary OS)
然后,我只需从此列表中获取指向现有文件的第一个条目即可。显然,问题在于,只要程序在具有未知终端二进制文件的系统上运行,它就会停止工作。那么,我可以用某种通用方法确定它吗?也许通过一些标准环境变量?
答案1
首先,我只会将终端可执行文件名称保留在列表中,并根据PATH
环境变量动态确定它们的实际路径 - 具体取决于发行版和/或安装选项,它们可能位于其他位置。或者使用which <terminal executable>
which 为您完成此操作。
我会将其用作xterm
最终的后备终端 - 它几乎是任何 X-Windows 安装的标准。
其他便利考虑:
- 检查是否
DISPLAY
已设置 - 如果没有,则很可能终端不会运行 - 尝试确定实际的图形环境,然后首先尝试更适合它的图形环境。
WINDOWMANAGER
可能会有所帮助。特定的窗口管理器通常会设置自己的环境变量,例如,在我的情况下,KDE设置:KDE_SESSION_UID
,,,。KDE_FULL_SESSION
KDE_MULTIHEAD
KDE_SESSION_VERSION