web1n / wechat-universal-flatpak

Flatpak 打包微信 Linux Universal 版
645 stars 43 forks source link

微信截图后无法复制到其他软件 #3

Open web1n opened 6 months ago

web1n commented 6 months ago

微信截图会保存到此目录:~/xwechat_files/wxid_{xxx}/temp/snapshot/{xxx}.jpg,设备实际上不存在此目录。复制截图后仅微信可以粘贴,而其他应用无法粘贴。

zhuzhiyongkeyide commented 6 months ago

archlinux 已经可以粘贴到浏览器

web1n commented 6 months ago

archlinux 已经可以粘贴到浏览器

你用的 aur 包吗

zhuzhiyongkeyide commented 6 months ago

就用的这个项目里面的,aur 里的启动报错

zhuzhiyongkeyide commented 6 months ago

image 这张图片是用微信截图的

kuailecs54 commented 6 months ago

image

kuailecs54 commented 6 months ago

截图后直接复制 可以使用啊

web1n commented 6 months ago

我这边不管是浏览器还是其他应用复制都是有问题的,之后换个设备再试一下

iamcheyan commented 6 months ago

2024-03-15 14-48-06屏幕截图 使用 flatseal 给全部文件权限即可。

auralioth commented 6 months ago

2024-03-15 14-48-06屏幕截图 使用 flatseal 给全部文件权限即可。

这不合适吧

auralioth commented 5 months ago

感觉倒是可以像dde-file-manager把复制的路径改成真实的路径

在wayland下面可以借助wl-clipboard实现:

image-fix.sh

#!/usr/bin/env bash

fake_path="file://$HOME/xwechat_files"
real_path="$HOME/.var/app/com.tencent.WeChat/xwechat_files"

if [[ "$(wl-paste -l)" =~ "application/x-mimedata-xwechat" ]] && [[ "$(wl-paste -l)" =~ "text/x-moz-url" ]]; then
    clip_image=$(wl-paste)
    if [[ "$clip_image" =~ "$fake_path" ]]; then
        real_image=$(echo "$clip_image" | sed "s|$fake_path|$real_path|")

        wl-copy <"$real_image"
        echo "wechat图像已替换"

    fi
fi

然后监测剪切板

wl-paste -w bash -c <script path>

只是我kde下面wl-copy图像后没有同步到kde的自带剪切板上

web1n commented 5 months ago

感觉倒是可以像dde-file-manager把复制的路径改成真实的路径

在wayland下面可以借助wl-clipboard实现:

image-fix.sh

#!/usr/bin/env bash

fake_path="file://$HOME/xwechat_files"
real_path="$HOME/.var/app/com.tencent.WeChat/xwechat_files"

if [[ "$(wl-paste -l)" =~ "application/x-mimedata-xwechat" ]] && [[ "$(wl-paste -l)" =~ "text/x-moz-url" ]]; then
  clip_image=$(wl-paste)
  if [[ "$clip_image" =~ "$fake_path" ]]; then
      real_image=$(echo "$clip_image" | sed "s|$fake_path|$real_path|")

      wl-copy <"$real_image"
      echo "wechat图像已替换"

  fi
fi

然后监测剪切板

wl-paste -w bash -c <script path>

只是我kde下面wl-copy图像后没有同步到kde的自带剪切板上

分析了一下,微信截图文件是 .jpg 后缀,但实际上是 png 格式的。

执行 wl-copy < ~/.var/app/com.tencent.WeChat/xwechat_files/wxid_xxx/temp/snapshot/xxx.jpg KDE 剪切板无法显示缩略图,但实际上可以在 Dolphin 中粘贴为文件。修改后缀为 png 或是加 -t image/png 参数指定 mime 类型之后 KDE 剪切板可以正常显示缩略图。

#!/usr/bin/env bash

fake_path="file://$HOME/xwechat_files"
real_path="$HOME/.var/app/com.tencent.WeChat/xwechat_files"

if [[ "$(wl-paste -l)" =~ "application/x-mimedata-xwechat" ]] && [[ "$(wl-paste -l)" =~ "text/x-moz-url" ]]; then
        clip_image=$(wl-paste)
        if [[ "$clip_image" =~ "$fake_path" ]]; then
                real_image=$(echo "$clip_image" | sed "s|$fake_path|$real_path|")
                echo "real $real_image"

                wl-copy -t "image/png" < "$real_image"
                echo "wechat图像已替换"

        fi
fi

上面的脚本添加设定 mime 类型后可以替换剪切板,KDE 剪切板也能正常显示略缩图。

web1n commented 5 months ago

我在打包脚本中加了一条 sed -i 's/%1.jpg/%1.png/g' wechat,使微信保存截图文件后缀为 png。 image

image-fix.sh 内容修改如下,增加了显示剪切板中文件 mime 类型的功能。

#!/usr/bin/env bash

fake_path="file://$HOME/xwechat_files"
real_path="$HOME/.var/app/com.tencent.WeChat/xwechat_files"

if [[ "$(wl-paste -l)" =~ "application/x-mimedata-xwechat" ]] && [[ "$(wl-paste -l)" =~ "text/x-moz-url" ]]; then
        clip_image=$(wl-paste)
        if [[ "$clip_image" =~ "$fake_path" ]]; then
                real_image=$(echo "$clip_image" | sed "s|$fake_path|$real_path|")
                echo "real $(file $real_image)"

                wl-copy < "$real_image"
                echo "wechat图像已替换"

        fi
fi

此时再次截图,保存的文件后缀成功变为 png,而文件格式变成了 jpeg。 image

image

感觉这个是微信逻辑写错了,可能需要向他们反馈一下。

auralioth commented 5 months ago

我尝试一下

auralioth commented 5 months ago

之前kde剪切板的选中非文本内容一直设置为永不保存(可能是默认?忘记有没有改过)

现在改了确实可以了,感谢

engineerNg commented 5 months ago

gnome下这个问题有解决方法吗?

yuyumiao commented 5 months ago

ubuntu-22.04.4 gnome-42.9,软件内截图键或者是快捷键alt+a都先调用系统自带的截整个屏幕的全图,然后才会调用微信的截图工具截这张全图中的可选择的区域。这是啥的bug

web1n commented 5 months ago

ubuntu-22.04.4 gnome-42.9,软件内截图键或者是快捷键alt+a都先调用系统自带的截整个屏幕的全图,然后才会调用微信的截图工具截这张全图中的可选择的区域。这是啥的bug

这有什么 bug?

yuyumiao commented 5 months ago

就是这样的吗😨比较突兀的是系统截了屏之后会弹个分享弹窗,如果关掉了这个弹窗就就没有截图了

web1n commented 5 months ago

就是这样的吗😨比较突兀的是系统截了屏之后会弹个分享弹窗,如果关掉了这个弹窗就就没有截图了

我是 23.10,截图时候不会出现分享窗口。可以跟微信反馈一下看看。

yuyumiao commented 5 months ago

谢谢大佬解惑🙏

yuyumiao commented 4 months ago

改成xorg之后就没这个问题了。。。。