我正在编写一个程序,通过 OSC 转义序列动态更改我的所有终端(目前是 URXVT)的前景色。因此,我必须将命令发送到当前打开的终端才能应用该命令。
最终目标是让它在后台安静地运行,每分钟左右运行一次(颜色是从每分钟变化的背景图像中挑选出来的),所以像 xdotool 这样的东西不起作用,因为它们会将击键发送到终端。
我尝试了 ttyecho,但它似乎只能在运行它的终端上工作,即使你另有指定。
有人知道我的问题的解决方案吗?我不依赖 OSC,这只是我发现的唯一一种无需重新启动即可更新终端颜色的方法,因此其他方法也是可以接受的。
答案1
找出终端行的名称,例如通过在tty
给定的终端中执行命令。它将报告类似以下内容的内容/dev/pts/5
。
然后从任何地方(例如另一个终端,甚至是没有终端运行的 shell 脚本)执行如下命令:
printf [the OSC sequence] > /dev/pts/5
请注意,如果另一个进程在给定的终端中产生输出,那么这两个进程就有可能发生冲突(互相中断,导致垃圾而不是应用程序和 OSC 期望的结果)。