Fedora 27下能否通过Bash脚本自动接听Google Hangouts来电?
自动完成Google Hangouts来电接听的Bash脚本优化方案
当然可以!在Fedora 27上,我们可以借助几个Linux工具把这个流程完全自动化——从打开Chrome、定位Hangouts标签,到模拟点击接听按钮,彻底省去那三次手动操作。下面是具体的实现方案:
1. 安装必备工具
我们需要两个工具来实现窗口控制和模拟输入:xdotool(模拟键盘鼠标操作)和wmctrl(管理窗口)。在Fedora上用dnf安装即可:
sudo dnf install xdotool wmctrl
确保你已经安装了Google Chrome,要是还没装,用sudo dnf install google-chrome-stable搞定。
2. 完整自动化脚本示例
把下面的代码保存为hangouts-auto-answer.sh,记得替换掉你自己的音频切换逻辑和接听按钮坐标:
#!/bin/bash # -------------------------- # 第一步:切换音频到耳机(保留你已有的逻辑) # -------------------------- echo "正在切换音频输出到耳机..." # 替换成你实际使用的音频切换命令,比如pactl或amixer的指令 # 示例(针对PulseAudio): pactl set-sink-port @DEFAULT_SINK@ analog-output-headphones # -------------------------- # 第二步:启动/激活Chrome并打开Hangouts页面 # -------------------------- # 检查Chrome是否在运行 if ! pgrep -x "chrome" > /dev/null; then echo "Chrome未运行,启动并打开Hangouts..." # 用--app参数打开独立的Hangouts窗口,更方便后续定位 google-chrome --app=https://hangouts.google.com/ & # 等待Chrome加载完成,根据你的网速调整时间(比如5-10秒) sleep 7 else echo "Chrome已运行,切换到Hangouts窗口..." # 激活Chrome窗口 wmctrl -a "Hangouts" # 如果Hangouts标签没打开,就导航到页面 xdotool key ctrl+l xdotool type "https://hangouts.google.com/" xdotool key Return sleep 4 fi # -------------------------- # 第三步:模拟点击"Answer call"按钮 # -------------------------- echo "尝试自动接听来电..." # 先获取Hangouts窗口的ID HANGOUTS_WINDOW=$(wmctrl -l | grep "Hangouts" | awk '{print $1}') # 替换下面的X和Y为接听按钮的相对坐标(相对于窗口左上角) # 获取坐标方法:打开Hangouts来电页面,把鼠标移到接听按钮上,运行`xdotool getmouselocation` # 然后用输出的x/y减去窗口左上角的x/y(可以用`xdotool getwindowgeometry $HANGOUTS_WINDOW`查看) X=350 Y=400 # 移动鼠标到按钮位置并点击 xdotool mousemove --window $HANGOUTS_WINDOW $X $Y xdotool click 1 echo "自动操作完成!"
3. 关键细节说明
- 音频切换:一定要把脚本里的音频命令替换成你自己正在使用的逻辑,不然这部分会失效。
- 坐标获取:手动把鼠标移到接听按钮上,运行
xdotool getmouselocation得到绝对坐标;再运行xdotool getwindowgeometry $(wmctrl -l | grep "Hangouts" | awk '{print $1}')得到窗口左上角的坐标,用绝对坐标减去窗口坐标就是相对坐标,替换脚本里的X和Y。 - 等待时间:
sleep的时间要根据你的电脑性能和网速调整,确保页面完全加载后再执行点击操作,不然可能会点空。 - 权限设置:给脚本加上执行权限:
chmod +x hangouts-auto-answer.sh
4. 常见问题解决
- 点击位置不准:如果Chrome窗口大小变化,相对坐标可能失效。可以先把Chrome设置为固定大小,或者用
xdotool search --name "Answer call"尝试通过文本定位按钮(不过这个方法对网页元素支持有限,坐标法更可靠)。 - 找不到Hangouts窗口:如果
wmctrl -a "Hangouts"没反应,可能是窗口标题不对,运行wmctrl -l查看所有窗口的标题,替换成实际的标题。 - Chrome启动慢:延长
sleep的时间,比如改成10秒,确保页面加载完成。
内容的提问来源于stack exchange,提问作者wolfv




