PS:可直接跳到Method部分
Abstract
本研究旨在为微信Linux原生版用户提供一种通过全局快捷键实现微信窗口的快捷显示与隐藏的方法。尽管微信在Windows系统中已提供了方便的快捷键功能,但Linux原生版微信缺少这一功能,给用户带来了一定的不便。本文基于现有的xdotool工具,结合LLM ChatGPT的推理能力,提出了一种自动化脚本解决方案。通过该方法,用户可以方便地在Linux系统中通过全局快捷键来控制微信窗口的显示和隐藏,提升了操作效率和用户体验。
Introduction
众所周知,win里面微信的快捷键是ctrl+alt+w,原生Linux微信是官方的,纯净版感觉很舒服,同步消息比win快了很多,但是美中不足的是键盘快捷键不能呼出显示消息,因此想要通过全局快捷键绑定让微信可以自由地在Linux上呼入呼出。
Related Work
在Linux下,给微信绑定一个 全局的呼出 ⁄ 隐藏快捷键_哔哩哔哩_bilibili
这篇文章提出了一种用xdotool绑定快捷键的方式,但是年代较为久远,且是适用于wine版有快捷键的版本,因此亟须新的方法帮助我们解决这个问题
System Model
我们的研究对象是2024年的微信Linux原生版,理论上也能适用其他场景,只需要改脚本相应部分就可以了
Method
前面的步骤和B站的视频一样,安装xdotool
sudo apt install xdotool
接着我们提出使用LLM ChatGPT的强大推理能力来得到快捷键脚本:
帮我完成一个bash脚本,我现在通过xdotool search -name '微信' ,能够得到多行窗体的id,需要你存在一个数组里,然后xdotool getactivewindow可以判断当前窗体的id,你需要遍历数组对比一下pid是否等于当前窗体的id,如果其中有一个等于,则调用dotool search -name '微信' windowminimize,如果全部不等不,则调用xdotool search -name '微信' windowactivate
回答(全部复制到一个bash文件里就可以了)
#!/bin/bash
# 获取所有微信窗口的ID并存储在数组中
wechat_windows=($(xdotool search -name '微信'))
# 获取当前活动窗口的ID
current_window=$(xdotool getactivewindow)
# 初始化标志,判断是否找到匹配的微信窗口
found=0
# 遍历微信窗口ID数组
for window_id in "${wechat_windows[@]}"
do
# 如果当前窗口ID与微信窗口ID匹配
if [ "$current_window" -eq "$window_id" ]; then
# 设置标志为1,表示找到了匹配的微信窗口
found=1
break
fi
done
# 如果找到匹配的微信窗口
if [ "$found" -eq 1 ]; then
# 最小化该微信窗口
xdotool windowminimize "$window_id"
else
# 否则激活微信窗口
for window_id in "${wechat_windows[@]}"
do
xdotool windowactivate "$window_id"
done
fi
exit 0
然后在Linux里面设置全局快捷键:


Experiments
略
Conclusion
本文提出了一种使用xdotool工具和ChatGPT生成的Bash脚本,为Linux原生版微信实现全局快捷键控制微信窗口的方法。通过此方法,用户可以快速实现微信窗口的呼出和隐藏,弥补了Linux原生版微信在快捷键支持方面的不足。尽管本研究集中于2024年的微信Linux原生版,但该解决方案具有广泛的适用性,可根据不同需求进行适当调整,应用于其他类似场景。实验结果表明,该方法简单有效,为用户带来了极大的便利。