diff options
| author | Kent Daleng <lolexplode@gmail.com> | 2025-08-17 16:05:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-17 17:05:41 +0300 |
| commit | dc93f1c1fd7b67e2da5af2ffada732b9ddeb2d6a (patch) | |
| tree | a2f2938a7df17c196be7016dc5fe1fc9f75fb484 /wiki/Screencasting.md | |
| parent | a6febb86aa5af0df7bf2792ca027ef95a503d599 (diff) | |
| download | niri-dc93f1c1fd7b67e2da5af2ffada732b9ddeb2d6a.tar.gz niri-dc93f1c1fd7b67e2da5af2ffada732b9ddeb2d6a.tar.bz2 niri-dc93f1c1fd7b67e2da5af2ffada732b9ddeb2d6a.zip | |
github wiki replacement / mkdocs-docs (#2147)
* Add wiki based on mkdocs
* wording fixes
* fix github bg color on narrow
* Fix left sidebar section headers being bigger than pages
* fix hover accent
* fix list rendering on fractional layout
* fix videos
* fix automatic full links
* remove redundant commented css
* improve dark mode contrast
* update pygments for better child node coloring
* update logo
* remove blank lines
* add systemd language hint
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
Diffstat (limited to 'wiki/Screencasting.md')
| -rw-r--r-- | wiki/Screencasting.md | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/wiki/Screencasting.md b/wiki/Screencasting.md deleted file mode 100644 index 2f0aa70a..00000000 --- a/wiki/Screencasting.md +++ /dev/null @@ -1,136 +0,0 @@ -### Overview - -The primary screencasting interface that niri offers is through portals and pipewire. -It is supported by [OBS], Firefox, Chromium, Electron, Telegram, and other apps. -You can screencast both monitors and individual windows. - -In order to use it, you need a working D-Bus session, pipewire, `xdg-desktop-portal-gnome`, and [running niri as a session](./Getting-Started.md) (i.e. through `niri-session` or from a display manager). -On widely used distros this should all "just work". - -Alternatively, you can use tools that rely on the `wlr-screencopy` protocol, which niri also supports. - -There are several features in niri designed for screencasting. -Let's take a look! - -### Block out windows - -You can block out specific windows from screencasts, replacing them with solid black rectangles. -This can be useful for password managers or messenger windows, etc. - - - -This is controlled through the `block-out-from` window rule, for example: - -```kdl -// Block out password managers from screencasts. -window-rule { - match app-id=r#"^org\.keepassxc\.KeePassXC$"# - match app-id=r#"^org\.gnome\.World\.Secrets$"# - - block-out-from "screencast" -} -``` - -You can similarly block out layer surfaces, using a layer rule: - -```kdl -// Block out mako notifications from screencasts. -layer-rule { - match namespace="^notifications$" - - block-out-from "screencast" -} -``` - -Check [the corresponding wiki section](./Configuration:-Window-Rules.md#block-out-from) for more details and examples. - -### Dynamic screencast target - -<sup>Since: 25.05</sup> - -Niri provides a special screencast stream that you can change dynamically. -It shows up as "niri Dynamic Cast Target" in the screencast window dialog. - - - -When you select it, it will start as an empty, transparent video stream. -Then, you can use the following binds to change what it shows: - -- `set-dynamic-cast-window` to cast the focused window. -- `set-dynamic-cast-monitor` to cast the focused monitor. -- `clear-dynamic-cast-target` to go back to an empty stream. - -You can also use these actions from the command line, for example to interactively pick which window to cast: - -```sh -$ niri msg action set-dynamic-cast-window --id $(niri msg --json pick-window | jq .id) -``` - -https://github.com/user-attachments/assets/c617a9d6-7d5e-4f1f-b8cc-9301182d9634 - -If the cast target disappears (e.g. the target window closes), the stream goes back to empty. - -All dynamic casts share the same target, but new ones start out empty until the next time you change it (to avoid surprises and sharing something sensitive by mistake). - -### Indicate screencasted windows - -<sup>Since: 25.02</sup> - -The [`is-window-cast-target=true` window rule](./Configuration:-Window-Rules.md#is-window-cast-target) matches windows targeted by an ongoing window screencast. -You use it with a special border color to clearly indicate screencasted windows. - -This also works for windows targeted by dynamic screencasts. -However, it will not work for windows that just happen to be visible in a full-monitor screencast. - -```kdl -// Indicate screencasted windows with red colors. -window-rule { - match is-window-cast-target=true - - focus-ring { - active-color "#f38ba8" - inactive-color "#7d0d2d" - } - - border { - inactive-color "#7d0d2d" - } - - shadow { - color "#7d0d2d70" - } - - tab-indicator { - active-color "#f38ba8" - inactive-color "#7d0d2d" - } -} -``` - -Example: - - - -### Windowed (fake/detached) fullscreen - -<sup>Since: 25.05</sup> - -When screencasting browser-based presentations like Google Slides, you usually want to hide the browser UI, which requires making the browser fullscreen. -This is not always convenient, for example if you have an ultrawide monitor, or just want to leave the browser as a smaller window, without taking up an entire monitor. - -The `toggle-windowed-fullscreen` bind helps with this. -It tells the app that it went fullscreen, while in reality leaving it as a normal window that you can resize and put wherever you want. - -```kdl -binds { - Mod+Ctrl+Shift+F { toggle-windowed-fullscreen; } -} -``` - -Keep in mind that not all apps react to fullscreening, so it may sometimes look as if the bind did nothing. - -Here's an example showing a windowed-fullscreen Google Slides [presentation](https://youtu.be/Kmz8ODolnDg), along with the presenter view and a meeting app: - - - -[OBS]: https://obsproject.com/ |
