Seven's blog

你不会找到路,除非你敢于迷路

0%

修复 wine 微信黑色色块问题

前言

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

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 脚本所在路径.

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

参考文献

  • 微信登陆后有一个窗口无法关掉 #207
微信公众号
扫码关注, 一起进步!