字数 1498,阅读大约需 8 分钟
Ubuntu 24.04下实现Linux版本微信独立配置双开

结论
本机已通过为第二个微信实例隔离 HOME 和 XDG 配置目录,实现原微信与“微信(分身)”同时运行。这里不是复制一份微信程序,也不是虚拟机或完整沙箱;两个实例共用 /opt/wechat 程序本体,但分别使用自己的锁文件、配置、缓存和聊天文件。第二个账号需要在分身窗口中自行扫码登录。
一、适用环境与目标
- • 系统:
Ubuntu 24.04.1,Linux 内核 7.0.0-28-generic,x86_64,X11 会话。 - • 微信安装方式:腾讯官方 Linux 微信 deb 包,已安装版本
4.1.1.4。 - • 原微信程序:
/opt/wechat/wechat,系统入口为 /usr/bin/wechat。 - • 目标:保留当前微信账号不变,再提供一个桌面入口,用于同时登录第二个微信账号。
- • 隔离方式:新建运行环境,不复制原微信安装目录、原
.xwechat 或原聊天记录。
二、初始检查
检查系统、安装入口、桌面文件和当前进程:
uname -acommand -v wechatsed -n '1,120p' /usr/share/applications/wechat.desktoppgrep -a -f 'wechat|WeChat'dpkg -l | rg -i 'wechat|wine'
当前系统情况:
/usr/bin/wechat -> /opt/wechat/wechatwechat 4.1.1.4原实例进程:/usr/bin/wechat原聊天文件目录:/home/ubuntu/文档/xwechat_files原配置根目录:/home/ubuntu/.xwechat
三、最终实现:隔离运行环境
最终方案是给分身设置独立的运行根目录。首次启动时由微信自己创建这些目录和运行文件;实现过程没有把原微信目录复制一份:
/home/ubuntu/.wechat-clone-home/├── .xwechat/ # 分身自己的微信配置、锁、日志、Radium 数据├── .config/ # 分身自己的 XDG 配置├── .cache/ # 分身自己的缓存└── .local/share/ # 分身自己的 XDG 数据/home/ubuntu/.wechat-clone-home/xwechat_files/└── # 分身聊天文件目录,首次登录后由微信写入
这样可以同时满足两个条件:
- 1. 主程序的
~/.xwechat 锁文件不再与原实例冲突; - 2. 聊天文件、缓存、登录状态和 WebView/Radium 数据不与原实例混用。
四、创建的启动脚本
脚本位置:/home/ubuntu/.local/bin/wechat-second
当前脚本内容:
#!/bin/shset -euclone_home="/home/ubuntu/.wechat-clone-home"mkdir -p "$clone_home"exec env \ HOME="$clone_home" \ XDG_CONFIG_HOME="$clone_home/.config" \ XDG_CACHE_HOME="$clone_home/.cache" \ XDG_DATA_HOME="$clone_home/.local/share" \ /opt/wechat/wechat "$@"
不要把脚本中的 HOME 理解成复制原用户目录。它只是让微信在启动时把“用户主目录”解析为 /home/ubuntu/.wechat-clone-home。微信随后在该目录下自行生成 .xwechat、xwechat_files、缓存和日志。
方案边界
这是“独立配置实例”,不是完整复制或完整隔离:
- • 共用:
/opt/wechat/wechat 程序本体、系统动态库、网络、显卡、音频和桌面会话。 - • 分开:
HOME、XDG 配置/缓存/数据、.xwechat 单实例锁、微信登录状态、微信聊天文件和 Radium/WebView 数据。 - • 不会自动复制:原账号聊天记录、联系人数据库、原
.xwechat 配置或原微信安装文件。
脚本权限为可执行:
chmod 755 /home/ubuntu/.local/bin/wechat-second
五、创建桌面应用入口
桌面文件位置:/home/ubuntu/.local/share/applications/wechat-second.desktop
[Desktop Entry]Name=微信(分身)Name[zh_CN]=微信(分身)Comment=使用独立配置登录第二个微信账号Comment[zh_CN]=使用独立配置登录第二个微信账号Exec=/home/ubuntu/.local/bin/wechat-second %UStartupNotify=trueTerminal=falseIcon=/usr/share/icons/hicolor/256x256/apps/wechat.pngType=ApplicationCategories=Utility;
应用入口经过校验:
desktop-file-validate /home/ubuntu/.local/share/applications/wechat-second.desktop
返回 OK 后,在 GNOME 应用菜单中搜索“微信(分身)”即可启动。
六、验证结果
启动分身后,确认原实例与分身主进程同时存在:
pgrep -a -x wechatps -eo pid,ppid,etime,args | rg '/opt/wechat/(wechat|RadiumWMPF)'
验证到的关键现象:
- • 原实例仍使用
/home/ubuntu/.xwechat 和原聊天目录; - • 分身主进程由独立的
HOME 启动;其子进程实际使用独立的微信文件目录: - • 分身的
WeChatAppEx 使用:--wmpf_root_dir=/home/ubuntu/.wechat-clone-home/.xwechat/radium--wechat-files-path=/home/ubuntu/.wechat-clone-home/xwechat_files
- • X11 窗口树中同时出现原微信和分身相关窗口;
- • 两个实例均通过独立的
Qt Selection Owner for wechat,没有复用同一主实例锁; - • 分身桌面窗口可以正常创建,最后的第二个账号扫码登录由用户完成。
七、日常使用
- 4. 后续两个入口分别启动即可;不要把原微信的
~/.xwechat 内容复制覆盖到分身目录。
若分身显示的是登录二维码,直接用第二个账号扫码。若分身已经残留了错误的登录状态,应只在分身窗口中退出登录,再重新扫码;不要删除原微信目录。
八、检查与故障排查
分身没有启动
pgrep -a -f 'wechat-files-path=/home/ubuntu/.wechat-clone-home/xwechat_files'find /home/ubuntu/.wechat-clone-home/.xwechat/log -maxdepth 1 -type f -printf '%TY-%Tm-%Td %TH:%TM:%TS %p\n'
确认原微信和分身没有被同一个脚本或同一个 HOME 启动。必要时从当前图形桌面会话直接点击“微信(分身)”,不要只在无图形环境的终端中测试。
分身和原微信互相退出
检查两个实例的启动命令,重点确认分身仍有:
HOME=/home/ubuntu/.wechat-clone-home--wechat-files-path=/home/ubuntu/.wechat-clone-home/xwechat_files
如果分身脚本被改成直接执行 /usr/bin/wechat,就会重新共享原来的单实例锁。
需要重新初始化分身
这是破坏性操作,只针对分身目录,不影响原账号。确认不需要分身内的聊天文件后,再移走或备份以下两个目录:
/home/ubuntu/.wechat-clone-home/home/ubuntu/.wechat-clone-home/xwechat_files
不要删除或覆盖:
/home/ubuntu/.xwechat/home/ubuntu/文档/xwechat_files
九、卸载分身入口与回滚
如果以后不再使用分身,先退出分身微信,再移除桌面入口和启动脚本:
rm /home/ubuntu/.local/share/applications/wechat-second.desktoprm /home/ubuntu/.local/bin/wechat-second
是否删除分身数据目录应单独决定;若需要保留历史聊天文件,先备份:
/home/ubuntu/.wechat-clone-home/home/ubuntu/.wechat-clone-home/xwechat_files
此回滚不会影响原微信,因为实现过程没有修改 /opt/wechat、原 .xwechat 或原聊天文件目录。