Document screen sharing across the website and handbook

This commit is contained in:
Samuel Onoja committed 2026-09-28 07:58:05 +01:00
1 parent e7d92280d6
commit a88d05a9f2
5 files changed
+47 -3

No files matched your search

+3
View File
@@ -28,6 +28,8 @@ cohesive experience—beautiful by default and unmistakably yours.
motion that update without restarting your session. motion that update without restarting your session.
- **Ready for real setups:** gestures, multi-monitor support, fractional - **Ready for real setups:** gestures, multi-monitor support, fractional
scaling, screenshots, background services and session locking. scaling, screenshots, background services and session locking.
- **Screen sharing:** a native display picker and PipeWire video streams for
portal-compatible recording and conferencing apps.
## Make it yours ## Make it yours
@@ -92,6 +94,7 @@ Settings → Shortcuts** to change them or assign gestures to other actions.
- [Desktop widgets](docs/desktop-widgets.md) - [Desktop widgets](docs/desktop-widgets.md)
- [Notifications](docs/notifications.md) - [Notifications](docs/notifications.md)
- [Native locker](docs/locking.md) - [Native locker](docs/locking.md)
- [Screen sharing and recording](docs/screen-sharing.md)
## Development ## Development
+29
View File
@@ -5,6 +5,9 @@ Applications use the standard desktop portal to request a display, then receive
video through PipeWire. A recorder or conferencing application handles encoding, video through PipeWire. A recorder or conferencing application handles encoding,
saving files, or sending video; those tasks do not run inside the compositor. saving files, or sending video; those tasks do not run inside the compositor.
There is no built-in Record button or video-file recorder in the shell yet.
Start recording from an application that supports the Wayland ScreenCast portal.
## Start sharing ## Start sharing
Use a Wayland screen-sharing or recording source in your application. Ferese Use a Wayland screen-sharing or recording source in your application. Ferese
@@ -55,6 +58,32 @@ or multiple-display recording can therefore use significant CPU and memory
bandwidth. A paused stream checks capture availability once per second so locking bandwidth. A paused stream checks capture availability once per second so locking
also ends sessions without an active consumer. also ends sessions without an active consumer.
## Development checks
Build the backend after installing the native dependencies in the
[installation guide](installation.md#requirements):
```sh
cargo build --release --locked -p xdg-desktop-portal-ferese
cargo test --locked -p xdg-desktop-portal-ferese
```
The opt-in integration test opens a temporary nested compositor and uses a
private D-Bus session. It requires built Ferese and locker binaries, Python
GI/GStreamer with `pipewiresrc`, `dbus-daemon`, `xdg-desktop-portal`, and `bwrap`.
It checks capture delivery, cancellation, frontend loss, and lock revocation:
```sh
FERESE_TEST_PORTAL=1 \
FERESE_TEST_PORTAL_BINARY=target/release/xdg-desktop-portal-ferese \
python3 scripts/tests/test_portal_isolated.py
```
Add `FERESE_TEST_PORTAL_CONSENT=1` to exercise the native picker and restricted
PipeWire connection. Select the temporary display and click **Share** when
prompted. Tests capture only the nested preview and leave host PAM policies and
D-Bus activation unchanged.
## Troubleshooting ## Troubleshooting
Confirm that `XDG_CURRENT_DESKTOP` contains `Ferese`, PipeWire is running, and Confirm that `XDG_CURRENT_DESKTOP` contains `Ferese`, PipeWire is running, and
+2 -1
View File
@@ -18,7 +18,8 @@ site sources or Markdown guides, then refresh the browser.
- `site/index.html` and `site/styles.css`: homepage and shared visual design. - `site/index.html` and `site/styles.css`: homepage and shared visual design.
- `site/content/index.md`: handbook introduction. - `site/content/index.md`: handbook introduction.
- `docs/{installation,configuration,desktop-widgets,notifications}.md`: source guides. - `docs/{installation,configuration,desktop-widgets,notifications,locking,screen-sharing}.md`:
source guides.
- `scripts/build-site.py`: renders Markdown, resolves links, generates section - `scripts/build-site.py`: renders Markdown, resolves links, generates section
navigation, previous/next links, and the search index. navigation, previous/next links, and the search index.
- `site/app.js`: handbook search and code copying. Reading and navigation work - `site/app.js`: handbook search and code copying. Reading and navigation work
+7 -2
View File
@@ -43,6 +43,13 @@ If you prefer a text editor, your configuration lives at:
Ferese reloads changes as you make them. An invalid edit keeps the last working configuration. Settings also preserves a backup of your previous save. See [Saving and validation](configuration.md#saving-and-validation). Ferese reloads changes as you make them. An invalid edit keeps the last working configuration. Settings also preserves a backup of your previous save. See [Saving and validation](configuration.md#saving-and-validation).
## Share your screen
Use Ferese’s native display picker to share a monitor with a portal-compatible
recording or conferencing app. The app handles saving or sending video; Ferese
does not yet have a Record button in the shell. See [Screen sharing and
recording](screen-sharing.md) for setup, stopping a session, and supported sources.
## Keep a recovery path ## Keep a recovery path
Keep another desktop session available while testing hardware behavior. Save your work before logging out: `feresectl exit` and **Super + Shift + E** end the current session immediately. Keep another desktop session available while testing hardware behavior. Save your work before logging out: `feresectl exit` and **Super + Shift + E** end the current session immediately.
@@ -59,5 +66,3 @@ cargo fmt --all --check
``` ```
The [source repository](https://github.com/ferese-wm/ferese) is the place to explore implementation details and report issues. When reporting a problem, include how to reproduce it, whether you used the nested or DRM backend, and relevant logs. The [source repository](https://github.com/ferese-wm/ferese) is the place to explore implementation details and report issues. When reporting a problem, include how to reproduce it, whether you used the nested or DRM backend, and relevant logs.
[Screen sharing](screen-sharing.md) covers display consent, PipeWire streams, and recording support.
+6
View File
@@ -112,6 +112,12 @@
<a href="docs/installation.html#preview-and-logs">preview Ferese</a> <a href="docs/installation.html#preview-and-logs">preview Ferese</a>
inside an existing Wayland session before installing. inside an existing Wayland session before installing.
</p> </p>
<p>
Share a display with recording and conferencing apps through Ferese’s
native screen-sharing portal. Choose what to share and stop at any time.
See <a href="docs/screen-sharing.html">screen sharing and recording</a>
for setup and current capabilities.
</p>
<p> <p>
Built in Rust on Smithay. Development happens Built in Rust on Smithay. Development happens
<a href="https://github.com/ferese-wm/ferese">on GitHub</a>. <a href="https://github.com/ferese-wm/ferese">on GitHub</a>.