概要
WeChat/微信とは中国大陸で広く使われているLINEのようなチャットサービスです.WeChatはスマートフォン向けアプリの他に,PC環境においても使用でき,それらはWeb版とアプリ版に大別できます.しかし,Windows/MacOS向けにはアプリ版がありますが,Ubuntu等のLinux向けにはそのようなアプリはリリースされておりません.そのため,多くのLinuxユーザはWeb版を使用しています.ところが,人によってはWeb版にログインできないことがあります.1
本稿では,Ubuntu上でWeChatを使用するために,Wineを使用しWindow版アプリを使う方法について記述します.ただし,Wineのインストールは多少やっかいであるため,Dockerを用いてその環境を作ろうと思います.しかし,調べているうちに,そもそもWeChatをDockerで使えるようにしてくれているものを見つけましたので,それを使用することとしました.
真新しい情報はありませんが,この話題について日本語で書かれたものはあまりありませんので,必要な方の手助けになると幸いです.
環境
- HOST OS: Ubuntu 19.10 2
- Docker version 19.03.6, build 369ce74a3c
- docker-compose version 1.25.1, build a82fef07
Docker, docker-composeのインストール方法は参考文献をご参照ください.
以下では,すでにdocker, docker-composeは導入されているものとして進めます.
手順
- Docker hub で公開されているimageをpullしてくる.
$ docker pull bestwu/wechat
-
作成者のGithub上のレポジトリ にかかれている内容を参考にして,
docker_compose_wechat.yml
を作成.
version: '2'
services:
wechat:
image: bestwu/wechat
container_name: wechat
devices:
- /dev/snd
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
- $HOME/WeChatFiles:/WeChat Files
command: apt update && apt install tzdata # (Optional) Set the timezone
environment:
- DISPLAY=unix$DISPLAY
- QT_IM_MODULE=fcitx
- XMODIFIERS=@im=fcitx
- GTK_IM_MODULE=fcitx
- AUDIO_GID=29 # (Optional) Default 29(ubuntu)host audio gid. Solve access permission of sound device.
- GID=1000 # (Optional) Default 1000 Host current user gid. Solve access permission of mounted directory.
- UID=1000 # (Optional) Default 1000 Host current user uid. Solve access permission of mounted directory.
- TZ=Asia/Tokyo # (Optional) Set the timezone to Asia/Tokyo.
ipc: "host"
- docker のコンテナを立ち上げる.
$ docker-compose -f docker_compose_wechat.yml up
これでWechatのGUIが起動されます.お疲れ様でした.
トラブルシューティング
基本的には以上の手順で終了のはずですが,環境によっては以下の問題が発生するかもしれません.私の環境で実際に発生した問題とその解決方法を共有します.
言語設定が中国語
言語設定の変更は,Window版WeChatと同様設定画面から行うことができます.
画面左下の $\equiv$ から「设置」を開き,「通用设置」タブを選択し,「语言」から言語を選択できます.選択可能な言語は,英語,簡体中文,繁体中文の3種類でした.
日本語入力ができない
このdocker_compose_wechat.yml
では,入力法フレームワークが Fcitx となっています.iBus を使っている人は,次のように書き換えます. 3
- - QT_IM_MODULE=fcitx
- - XMODIFIERS=@im=fcitx
- - GTK_IM_MODULE=fcitx
+ - QT_IM_MODULE=ibus
+ - XMODIFIERS=@im=ibus
+ - GTK_IM_MODULE=ibus
モバイル端末での認証後に画面が消える
PCでのWeChatのログイン時にモバイル端末での認証を求められますが,認証を行うと次のようなエラーが出力されウィンドウが消えることがあります.
wechat | [0326/093138:ERROR:network_change_notifier_win.cc(156)] WSALookupServiceBegin failed with: 8
wechat | X Error of failed request: BadValue (integer parameter out of range for operation)
wechat | Major opcode of failed request: 130 (MIT-SHM)
wechat | Minor opcode of failed request: 3 (X_ShmPutImage)
wechat | Value in failed request: 0x360
wechat | Serial number of failed request: xxxx
wechat | Current serial number in output stream: xxxx
アプリがXから共有メモリにアクセスしようとし,失敗したため.通常ホストとコンテナはメモリを共有していないため,このような問題が起きるようです.
したがって,コンテナがホストのメモリにアクセスできるようになればよいので,docker_compose.yml
にipc: "host"
を追加することで解決できました.456
時刻設定が中国標準時
tzdata
を用いて,タイムゾーンをAsia/Tokyo
に変更します.
参考文献
Docker Installation
公式ドキュメンテーションに沿ってインストールしました.
- Docker: https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Docker-compose: https://docs.docker.com/compose/install/
WeChat on WINE
Wineのインストールが結構大変な感じがします.
-
https://qiita.com/nanbuwks/items/bc6c3c171b7a3be981c9
- 日本語で書かれた,WeChatの使用のために様々な方法を試された記録です.
-
https://puzy.site/2019/11/27/Wine-on-Ubuntu-19-10/
- Ubuntu 19.10でのWine + WeChatの使用手順.中国語.
おまけ
WeChat Work版作った.https://github.com/Abemii/docker-wechat
-
ログインを試みても, "To protect your account, logging in to WeChat via the web has been suspended. Use WeChat for Windows or WeChat for Mac to log in on a computer. Download WeChat for Windows or Mac at http://wechat.com." というメッセージが表示され,ログインできない.この問題については,https://github.com/wechaty/wechaty/issues/872#issuecomment-336015830 において指摘されているとおり,Tencentのポリシー変更により,2017年6月以降に作られたアカウントはWeb Clientを使えなくなったことに起因するようです. ↩
-
Linuxであれば他の環境でも動作すると思います.実際,このdocker imageを提供してくれている方はFedoraを使用しているようです. ↩
-
https://github.com/bestwu/docker-wechat/issues/5#issuecomment-542476237 ↩
-
https://github.com/webanck/docker-wine-steam/issues/13#issuecomment-340247020 ↩
-
https://github.com/suchja/wine/issues/8#issuecomment-283151227 ↩