基于窗口重命名的 Bash Else/If 语句

基于窗口重命名的 Bash Else/If 语句

我正在尝试在 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

有些东西非常粗糙但却传达了概念和想法。

相关内容