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

相關文章:

翻譯: