Skip to content

Add kwin-libei backend - #9

Closed
jinliu wants to merge 4 commits into
archisman-panigrahi:kde-fixfrom
jinliu:feature/kwin-libei
Closed

Add kwin-libei backend#9
jinliu wants to merge 4 commits into
archisman-panigrahi:kde-fixfrom
jinliu:feature/kwin-libei

Conversation

@jinliu

@jinliu jinliu commented Apr 21, 2026

Copy link
Copy Markdown

KWin provides a libEI dbus interface, which requires no setup. Using it as the default input backend on KDE Plasma.

libEI wrapper code is from https://github.com/isac322/kwin-mcp

KWin provides a libEI dbus interface, which requires no setup. Using
it as the default input backend on KDE Plasma.
Copilot AI review requested due to automatic review settings April 21, 2026 05:29

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new KDE Plasma default input backend that injects input via KWin’s EIS D-Bus interface using libei, with fallback to the existing uinput backend elsewhere.

Changes:

  • Introduces a new KWinLibeiBackend and low-level EISClient (libei + KWin EIS D-Bus).
  • Updates backend selection to prefer KWin/libei on KDE Plasma and adds backend shutdown on quit.
  • Updates build/install and README dependency documentation to include the new module and D-Bus Python bindings.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
vboard/window.py Selects KWin/libei backend on KDE; calls backend.close() on quit.
vboard/libei.py New libei + KWin EIS D-Bus client implementation.
vboard/input_backends.py Adds KWinLibeiBackend; refactors key map to a module constant; adds close() hook.
meson.build Installs the new vboard/libei.py module.
README.md Documents extra dependency (python3-dbus) and notes uinput requirements by desktop.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread vboard/input_backends.py Outdated
Comment thread vboard/input_backends.py
Comment thread vboard/libei.py
Comment thread vboard/libei.py
Comment thread vboard/libei.py
Comment thread vboard/window.py
Comment thread README.md
Comment thread vboard/input_backends.py
@archisman-panigrahi

Copy link
Copy Markdown
Owner

Thanks for the PR. How do I test this? What is the use case?

@jinliu

jinliu commented Apr 23, 2026

Copy link
Copy Markdown
Author

It should work in KDE without needing to set up uinput. It talks to kwin via a private dbus interface.
No difference in other desktops.

@archisman-panigrahi

Copy link
Copy Markdown
Owner

Sorry, again, about the delay. Does this give any additional improvement over the uinput backend? I don't want to make the app overcomplicated unless it really helps a lot.

@jinliu

jinliu commented May 2, 2026

Copy link
Copy Markdown
Author

No. The only advantage is not having to setup uinput access.

And it's totally fine if you don't want this. Most work is done by the kwin-mcp project. I just did a little bridging work.

@archisman-panigrahi
archisman-panigrahi deleted the branch archisman-panigrahi:kde-fix May 10, 2026 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants