不管使用什么系统,通讯软件都是必不可少的。比如QQ,微信,相对于QQ而言我更喜欢用TIM。但是在manjaro下安装TIM(deepin.com.qq.office)和QQ(deepin.com.qq.im)以后会发现只有在TIM窗口获取到焦点的时候提取消息(ctrl+alt+z)和截图(ctrl+alt+a)的快捷键才能用,当然QQ以及QQ轻聊版也是一样的结果。关掉窗口TIM在后台运行以后会发现快捷键会失去效果没有反应。所以我使用xdotool来解决这个问题。
sudo pacman -S xdotool
# 可以打开terminal使用下面命令测试效果
# 提取消息 第一种(TIM)
xdotool search --name "TIM" key "ctrl+alt+z"
# 截图 第一种(TIM)
xdotool search --name "TIM" key "ctrl+alt+a"
# ==============================
# 提取消息 第二种(TIM)
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep TIM.exe)) "ctrl+alt+z"
# 截图 第二种(TIM)
xdotool key --window $(xdotool search --limit 1 --all --pid $(pgrep TIM.exe)) "ctrl+alt+a"
#!/bin/bash
# Author:雨落凋殇
# Desc:利用xdotool映射快捷键到qq以及tim
# Blog:http://rainss.cn
# 该脚本需要安装xdotool
#判断参数个数
if [ $# -lt 2 ];then
echo "错误:参数不匹配"
echo "使用方法 ./rains 参数一 参数二"
echo "参数一 0 TIM, 1 QQ"
echo "参数二 0 提取消息, 1 截图"
echo "实例 ./rains 0 0"
exit 1
fi
if [ $1 -eq 0 ]; then
#判断tim是否运行
tim=$(pgrep TIM.exe)
if [ -n "$tim" ];then
# TIM运行中
case $2 in
0) # 提取消息
xdotool key --window $(xdotool search --limit 1 --all --pid $tim) "ctrl+alt+z"
;;
1) # 截图
xdotool key --window $(xdotool search --limit 1 --all --pid $tim) "ctrl+alt+a"
;;
esac
else
# TIM没有运行
echo "TIM没有运行"
fi
fi
if [ $1 -eq 1 ]; then
#判断QQ是否运行
qq=$(pgrep QQ.exe)
if [ -n "$qq" ];then
# TIM运行中
case $2 in
0) # 提取消息
xdotool key --window $(xdotool search --limit 1 --all --pid $qq) "ctrl+alt+z"
;;
1) # 截图
xdotool key --window $(xdotool search --limit 1 --all --pid $qq) "ctrl+alt+a"
;;
esac
else
# QQ没有运行
echo "QQ没有运行"
fi
fi
# 将脚本下载到本地
wget https://resource.cdn.rainss.cn/2019/09/1921264169.txt -O rains.sh
# 修改权限和所有者
sudo chmod 755 rains.sh
# rlds为当前用户名(使用users或者id命令可以查看当前用户名)
sudo chown rlds:rlds rains.sh
添加TIM截图快捷键。使用TIM第一个参数设置为0,使用QQ的第一个参数为1。
到这里TIM或者QQ在关闭以后快捷键依旧可以使用了。现在你可以愉快的提取消息以及使用TIM或QQ截图了。注意:设置的快捷键不要和系统已有的冲突了。还有一定要安装xdotool软件后脚本才能生效。