[Share Experiences] 关于linux版微信的消息通知不完整解决
Tofloor
poster avatar
rabbitwq
deepin
2022-05-11 02:18
Author

研究了一下linux版的微信,参考https://bbs.deepin.org/post/230040帖子的内容,找linux版消息相关的目录,似乎linux版微信没有像wine版微信有msg的目录来存储相关消息,(虽然有message目录,但通过观察,里面的文件不会随着有新消息而发生变化,所以就在目录中找其他目录想办法。最后发现在~/.config/weixin的目录中,有几个文件夹中文件会随着消息而变化,最终选择了~/.config/weixin/wechat/network/mmsession的目录作为消息传递的判定依据。虽然存在误报的情况(估计是因为其中的文件不仅因为消息而变化,可能和网络变化也有关系),但总算是有新消息的时候,也可以及时通知了。这是一个临时的不完美解决方案,还需要自己单独运行一个侦测进程,不知道各位大侠还有没有更好的方案。

Reply Favorite View the author
All Replies
心平气和
deepin
2022-05-11 02:58
#1

你要是有能力,你就逆向,通过call ,可以完美实现。或者 暴力破解数据库。

Reply View the author
jelly
deepin
2022-05-11 03:26
#2

给腾讯提建议,好使不

Reply View the author
心平气和
deepin
2022-05-11 03:28
#3
jelly

给腾讯提建议,好使不

等着吧,肯定会适配的。

Reply View the author
jelly
deepin
2022-05-11 03:31
#4
心平气和

等着吧,肯定会适配的。

那得等到猴年马月

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-05-11 04:28
#5

你可以改一下spark的微信包试试

加上这个功能

循环检测的时候先检测下微信是不是活着,如果死了就退出循环

这样似乎也不错

Reply View the author
rabbitwq
deepin
2022-05-11 05:07
#6
神末shenmo

你可以改一下spark的微信包试试

加上这个功能

循环检测的时候先检测下微信是不是活着,如果死了就退出循环

这样似乎也不错

我还是个小白,只能借着别人的成果搞一些简单基础的,看看大侠们谁会搞了。😂

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-05-11 06:00
#7
rabbitwq

我还是个小白,只能借着别人的成果搞一些简单基础的,看看大侠们谁会搞了。😂

你开出来然后我再魔改下,加到2.1.3-4版本里joy

Reply View the author
rabbitwq
deepin
2022-05-11 06:21
#8
神末shenmo

你开出来然后我再魔改下,加到2.1.3-4版本里joy

哈哈,我会的也就那么多了,还是大侠们来搞吧,我只能打打酱油了。😂

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-05-11 06:41
#9
rabbitwq

哈哈,我会的也就那么多了,还是大侠们来搞吧,我只能打打酱油了。😂

可以拿出来分享的

我其实也就是把各种砖头扔出来分享,能被用来盖楼就挺好,砸到大佬引出来玉那就更好了

Reply View the author
rabbitwq
deepin
2022-05-11 07:26
#10

刚才修改了一下监听语句,发现database里的文件是管控消息的,只是每次的发出和接收都会触发这个文件的修改动作,目前没有办法通过这个文件来判断是否是接收的消息。我先把修改的文件放在这里,大侠们看看还有什么办法。

#!/bin/bash

监听微信消息,发送系统通知

IFS="#"
wechat_file="/home/rabbit/.config/weixin/wechat/users/wxid_yn0eqtpr7rdb71/databases/wxid_yn0eqtpr7rdb71.db-wal"
while true
do
EVENT=​(inotifywait -q -e modify ${wechat_file})
if [ ! -z ${EVENT} ]
then
notify-send -i wechat "收到微信消息"
fi
done

Reply View the author
小小怪下士
deepin
2022-05-11 07:47
#11
rabbitwq

刚才修改了一下监听语句,发现database里的文件是管控消息的,只是每次的发出和接收都会触发这个文件的修改动作,目前没有办法通过这个文件来判断是否是接收的消息。我先把修改的文件放在这里,大侠们看看还有什么办法。

#!/bin/bash

监听微信消息,发送系统通知

IFS="#"
wechat_file="/home/rabbit/.config/weixin/wechat/users/wxid_yn0eqtpr7rdb71/databases/wxid_yn0eqtpr7rdb71.db-wal"
while true
do
EVENT=​(inotifywait -q -e modify ${wechat_file})
if [ ! -z ${EVENT} ]
then
notify-send -i wechat "收到微信消息"
fi
done

