Add XWayland support (#16)
* save dev state * fix xwayland-satellite supervisor lifecycle, readiness and cleanup * remove wayland scanner protocol generated files * default xwayland enabled with path * remove jargons * address x11 review: park unconfirmed cleanup, never signal a reaped group, fix storm test and notify dir mode * fix resize tests: never build Size values from negative dimensions * add min-width/min-height window rules that replace client minimum sizes * rename effective_size_constraints to effective_minimum_size and minor cleanups
This commit is contained in:
1 parent
ed23949a95
commit
a6f83689f8
42 files changed
+7162
-1333
No files matched your search
@@ -54,6 +54,62 @@ other distributions; check the [Smithay
|
||||
dependencies](https://github.com/Smithay/smithay#system-dependencies) for equivalent
|
||||
libraries.
|
||||
|
||||
### X11 support (optional)
|
||||
|
||||
To run X11-only applications, Ferese launches
|
||||
[xwayland-satellite](https://github.com/Supreeeme/xwayland-satellite),
|
||||
which in turn needs an `Xwayland` binary. Both are runtime dependencies, not
|
||||
build dependencies, and neither is needed to build Ferese.
|
||||
|
||||
- `Xwayland` ships with the X.Org server packages: `xorg-x11-server-Xwayland`
|
||||
on Fedora and Debian/Ubuntu, `xorg-xwayland` on Arch.
|
||||
- `xwayland-satellite` is not packaged by most distributions. Build or install
|
||||
it from its upstream releases **with its `systemd` feature enabled**
|
||||
(`cargo build --release --features systemd`). That feature is what sends the
|
||||
`READY=1` readiness notification Ferese waits for. Upstream's default feature
|
||||
set is empty, so a default build never sends it, Ferese's fixed 10-second
|
||||
startup budget expires, and the service reports a startup failure instead of
|
||||
a display. A spawned process that is still alive is not readiness.
|
||||
|
||||
Both the compositor's default and the packaged configuration ship with X11
|
||||
enabled, so a session with the two pieces above needs no configuration change.
|
||||
If you maintain your own `config.kdl`, the block to keep is
|
||||
|
||||
```kdl
|
||||
xwayland {
|
||||
enabled #true
|
||||
startup on-demand
|
||||
path "xwayland-satellite"
|
||||
}
|
||||
```
|
||||
|
||||
in `~/.config/ferese/config.kdl` and starting a new session, then check
|
||||
`feresectl xwayland status`. See
|
||||
[X11 support](configuration.md#x11-support-xwayland-satellite) for the full key
|
||||
list, diagnostics, and known limitations.
|
||||
|
||||
#### Sandboxed applications
|
||||
|
||||
Ferese keeps the X11 cookie in a private file under `$XDG_RUNTIME_DIR`, and
|
||||
applications inherit it through `XAUTHORITY`. Sandboxed packaging formats do not
|
||||
all make that path visible, so an X11-only application may fail to start even
|
||||
though `feresectl xwayland status` reports a running service.
|
||||
|
||||
Flatpak masks `/run/user/1000` with the application's own runtime directory, and
|
||||
a `fallback-x11` permission is not granted inside a Wayland session. Both effects
|
||||
deny the sandbox access to the display, so the application exits without a
|
||||
window. Grant the socket explicitly:
|
||||
|
||||
```sh
|
||||
flatpak override --user --socket=x11 com.spotify.Client
|
||||
```
|
||||
|
||||
Snaps under strict confinement usually expose the real `/run/user/1000`, so a
|
||||
snap that speaks X11 typically connects without extra configuration. That is a
|
||||
confinement detail rather than a guarantee: if a snap application still cannot
|
||||
reach the display, check whether its sandbox can read the `XAUTHORITY` path
|
||||
reported by `feresectl xwayland status`.
|
||||
|
||||
### Rust toolchain
|
||||
|
||||
Install Rust through [rustup.rs](https://rustup.rs/). The checkout's
|
||||
|
||||
Reference in new issue
Block a user