terminal.app:如何读取终端窗口标题

terminal.app:如何读取终端窗口标题

我看到过很多关于如何设置选项卡(或窗口)名称的问题,但如何获取它呢?我已设置终端打开 8 个选项卡,每个选项卡都有自己的名称(dev1、dev2、... dev8)。shell 脚本有没有办法识别它在哪个选项卡中(读取选项卡的名称?)

答案1

如果其他方法都失败了,那么 AppleScript 可以来救援:

title=`osascript -e 'tell application "Terminal" to  get name of front window'`
echo $title

但是of front window使用多个窗口时要小心。这将在 5 秒内切换到另一个选项卡时打印错误的结果:

sleep 5; osascript -e 'tell application "Terminal" to  get name of front window'

(所以我希望有人能给你一个更简单的方法。)

答案2

这在我的 Fedora 机器上运行良好,但我没有 Mac 来验证:

xprop -id $WINDOWID | grep '^WM_NAME(STRING)' | cut -d\" -f2

答案3

有一个用于请求窗口标题的控制序列,它与设置标题的序列相对应;但是,它不受终端支持,并且出于安全/隐私原因,它在 XTerm(我认为还有其他终端仿真器)中默认被禁用。

用于设置/获取窗口标题的控制序列的 XTerm 文档:

http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Commands

使用应用程序脚本Arjan 的回答有效,但仅当远程程序位于同一台计算机上时才有效,并且与控制序列不同,脚本具有安全规则,例如,如果发送方和接收方进程没有相同的所有者/用户,则需要进行身份验证。

相关内容