You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For GNOME, kimpanel extension can read window coordinate since it's running inside compositor. As long as im module can report relative coordinate, kimpanel extension can display the popup window at the correct position. As similar approach for Plasma kimpanel is planned, but not yet implemented.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
我在尝试编写一个 kimpanel,仓库在这 Aikakim。
我遇到了一些问题,希望可以得到帮助🙏
以下,我提到的 x 窗口指的是运行在 xwayland 中的 vscode,wayland 窗口是 kitty。
我参考了gnome-shell-extension-kimpanel实现了dbus的部分。
在 x 窗口上输入时,可以通过 SetSpotRect 调用获取光标位置。但是在 wayland 窗口中输入时,SetSpotRect 的输入参数全部为0。我没法获取正确的光标位置。
我查看了 Fcitx wiki 的这一页(Using_Fcitx_5_on_Wayland)。
其中提到:
我查看了 gnome-shell-extension-kimpanel 的源代码,似乎只有 kimpanel2 接口的部分跟位置相关,我不清楚这个扩展是怎么获取 wayland 窗口上的坐标的,是不是 Gnome 与这个扩展之间还有 kimpanel 之外的通信使其可以获取正确的光标位置呢?
关于这句
我认为这里的
im module
指的是org.kde.kimpanel.inputmethod
这个 dbus 接口,不知道对不对,因为我看到其中有UpdateSpotLocation
事件,但是我监听这个事件没有获得如何输出。这是在预期之内的结果吗?我又查看了 zwp_text_input_v3 协议,希望可以获得一点线索。我尝试在我的程序里对接这个接口,这个过程让我非常疲惫,在我开始有进展时,我通过设置
WAYLAND_DEBUG=1
来观察 Wayland 的事件,发现在我打字时并没有zwp_text_input_v3::set_cursor_rectangle
相关的输出。于是我暂时放弃了这个协议。我在尝试理解这些,我又查看了 zwp_input_method_v2,因为这是我第一次接触这种东西,在开始做什么之前,我想先在这里获得一些帮助,避免无用功。
我想知道这两个协议是什么关系,我能否通过这两个协议获取光标的位置呢?
我也查看了 Fcitx5 的源代码,但是我不懂 cpp,所以看的非常吃力。我的发现是,Fcitx5 是直接通过 wayland 协议进行绘图的,所以 Fcitx5 的预选窗口在 wayland 中不是 layer 也不是 window 。除此之外,我也看了src/ui/classic 里 wayland 开头的文件,试图获取 Fcitx5 能正确显示在 Wayland 上的”秘密“,但是我看得好痛苦(。
所以最后一个疑问是,Fcitx5 是如何在 Wayland 中获取光标位置的呢?
希望可以获得解答!感谢!
Beta Was this translation helpful? Give feedback.
All reactions