目录

参考文献

0. 引言

1. 安装Docker(已经有docker的直接跳过这部分,去看第二步)

2. 下载并安装Docker微信

3. 一些额外的配置操作

3.1 系统栏图标

3.2 将docker添加到sudo组,不需要每次用命令行时都输入密码

3.3 通过创建系统应用图标,通过点击GUI的方式打开微信

 4. 结语

2022年10月更新


参考文献

https://linuxize.com/post/how-to-install-and-use-docker-on-ubuntu-20-04/

Linux Ubuntu 20.04 LTS Docker 安装 微信 QQ

【Docker】非root用户加入docker用户组省去sudo (三)_jwensh的博客-CSDN博客_docker ubuntu 权限

0. 引言

通过Docker安装微信相比于wine和deepwine都稳定的多,毕竟整个环境是被测试过重新封装好的,所以这种又稳定又不占用太多内存的方式在我使用一段时间之后还是基本满意的。

但是毕竟是第三方做的,肯定没有深度或者windows那种官方维护的体验好,不过只要能解决基本通信使用的需求就谢天谢地了。

1. 安装Docker(已经有docker的直接跳过这部分,去看第二步)

        由于我人在国外,不需要换源,所以下载起来没有什么问题。有网络问题的,可能需要自己在国内解决一下,安装代码如下:

#先来更新一下包管理库
sudo apt update

#添加一下docker的包仓库的依赖文件
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

#添加仓库钥匙
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#把在线仓库连接加到你的更新源里
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

#默认安装最新版docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

检查一下docker状态:

sudo systemctl status docker

输出大概会显示Active(running)这类的信息,其实还挺吃内存的:

     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) 
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1461 (dockerd)
      Tasks: 32
     Memory: 1.0G
     CGroup: /system.slice/docker.service
             └─1461 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

2. 下载并安装Docker微信

最开始先允许Docker访问并控制xserver,wayland也可以,毕竟有xwayland。我自己的电脑就是Gnome on wayland, 完全没有问题。

#允许所有用户访问xwindow
xhost +

如果返回以下信息,代表已经打开访问权限了,这不是报错信息:

access control disabled, clients can connect from any host

然后下载封装好的微信docker image:

#拉取镜像,耗时和你的网速有关,我1000M网线直连大概需要一分钟不到
docker pull bestwu/wechat

接下来是最重要的将镜像安装到创建好的容器当中,分别采用fcitx和ibus两种输入法。

第一个命令(或者你保存成脚本执行也可以)是用fcitx的:

docker run -d --name wechat\
    --device /dev/snd\
    --ipc=host\
    -v /tmp/.X11-unix:/tmp/.X11-unix\
    -v /home:/home/你的机器名字/docker_wechat\
    -v /home/你的机器名字/WeChatFiles:/WeChatFiles\
    -e DISPLAY=unix$DISPLAY\
    -e XMODIFIERS=@im=fcitx\
    -e QT_IM_MODULE=fcitx\
    -e GTK_IM_MODULE=fcitx\
    -e AUDIO_GID=`getent group audio | cut -d: -f3`\
    -e GID=`id -g`\
    -e UID=`id -u`\
    bestwu/wechat




#第三行ipc=host是为了防止窗口持续闪退
#第五六行 -v /home/... 是你的容器数据和微信本身的用户数据的储存地址,你可以按照自己的需求修改
#切记用你的机器名代替掉代码中的汉字
#我的输入法是fcitx,sunpinyin,如果你是ibus,把 -e 的三行fcitx改成ibus就好

第二个命令用ibus的:

docker run \
    "${DEVICE_ARG[@]}" \
    --name wechat \
    -i \
    \
    -v "$HOME/WeChat/WeChat Files/":'/home/user/WeChat Files/' \
    -v "$HOME/WeChat/Applcation Data":'/home/user/.wine/drive_c/users/user/Application Data/' \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    \
    -e DISPLAY \
    -e DOCHAT_DEBUG \
    -e DOCHAT_DPI \
    \
    -e XMODIFIERS=@im=ibus \
    -e GTK_IM_MODULE=ibus \
    -e QT_IM_MODULE=ibus \
    -e AUDIO_GID="$(getent group audio | cut -d: -f3)" \
    -e VIDEO_GID="$(getent group video | cut -d: -f3)" \
    -e GID="$(id -g)" \
    -e UID="$(id -u)" \
    \
    --ipc=host \
    --privileged \
    bestwu/wechat


#这个script可以用ibus输入
#来源:https://www.codenong.com/cs105890693/

个人建议你把我的命令复制到一个txt文件中,按照自己的路径和各种需求去修改,然后在直接复制粘贴到你的终端中。

安装好之后,大概要等一段时间,docker毕竟不是原生deb软件,等一分钟不到就会跳出一个扫二维码登陆的界面,正常登陆就好。

重启开机后可以通过命令行启动并关闭docker 微信:

sudo docker stop wechat   #关闭
sudo docker start wechat   #启动
sudo docker restart wechat   #重启

记得取消掉自动更新,否则会有报错。

3. 一些额外的配置操作

3.1 系统栏图标

关闭GUI窗口之后可能会有一个小的wine tray栏,你可以通过点击tray的图标重新打开最小化的窗口。退出微信的话可以通过右键 - 退出微信。

但是我不确定这种退出会不会释放docker container占用的内存,所以保险起见,还是通过命令行启动和退出docker wechat。

如果不喜欢wine的这个小窗口,可以通过gnome的插件,让它隐藏到系统tray栏里。

插件地址:TopIcons Plus - GNOME Shell Extensions

调试的话,用tweaks就好,

tweaks安装命令行如下:

#启用 Universe 仓库
sudo add-apt-repository universe

#安装 Gnome Tweak Tool
sudo apt install gnome-tweak-tool

#启动 Gnome Tweak Tool,或者GUI点击开启
gnome-tweaks

安装好extension后效果大概如下:

 

 Horizontal alignment是调整icon的位置,自己按需调整位置和透明度(opacity)。最后效果:

这种插件有个bug,一旦你点击x键最小化窗口,当没有消息发来是,点击tray栏的微信图标就可以重新打开GUI界面,但是如果有别人给你发消息,栏里的微信icon就会消失,这样即便别人给你发消息,但是你没办法打开窗口。所以一般用 - 最小化窗口就行,不要点击 x 最小化。

3.2 将docker添加到sudo组,不需要每次用命令行时都输入密码

#检查一下已经存在的docker组
sudo cat /etc/group | grep docker
sudo usermod -aG docker $你的机器名

#检查一下这个组最下面有没有你刚添加的docker
cat /etc/group

#试一试可否不加sudo,直接用docker执行命令
docker  info

#如果提示docker.sock权限不够,则修改/var/run/docker.sock权限
sudo chmod a+rw /var/run/docker.sock

之后命令行启用微信时候简单docker就可以:

docker start wechat
docker stop wechat
docker restart wechat

3.3 通过创建系统应用图标,通过点击GUI的方式打开微信

首先给这个预设的icon设置一下点击后要执行的shell脚本,名字叫run.sh :

xhost +
docker stop wechat
docker start wechat

这里首先执行的是xhost +,每次重启开机后如果不用icon,通过命令行无法直接docker start wechat的时候,一般问题都是xhost权限没有开放给docker,所以重启后要先执行xserve的权限开放命令。

把这个脚本和微信图标文件放到同一个文件夹,路径你自己定义,后面要用(忽略docker_wechat.sh):

图标谷歌图片随便下载一个,放到同一路径下,命名为wechat.png。

接下来我们要创建一个可以执行run.sh的系统图标,其实和其他应用创建桌面图标步骤一模一样:

#进入管理系统应用图标的路径
cd /usr/share/applications

#创建一个叫wechat.desktop的文件
sudo gedit wechat.desktop

喜欢vim或者nano的用命令行就好,图形界面快一点,把如下代码按你自身情况修改后,复制进desktop.wechat:

[Desktop Entry]
Name=Wechat
Exec=bash "/home/你存放脚本路径/run.sh"
Terminal=true
Type=Application
Icon=/home/你存放脚本路径/wechat.png
StartupWMClass=Wechat
Comment=Wechat
MimeType=x-scheme-handler/Wechat;
Categories=Application;Development;

如果不报错就万事大吉了,如果提示权限不够,是因为xhost 和 docker 需要 root权限 ,所以这里使用 sudo bash 执行脚本(而非bash),这样每次双击图标需要输入一次密码:

[Desktop Entry]
Name=Wechat
Exec=sudo bash "/home/你存放脚本路径/run.sh"
Terminal=true
Type=Application
Icon=/home/你存放脚本路径/wechat.png
StartupWMClass=Wechat
Comment=Wechat
MimeType=x-scheme-handler/Wechat;
Categories=Application;Development;

保存后,通过图形界面你应该能看到这个icon了:

以后直接通过power键搜索wechat,回车就可以打开docker微信,会暂时弹出一个终端窗口运行脚本,会自动退出。如果你设置的是sudo bash,要手动输一下密码,等脚本执行完,大概十秒钟左右,毕竟不是原生Linux应用,一般情况下还是可以正常打开并使用的。

 4. 结语

这个版本的微信还是2019年的2.8.4,作者好像也没有更新封装的deepwine微信,但是功能层面肯定够用了。目前来说不能使用摄像头,但是语音通话基本能用,听说对方能听到的通话质量很差,但是起码能用了。

腾讯不给开发一个linux版的微信,这也实在是没有办法的办法。总的来说比wine下的微信稳定太多,主要是环境是成功测试过的,就不会出现各种dll缺失的问题。微信这种臃肿无比的软件,能占用800多mb,内存的话目前感觉不是占用特别厉害,听说会吃850mb左右。

最后,有什么问题可以留言,抽空看到后会回复 : )


2022年10月更新

经过优麒麟(Ubuntu Kylin)维护了近一年的原生deb微信安装包现在也比较稳定了,最近试了一下,完全可以取代wine+docker组合了,这里把资源贴一下。据说已经更新到2.1.5,可以修改URL自行下载,我这边无法下载,2.1.4完美运行已经满足了。

下载地址:https://archive.ubuntukylin.com/software/pool/partner/weixin_2.1.4_amd64.deb        

 安装方法还是老样子,apt 或者dpkg都可以用,直接下载好本地安装就可以

sudo apt install ./你的包名字.deb

说一下目前已知的几个问题: 

  1. 功能肯定和windows和macos版的没办法比。语音视频不能用这是必须的,表情只有默认,图片视频发送接收都没什么问题。语音正常播放,文字显示也没出现任何异常,也有可能是我之前安装过一些字体的原因。
  2. 第一次启动会很慢,应该是在从服务器上下载数据,总之对话是一个接一个的跳出来的,不过总算可以加载完所有对话,最近消息也都有,语音视频也都自动下载下来了。
  3. 界面有点小毛病,最上面的顶栏消失,有点别扭,但不影响使用。
  4. 朋友圈、公众号什么的不可以用。

总结一下:这个优麒麟和微信一起适配的deb原生版本绝对比QQ Beta那个要强太多了,主力Debian系的用户可以考虑一下了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