No description
Find a file
Shawn Wallace 47e7357eab xstate: refactor clipboard selections
Before, every time the clipboard selection changed, satellite would copy
everything on it and force itself to be the clipboard owner, regardless
of X11 or Wayland. Now, satellite is only the owner when the clipboard
owner comes from Wayland, and uses the XFixes extension to watch for
changes in clipboard ownership X11 side. Satellite also now avoids
copying all of the clipboard contents into memory every time, instead
copying directly on request. This is a pretty big change, but should
hopefully help make the clipboard more stable.

Also added some misc test cleanup/using helper functions where possible.
Using the XFixes extension may also end up being necessary for
implementing drag and drop, so it's good the infrastructure is there
now.
2025-01-08 23:57:22 -05:00
macros Replace simple_event_shunt macro with proc macro 2024-10-25 01:21:58 -04:00
resources Document systemd support and add example service file 2024-07-07 15:55:24 -04:00
src xstate: refactor clipboard selections 2025-01-08 23:57:22 -05:00
tests xstate: refactor clipboard selections 2025-01-08 23:57:22 -05:00
testwl xstate: refactor clipboard selections 2025-01-08 23:57:22 -05:00
wl_drm Set input focus on windows without WM_HINTS input flag 2024-05-20 01:26:06 -04:00
.gitignore Initial commit 2024-04-29 00:30:06 -04:00
Cargo.lock Bump version 2024-10-28 21:47:45 -04:00
Cargo.toml Set primary output when window focused 2024-12-18 01:49:55 -05:00
flake.lock add: nix flake (#53) 2024-09-14 11:09:49 -04:00
flake.nix Refactor flake for overridability, conditional service install, version formatting (#65) 2024-10-27 17:59:15 -04:00
LICENSE Initial commit 2024-04-29 00:30:06 -04:00
README.md Document systemd support and add example service file 2024-07-07 15:55:24 -04:00

xwayland-satellite

xwayland-satellite grants rootless Xwayland integration to any Wayland compositor implementing xdg_wm_base. This is particularly useful for compositors that (understandably) do not want to go through implementing support for rootless Xwayland themselves.

Dependencies

  • Xwayland >=23.1
  • xcb
  • xcb-util-cursor
  • clang (building only)

Usage

Run xwayland-satellite. You can specify an X display to use (i.e. :12). Be sure to set the same DISPLAY environment variable for any X11 clients. Because xwayland-satellite is a Wayland client (in addition to being a Wayland compositor), it will need to launch after your compositor launches, but obviously before any X11 applications.

Building

cargo build
cargo run

Systemd support

xwayland-satellite can be built with systemd support - simply add -F systemd to your build command - i.e. cargo build --release -F systemd.
With systemd support, satellite will send a state change notification when Xwayland has been initialized, allowing for having services dependent on satellite's startup.
An example service file is located in resources/xwayland-satellite.service - be sure to replace the ExecStart line with the proper location before using it. It can be placed in a systemd user unit directory (i.e. $XDG_CONFIG_HOME/systemd/user or /etc/systemd/user), and be launched and enabled with systemctl --user enable --now xwayland-satellite. It will be started when the graphical-session.target is reached, which is likely after your compositor is started if it supports systemd.