aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorCodist2020-04-12 23:15:29 +0800
committerCodist2020-04-12 23:15:29 +0800
commit1e33df5058e80df282be36b5dc6aac9afa091b05 (patch)
tree2edb769b9f4cb0ec485015b28dd3968b2b1c9146
parentf24b4f8f85f51c4359942c536a1f6a3c00e39be0 (diff)
downloadaur-1e33df5058e80df282be36b5dc6aac9afa091b05.tar.gz
Remove 'popupshadow'
Signed-off-by: Codist <countstarlight@gmail.com>
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD12
-rw-r--r--README.md87
-rwxr-xr-xrun.sh28
-rw-r--r--shadow.cpp13
-rwxr-xr-xshadow.exebin0 -> 11776 bytes
6 files changed, 133 insertions, 13 deletions
diff --git a/.SRCINFO b/.SRCINFO
index cdda6a48cfee..27ad8690b901 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = deepin-wine-wechat
pkgdesc = Tencent WeChat (com.wechat) on Deepin Wine For Archlinux
pkgver = 2.8.0.133
- pkgrel = 2
+ pkgrel = 3
url = https://weixin.qq.com/
install = deepin-wine-wechat.install
arch = x86_64
@@ -23,10 +23,12 @@ pkgbase = deepin-wine-wechat
source = WeChatSetup-2.8.0.133.exe::https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe
source = run.sh
source = reg.patch
+ source = shadow.exe
md5sums = fe31cf4f0f6186fc1c99adc1512f5305
md5sums = 562d71c57e136a8aaa3be0d135092161
- md5sums = bb6327d7e6997a3d9e1852915bafd337
+ md5sums = 3c6b1957562a99ff3c845a29b8569244
md5sums = f264f961704f2aa1d480971b0e58617a
+ md5sums = 0138f993c99d899e609bad85c2c9a15c
pkgname = deepin-wine-wechat
diff --git a/PKGBUILD b/PKGBUILD
index 19f1810043e1..29f097956447 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -4,7 +4,7 @@ pkgname=deepin-wine-wechat
pkgver=2.8.0.133
wechat_installer=WeChatSetup
deepinwechatver=2.6.8.65deepin0
-pkgrel=2
+pkgrel=3
pkgdesc="Tencent WeChat (com.wechat) on Deepin Wine For Archlinux"
arch=("x86_64")
url="https://weixin.qq.com/"
@@ -16,11 +16,13 @@ _mirror="https://mirrors.ustc.edu.cn/deepin"
source=("$_mirror/pool/non-free/d/deepin.com.wechat/deepin.com.wechat_${deepinwechatver}_i386.deb"
"${wechat_installer}-${pkgver}.exe::https://dldir1.qq.com/weixin/Windows/${wechat_installer}.exe"
"run.sh"
- "reg.patch")
+ "reg.patch"
+ "shadow.exe")
md5sums=('fe31cf4f0f6186fc1c99adc1512f5305'
'562d71c57e136a8aaa3be0d135092161'
- 'bb6327d7e6997a3d9e1852915bafd337'
- 'f264f961704f2aa1d480971b0e58617a')
+ '3c6b1957562a99ff3c845a29b8569244'
+ 'f264f961704f2aa1d480971b0e58617a'
+ '0138f993c99d899e609bad85c2c9a15c')
build() {
msg "Extracting DPKG package ..."
@@ -34,6 +36,8 @@ build() {
rm -r "${srcdir}/deepinwechatdir/drive_c/Program Files/Tencent/WeChat"
msg "Patching reg files ..."
patch -p1 -d "${srcdir}/deepinwechatdir/" < "${srcdir}/reg.patch"
+ msg "Adding shadow.exe..."
+ cp "${srcdir}/shadow.exe" "${srcdir}/deepinwechatdir/drive_c/"
msg "Creating font file link ..."
ln -sf "/usr/share/fonts/wenquanyi/wqy-microhei/wqy-microhei.ttc" "${srcdir}/deepinwechatdir/drive_c/windows/Fonts/wqy-microhei.ttc"
msg "Repackaging app archive ..."
diff --git a/README.md b/README.md
index fb49f4ab6de0..0f665d463548 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,11 @@ Deepin打包的微信(WeChat)容器移植到Archlinux,不依赖`deepin-wine`
- [3. 对于非 GNOME 桌面(KDE, XFCE等)](#3-对于非-gnome-桌面kde-xfce等)
- [4. 删除原先的微信目录](#4-删除原先的微信目录)
- [5. 修复 `deepin-wine` 字体渲染发虚](#5-修复-deepin-wine-字体渲染发虚)
-- [常见问题](#常见问题)
+- [常见问题及解决](#常见问题及解决)
+ - [不能截图](#不能截图)
+ - [高分辨率屏幕支持](#高分辨率屏幕支持)
+ - [使用全局截图快捷键](#使用全局截图快捷键)
+ - [消除阴影边框](#消除阴影边框)
- [感谢](#感谢)
- [更新日志](#更新日志)
@@ -205,12 +209,83 @@ yay -S lib32-freetype2-infinality-ultimate
**注意:切换到 `deepin-wine` 后,对 `wine` 的修改,如更改dpi,都改为对 `deepin-wine` 的修改**
-## 常见问题
+## 常见问题及解决
-- [ ] 1.不能视频通话
-- [x] 2.不能截图(切换到 `deepin-wine` 后解决)
-- [x] 3.在 2k/4k 屏幕下字体和图标都非常小, 参见[issue1](https://github.com/countstarlight/deepin-wine-tim-arch/issues/1)
-- [x] 4.使用全局截图快捷键和解决Gnome上窗口化问题,参见[issue2](https://github.com/countstarlight/deepin-wine-tim-arch/issues/2)
+### 不能截图
+
+参照[切换到 `deepin-wine`](#切换到-deepin-wine) 解决
+
+### 高分辨率屏幕支持
+
+在 2k/4k 屏幕下字体和图标都非常小, 参见[issue1](https://github.com/countstarlight/deepin-wine-tim-arch/issues/1)
+
+### 使用全局截图快捷键
+
+使用全局截图快捷键和解决Gnome上窗口化问题,参见[issue2](https://github.com/countstarlight/deepin-wine-tim-arch/issues/2)
+
+### 消除阴影边框
+
+微信窗口不在最上方时,在其他窗口上会显示一个阴影边框,根据[用山寨方法解决wine运行微信残留阴影窗口的问题](https://blog.kangkang.org/index.php/archives/397),对原程序稍做修改编译出[shadow.exe](shadow.exe),在微信启动时运行,自动消除这个阴影边框。
+
+你也可以自行编译这个程序:
+
+```bash
+# 安装windows交叉编译工具链
+yay -S mingw-w64-gcc
+
+# 编译
+i686-w64-mingw32-g++ -municode -m32 -s shadow.cpp -o shadow
+```
+
+对于 `v2.8.0.133-2` 及之前的版本,不自带这个程序,可以自行将[shadow.exe](shadow.exe)放置到 `~/.deepinwine/Deepin-WeChat/drive_c/shadow.exe`
+
+并参照[run.sh](run.sh)在 `/opt/deepinwine/apps/Deepin-WeChat/run.sh` 中加入如下几行:
+
+```diff
+ if [ ! -f "$WINEPREFIX/reinstalled" ]
+ then
+ touch $WINEPREFIX/reinstalled
+- env WINEDLLOVERRIDES="winemenubuilder.exe=d" WINEPREFIX="$WINEPREFIX" $WINE_CMD $APPDIR/$WECHAT_INSTALLER-$WECHAT_VER.exe
++ env WINEDLLOVERRIDES="winemenubuilder.exe=d" WINEPREFIX="$WINEPREFIX" $WINE_CMD $APPDIR/$WECHAT_INSTALLER-$WECHAT_VER.exe &
+ else
+ #Support use native file dialog
+ export ATTACH_FILE_DIALOG=1
+
+ env WINEPREFIX="$WINEPREFIX" WINEDEBUG=-msvcrt $WINE_CMD "c:\\Program Files\\Tencent\\WeChat\\WeChat.exe" &
+ fi
++ RemoveShadow
+ }
+
++CheckProcess()
++{
++ if [ "$1" = "" ]; then
++ return 1
++ fi
++
++ PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
++ if [ $PROCESS_NUM -eq 0 ]; then
++ return 1
++ else
++ return 0
++ fi
++}
++
++# remove 'popupshadow'
++RemoveShadow()
++{
++ CheckProcess "shadow.exe"
++ Check_RET=$?
++ # run 'shadow.exe' if process not exist
++ if [ $Check_RET -eq 1 ]; then
++ env WINEPREFIX="$WINEPREFIX" WINEDEBUG=-msvcrt $WINE_CMD "c:\\shadow.exe" &
++ fi
++}
++
+ SwitchToDeepinWine()
+ {
+ if [ -d "$WINEPREFIX" ]; then
+
+```
## 感谢
diff --git a/run.sh b/run.sh
index cd85c0b2bf8a..30e7d0ecc55c 100755
--- a/run.sh
+++ b/run.sh
@@ -28,13 +28,14 @@ CallApp()
if [ ! -f "$WINEPREFIX/reinstalled" ]
then
touch $WINEPREFIX/reinstalled
- env WINEDLLOVERRIDES="winemenubuilder.exe=d" WINEPREFIX="$WINEPREFIX" $WINE_CMD $APPDIR/$WECHAT_INSTALLER-$WECHAT_VER.exe
+ env WINEDLLOVERRIDES="winemenubuilder.exe=d" WINEPREFIX="$WINEPREFIX" $WINE_CMD $APPDIR/$WECHAT_INSTALLER-$WECHAT_VER.exe &
else
#Support use native file dialog
export ATTACH_FILE_DIALOG=1
env WINEPREFIX="$WINEPREFIX" WINEDEBUG=-msvcrt $WINE_CMD "c:\\Program Files\\Tencent\\WeChat\\WeChat.exe" &
fi
+ RemoveShadow
}
ExtractApp()
{
@@ -94,6 +95,31 @@ CreateBottle()
fi
}
+CheckProcess()
+{
+ if [ "$1" = "" ]; then
+ return 1
+ fi
+
+ PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
+ if [ $PROCESS_NUM -eq 0 ]; then
+ return 1
+ else
+ return 0
+ fi
+}
+
+# remove 'popupshadow'
+RemoveShadow()
+{
+ CheckProcess "shadow.exe"
+ Check_RET=$?
+ # run 'shadow.exe' if process not exist
+ if [ $Check_RET -eq 1 ]; then
+ env WINEPREFIX="$WINEPREFIX" WINEDEBUG=-msvcrt $WINE_CMD "c:\\shadow.exe" &
+ fi
+}
+
SwitchToDeepinWine()
{
if [ -d "$WINEPREFIX" ]; then
diff --git a/shadow.cpp b/shadow.cpp
new file mode 100644
index 000000000000..30ca5bb5540c
--- /dev/null
+++ b/shadow.cpp
@@ -0,0 +1,13 @@
+#include "windows.h"
+LPCTSTR windowClassName = L"popupshadow";
+int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
+{
+ for (;;){
+ HWND h = FindWindowEx(NULL, NULL, windowClassName, NULL);
+ if (h != NULL) {
+ ShowWindow(h, SW_HIDE);
+ }
+ Sleep(3000);
+ }
+ return 0;
+} \ No newline at end of file
diff --git a/shadow.exe b/shadow.exe
new file mode 100755
index 000000000000..48a299776881
--- /dev/null
+++ b/shadow.exe
Binary files differ