Wayland环境ksnip无法复制问题解决

之前写过 wayland 环境下截图,再用 ksnip 修改图片的文章,最近才发现修改完图片,部分情况下无法复制图片,还找不出触发 bug 的规律 🤷‍♂️。

解决方法如下:

修改截图脚本

1➜  ~ cat .config/labwc/screenshot.sh
2#!/bin/sh
3NOW=$(date +"%Y-%m-%d-%H%M%S")
4grim -g "$(slurp )" -t png $HOME/Pictures/grim-$NOW.png
5QT_QPA_PLATFORM=xcb /usr/bin/ksnip $HOME/Pictures/grim-$NOW.png

QT_QPA_PLATFORM=xcb /usr/bin/ksnip 启动前传入环境变量,启用 XWayland,这样不影响其它软件。

  • xcb 是什么呢?

The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility.

  • QPA 又是啥?

QPA is the platform abstraction layer for Qt 5 and replaces QWS and the platform ports from Qt 4.

查看这个链接,里面还有 YouTube 视频介绍,有兴趣的可以看看。

  • QT_QPA_PLATFORM 又是什么鬼?

Qt will select a default QPA plugin, depending on the platform. The QT_QPA_PLATFORM environment variable and the -platform command line argument allow you to override this default. See QGuiApplication for more details.

意思是通过 qt 相关环境变量设置,让 qt 程序呼叫 xcb 外援,使其能处理 X 协议,最终切换到 XWayland 模式,好比很多游戏角色,变身后才有特异技能,ksnip 在 wayland 环境下,需要开启 XWayland 才能复制。

好多软件需要开启 XWayland 才能输入中文 🤷,相比起来这点配置不算什么!

smug shrug

重启相关环境

在我的 labwc 环境中,zhscreeenshot.sh是启动时载入内存中,并设定触发快捷键,所以要生效必须重启下,光改脚本是不够的。

实测改动后,复制操作再也没有出现异常,看来 XWayland 还是必须的,离纯 Wayland 环境无差错工作还距离。

伟人勉励话

“总之,前途是光明的,道路是曲折的。我们面前困难还多,不可忽视。我们和全体人民团结起来,共同努力,一定能够排除万难,达到胜利的目的。” —— 毛泽东

最后修改于: Thursday, September 21, 2023
欢迎关注微信公众号,留言交流。

相关文章:

翻译: