A Linux desktop automation service and C library for capture, window inspection and
control, clipboard access and compositor pointer operations. Applications use
libkeysharp-desktop.so.1; available operations depend on the active compositor.
Download your architecture's release from GitHub Releases. On Debian or Ubuntu:
sudo apt install ./keysharp-desktop_<version>_<arch>.deb
Other systemd distributions can extract the release archive and run sudo ./install.sh.
It checks and installs missing runtime dependencies before installing the services.
On GNOME or Cinnamon, the session service configures the bundled extension once
for each user and desktop, during startup or provider reconciliation. Switching
from Cinnamon to GNOME sets up GNOME separately;
a later manual disable remains in effect. If the provider needs repair, run
keysharp-desktop enable-extension as your graphical user and log out if requested.
See installation for source builds, updates and removal.
cc examples/list-windows.c $(pkg-config --cflags --libs keysharp-desktop) -o list-windows
Or link KeysharpDesktop::client after find_package(KeysharpDesktop 1.0 CONFIG REQUIRED).
Complete examples demonstrate listing windows and
capturing an area. Running them can request permission.
Initialize public structures with their ksd_*_init functions, release owned results
with ksd_*_clear, and use one connection from one thread at a time. Read
info.available_operations before calling compositor operations; connecting without
requested scopes does not open a permission dialog. The integration guide
documents status handling, capabilities and buffer ownership.
| Backend | Integration |
|---|---|
| X11 | Native XCB window, clipboard, capture and pointer operations |
| GNOME / Cinnamon | Bundled compositor extension |
| KWin / Plasma Wayland | Bundled KWin script and capture worker |
| Other Wayland compositors | Advertised standard, wlroots or COSMIC protocols; Hyprland IPC and screenshot portal where available |
Exact capabilities are discovered at runtime. Window fields that the compositor
cannot supply are absent. See platform support for operation
coverage and capture formats. Relative pointer movement, buttons and scrolling are
compatibility fallbacks; applications using keysharp-input should send those there.
The system authority authenticates callers and holds permanent grants. A new
executable identity requests its scopes through polkit; updated executable content
needs a new grant. Input Control is shared with the system keysharp-input service,
so granting or revoking it affects both. Permission details
explain individual scopes and revocation.
A user installation is also available. Its consent records are user-owned, cannot enforce isolation against same-user programs, and do not share grants with system services. See security for the threat model and reporting vulnerabilities.
keysharp-desktop info
keysharp-desktop probe
systemctl --user status keysharp-desktop.service
info reads local version/ABI metadata. Run probe as your graphical user to inspect
the backend and advertised operations. Repair instructions
cover missing extensions, disabled units and incomplete installations.
Manage grants with keysharp-desktop permissions list and keysharp-desktop permissions revoke.
This project releases independently of Keysharp. Applications use its public C ABI;
the socket protocol is private. The Debian capability keysharp-desktop-client-abi-1
identifies the ABI, with its provided version recording the ABI major and minor.
Applications should require or recommend the needed minor according to whether
desktop features are optional, and leave the shared service installed on removal.
MIT licensed.
A Linux desktop automation service and C library for capture, window inspection and
control, clipboard access and compositor pointer operations. Applications use
libkeysharp-desktop.so.1; available operations depend on the active compositor.
Download your architecture's release from GitHub Releases. On Debian or Ubuntu:
sudo apt install ./keysharp-desktop_<version>_<arch>.deb
Other systemd distributions can extract the release archive and run sudo ./install.sh.
It checks and installs missing runtime dependencies before installing the services.
On GNOME or Cinnamon, the session service configures the bundled extension once
for each user and desktop, during startup or provider reconciliation. Switching
from Cinnamon to GNOME sets up GNOME separately;
a later manual disable remains in effect. If the provider needs repair, run
keysharp-desktop enable-extension as your graphical user and log out if requested.
See installation for source builds, updates and removal.
cc examples/list-windows.c $(pkg-config --cflags --libs keysharp-desktop) -o list-windows
Or link KeysharpDesktop::client after find_package(KeysharpDesktop 1.0 CONFIG REQUIRED).
Complete examples demonstrate listing windows and
capturing an area. Running them can request permission.
Initialize public structures with their ksd_*_init functions, release owned results
with ksd_*_clear, and use one connection from one thread at a time. Read
info.available_operations before calling compositor operations; connecting without
requested scopes does not open a permission dialog. The integration guide
documents status handling, capabilities and buffer ownership.
| Backend | Integration |
|---|---|
| X11 | Native XCB window, clipboard, capture and pointer operations |
| GNOME / Cinnamon | Bundled compositor extension |
| KWin / Plasma Wayland | Bundled KWin script and capture worker |
| Other Wayland compositors | Advertised standard, wlroots or COSMIC protocols; Hyprland IPC and screenshot portal where available |
Exact capabilities are discovered at runtime. Window fields that the compositor
cannot supply are absent. See platform support for operation
coverage and capture formats. Relative pointer movement, buttons and scrolling are
compatibility fallbacks; applications using keysharp-input should send those there.
The system authority authenticates callers and holds permanent grants. A new
executable identity requests its scopes through polkit; updated executable content
needs a new grant. Input Control is shared with the system keysharp-input service,
so granting or revoking it affects both. Permission details
explain individual scopes and revocation.
A user installation is also available. Its consent records are user-owned, cannot enforce isolation against same-user programs, and do not share grants with system services. See security for the threat model and reporting vulnerabilities.
keysharp-desktop info
keysharp-desktop probe
systemctl --user status keysharp-desktop.service
info reads local version/ABI metadata. Run probe as your graphical user to inspect
the backend and advertised operations. Repair instructions
cover missing extensions, disabled units and incomplete installations.
Manage grants with keysharp-desktop permissions list and keysharp-desktop permissions revoke.
This project releases independently of Keysharp. Applications use its public C ABI;
the socket protocol is private. The Debian capability keysharp-desktop-client-abi-1
identifies the ABI, with its provided version recording the ABI major and minor.
Applications should require or recommend the needed minor according to whether
desktop features are optional, and leave the shared service installed on removal.
MIT licensed.