![基于窗口重命名的 Bash Else/If 语句](https://linux22.com/image/1180782/%E5%9F%BA%E4%BA%8E%E7%AA%97%E5%8F%A3%E9%87%8D%E5%91%BD%E5%90%8D%E7%9A%84%20Bash%20Else%2FIf%20%E8%AF%AD%E5%8F%A5.png)
我正在尝试在 bash 中创建一个 else/if 语句,这样当窗口重命名为某个内容时(例如:spotify 重命名为赞助消息或广告),我可以运行一个if
来静音 amixer,else
如果它不重命名为任何一个。我最初的计划是基于通知来实现自动静音,但由于它不太准确,我想问是否有人知道如何读取窗口并运行命令。
谢谢 :)
答案1
我认为执行此操作的最佳命令是xdotool
,但是我不熟悉 Spotify 应用程序,因此您必须测试 xwindowname 是否由应用程序更新。下面是用于测试此操作的命令列表,从那里开始,编写一个简单的脚本就足够简单了,但首先我们需要概念验证。
pgreg <name of spotify app>
xdotool search --pid <pid returned by pgrep>
xdotool getwindowname <window id returned by xdotool search>
最后一个命令将告诉您窗口名称,然后您可以测试当广告出现时它是否发生了变化。
如果一切正常,并且广告播放时窗口名称发生改变,就像一个简单的脚本。
注意:这非常粗略地展示概念而不是提供复制粘贴的答案。
#!/bin/bash
while true;
do
pid=$(pgrep spotify)
win=$(xdotool search --pid $pid)
state=$(xdotool getwindowname $win | <filter for ads>)
if [[ $state = 'ads' ]]; then
mute
else
unmute
fi
done
有些东西非常粗糙但却传达了概念和想法。