这个文件是一直在变的,所以这样写肯定不对

Reply View the author
deepin-superuser
deepin
2022-05-11 16:24
#12
神末shenmo

你开出来然后我再魔改下,加到2.1.3-4版本里joy

所以说 2.1.3-2 和 2.1.3-3 都修改了啥?

Reply View the author
Jerome
deepin
2022-05-11 17:36
#13
神末shenmo

可以拿出来分享的

我其实也就是把各种砖头扔出来分享,能被用来盖楼就挺好,砸到大佬引出来玉那就更好了

22.04不能登录的问题是怎么解决的?

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2022-05-11 19:18
#14
deepin-superuser

所以说 2.1.3-2 和 2.1.3-3 都修改了啥?

-2是加了个chmod,Debian 11在bwrap到/usr/lib的时候给的权限是700不让读

-3是换了优麒麟那边的包,体积减小而且可以在Ubuntu 22.04上跑

Reply View the author
sukanka
deepin
2022-05-12 00:19
#15
rabbitwq

刚才修改了一下监听语句,发现database里的文件是管控消息的,只是每次的发出和接收都会触发这个文件的修改动作,目前没有办法通过这个文件来判断是否是接收的消息。我先把修改的文件放在这里,大侠们看看还有什么办法。

#!/bin/bash

监听微信消息,发送系统通知

IFS="#"
wechat_file="/home/rabbit/.config/weixin/wechat/users/wxid_yn0eqtpr7rdb71/databases/wxid_yn0eqtpr7rdb71.db-wal"
while true
do
EVENT=​(inotifywait -q -e modify ${wechat_file})
if [ ! -z ${EVENT} ]
then
notify-send -i wechat "收到微信消息"
fi
done

我拿你的改了下,真的太恐怖了,一堆通知。还得开上 sleep

#!/usr/bin/bash
# 监听微信消息,发送系统通知
conf_dir=${XDG_CONFIG_HOME-"${HOME}/.config"}
user_id=$(find $conf_dir/weixin/wechat/users/ -type d -name "wxid*" -printf "%f\n")
personal_chat="$conf_dir/weixin/wechat/users/${user_id}/databases/${user_id}.db-wal"
group_chat="$conf_dir/weixin/wechat/users/${user_id}/databases/${user_id}_group.db-wal"
interval=15s

while true; do
    EVENT=(inotifywait−q−emodify ${personal_chat})
    if [ ! -z ${EVENT} ]; then
        notify-send -i wechat "收到微信私聊消息"
    fi
    EVENT=(inotifywait−q−emodify ${group_chat})
    if [ ! -z ${EVENT} ]; then
        notify-send -i wechat "收到微信群聊消息"
    fi
    sleep $interval
done
Reply View the author
84******59@qq.com
deepin
2022-05-13 04:55
#16
神末shenmo

-2是加了个chmod,Debian 11在bwrap到/usr/lib的时候给的权限是700不让读

-3是换了优麒麟那边的包,体积减小而且可以在Ubuntu 22.04上跑

请问一下,22.04可以用的微信,在哪里下载??hi

Reply View the author
153******46
deepin
2022-11-10 17:25
#17
rabbitwq

刚才修改了一下监听语句,发现database里的文件是管控消息的,只是每次的发出和接收都会触发这个文件的修改动作,目前没有办法通过这个文件来判断是否是接收的消息。我先把修改的文件放在这里,大侠们看看还有什么办法。

#!/bin/bash

监听微信消息,发送系统通知

IFS="#"
wechat_file="/home/rabbit/.config/weixin/wechat/users/wxid_yn0eqtpr7rdb71/databases/wxid_yn0eqtpr7rdb71.db-wal"
while true
do
EVENT=​(inotifywait -q -e modify ${wechat_file})
if [ ! -z ${EVENT} ]
then
notify-send -i wechat "收到微信消息"
fi
done

误判多不多

Reply View the author
rabbitwq
deepin
2022-11-13 03:14
#18
153******46

误判多不多

还是挺多的,所以我现在用spark商店里的wewechat了。这个wewechat在提醒和传递文件、转发方面感觉比linux版的微信好用,只是好像容易掉线。

Reply View the author
Pader
deepin
2025-03-30 23:12
#19

然而2025年了,新的Linux微信都出来了,微信在Linux上依然没有通知,我看他们不是没想到,而是不打算做Linux上的通知,微信是极其的封闭,连操作系统也休想拿到微信的任何一丁点数据。

Reply View the author