0%

修复 wine 微信黑色色块问题

本文介绍了在Linux下使用wine微信时可能出现的黑色色块问题,并提供了解决方案。通过安装xdotool工具和编写启动脚本,可以在微信成功登录后关闭黑色色块。同时,还介绍了修改微信快捷方式的方法,以便通过快捷方式启动微信并解决黑色色块问题。

前言

如果你看不懂标题,那么恭喜你,没有遇到这个心烦的问题.

Linux 下使用 wine 微信有一定概率会出现烦人的黑色色块,看它不爽,却又无可奈何,极大地影响了用户体验。刚好在 github 看到了一个解决方案,整理记录至此.

环境

编辑本文时笔者电脑的环境是:

  • Ubuntu 19.10
  • deepin-wine-ubuntu 2018-12-ubuntu3
  • deepin-wine-wechat

其他环境请自行举一反三.

步骤

安装 xdotool

因为后面的脚本要使用到 xdotool 这个工具,此处需要先行安装:

1
sudo apt-get install xdotool

wine 微信启动脚本

新建脚本文件 “run-wechat.sh”, 写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
"/opt/deepinwine/apps/Deepin-WeChat/run.sh">/dev/null 2>&1
start_succ=false
for i in {1..5}
do
xdotool search --onlyvisible --classname "WeChat.exe"
if [ $? == 0 ]
then
start_succ=true
break
fi
sleep 10
done
if [ $start_succ == false ]
then
exit 1
fi
windowclose=false
while :
do
retval=$(xdotool search --onlyvisible --classname "WeChat.exe")

if [ $? != 0 ]
then
exit 0
fi
login=true
for id in $retval
do
windowname=$(xdotool getwindowname $id)
if [ "$windowname" == "登录" ]
then
login=false
fi

if [ $windowclose == true ] && ([ "$windowname" == "" ] || [ "$windowname" == "ChatContactMenu" ])
then
xdotool windowclose $id
fi
done

if [ $windowclose == true ]
then
exit 0
fi
if [ $login == true ]
then
windowclose=true
fi
sleep 2
done

给脚本添加可执行权限:

1
chmod +x ./run-wechat.sh

此时脚本设置完成,可以尝试执行此脚本。脚本会在微信成功登录之后关闭黑色色块.

修改微信快捷方式

找到微信的快捷方式,deepin-wine-wechat 的快捷方式为 /usr/share/applications/deepin.com.wechat.desktop, 将 desktop 文件中 Exec 一行修改为:

1
Exec="${path}/run-wechat.sh" -u %u

其中:

${path} 表示 run-wechat.sh 脚本所在路径.

至此,就可以通过快捷方式启动微信,并且摆脱黑色色块的烦扰了.

参考文献

微信公众号
扫码关注,一起进步!