Ivan's Blog

阻止电脑在办公室突然出声

今天解决一个伪需求。

有时候我们打开一个网页,这个网页却没有安静的等待你去阅读,而是直接调用你的电脑喇叭大声告诉你办公室的同事们:你在浏览某种多媒体资源。

虽然多数情况下,浏览的并不是什么大不了的内容,但突然发声还是会让我比较尴尬,所以我打算解决一下这个问题。

我的场景是,电脑平时会随身携带,通常是家里与公司。在家通常不会带耳机,而是直接使用外放,公司放有一个有线耳机,会在需要的时候连接使用,但关键是,很多次我会忘记连接耳机,或者是我没有预判到某些网页附带有声音。

网络上其实有不少此类问题的解决方案,比如说浏览器设置始终默认静音,手动开启才有声音。这类解决方法只能解决浏览器发出的声音,而解决不了其它应用的声音。而且最重要的是,我只是需要在办公室让它静音,但是在家的时候,或者是在办公室我带上耳机了之后,就可以直接输出声音。

所以把我的需求具体化,就是:

理论上我只需要电脑做两次判断就能解决,也就是先判断电脑是不是在办公室,第二是判断当前发声的设备是不是外放喇叭。

判断办公室这个很好解决,只需要判断一下当前的网络情况,比如所连接的 WiFi 名称,而当前的发声设备理论上也有相应的程序可以识别出。

这一系列自动化还需要有一个触发动作,就是电脑准备要发声的时候。这个比较麻烦,目前我没有留意过哪个自动化工具可以识别到电脑开始发声。直到我想起之前买过的一个软件 Shortery

image.png

Shortery 能支持声音的播放触发,然后执行某个快捷指令,但遗憾的是,这个触发器最小只支持 5 秒时长的捕获。也就是说,电脑播放声音 5 秒后,这个触发器才会开始工作,作者的用意,是害怕低于 5 秒的声音比如某些软件的提醒、一些短音效等等过于频繁触发事件,且不允许手动修改时长到 5 秒以内,很显然,这 5 秒都够我手动操作静音了。

所以既然 UI 界面上不让改,我就找到了它的配置文件,通过直接修改配置文件,看能不能识别 1 秒内的声音事件。

image.png

测试了几遍,发现可以直接设置为 0。如此,在设备发声的一瞬间,就会启动指定的快捷指令程序。这样只需要在快捷指令中判断电脑是否在公司,继而判断当前的音频设备,就能实现我的需求。

然而事情没有那么简单,快捷指令、KM 等一系列自动化工具都无法顺利识别出当前音频的播放设备。但是 ChatGPT 给了我一个答案:switchaudio

这是一个上次更新是去年的开源项目,通过 brew 安装后,我将其纳入快捷指令的自动化工作流,且顺利识别出了当前音频设备名称。

image.png|300

最后的快捷指令流程是这样的:

image.png

然后我发现了新的问题,就是如果已经静音的情况下,依然会不断触发提醒。所以我需要加一层判断,也就是设备如果已经静音了,就不再做其它处理了,甚至也不需要判断电脑当前在哪里。因此,该判断的层级也是最高的:

image.png

行了,这下终于可以安心在办公室网上冲浪了。

#快捷指令 #自动化

PREV Figma 20240416 更新 - 变量又增强了
NEXT Hugo Bear 主题的使用