Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/stronnag/wayfarer

screen recorder for GNOME / Wayland / pipewire
https://github.com/stronnag/wayfarer

gnome pipewire screenrecorder wayland

Last synced: about 2 months ago
JSON representation

screen recorder for GNOME / Wayland / pipewire

Awesome Lists containing this project

README

        

# Wayfarer - Screen Recorder for GNOME / Wayland / Pipewire

## Features and limitations

**wayfarer** is a screen recorder for **GNOME** (and other desktop environments)

* Modern **GNOME desktop** (Arch, Fedora, Debian Testing, Ubuntu 22.04)
* Since version 1.2.4.**wlroots** desktops are also supported
* Wayland or Xorg
* Pipewire / Pulseaudio / libportal (XDG Desktop Portal)
* Wireplumber recommended

In X11 mode, it may support other desktops (untested); in Wayland mode, since 1.2.4 `wlroots` desktops are supported; other desktops are not supported (but may "work").

Requires the following (development) packages:

* Gtk 4
* Vala
* Gstreamer 1.0
* libpulse-mainloop-glib (libpulse-dev on Debian et al.)
* (optional, otherwise installed locally by the build system), Blueprint (Gtk Builder compiler).

* XDG Portal (at run time)

There is also an obsolete Gtk3 branch

* Gtk 3
* Vala
* Gstreamer 1.0
* AppIndicator
* XDG Portal

**wayfarer** supports MKV, MP4 and WebM video container (vp8, vp9, mp4) with Opus or MP3 as the audio format. The available video codecs presented in the UI are those discovered on your system. Where VAAPI versions are available, they will also be offered.

wayfarer uses the XDG Portal on modern desktops, with all the pain and diminished functionality that the portal implies.

* Portal connection is set to persist, pressing Control-R clears the persistent state, re-enabling the portal monitor selection screen.
* Selection across multiple monitors and full screen across multiple monitors is available
* Window selection is not supported, as the portal support is not helpful.

## User Interface

![Main Window](data/assets/wayfarer-window.png)

* Define an area using the `Set Source` control. Drag the displayed control to size.
- Right Mouse Button, Middle Mouse Button, "Space" or "Enter" to confirm.
- "Esc" to abort.
* Confirm the audio source
* `Delay` defines a delay (seconds) before recording starts
* `Timer` defines the length of the recording (seconds) : 0 (default) means user will stop the recording.
* `Record` starts the recording; requires an area defined or `Fullscreen`

If `Control_L` is pressed when `Set Source` is clicked, then the main window will be hidden during the area selection process.

If `Control_L` is pressed when `Record` is clicked, then the stop recording window will be hidden during the recording process.

Once recording is started:

* If `Timer` is set, the recording will run for the set number of seconds
* Gtk3: If an AppIndicator tray is used, there will be an icon in the system tray, clicking this provides a "Stop Recording" button.
* Gtk4: A small window provides a "Stop Recording" button.
* Gtk4/GnomeShell: The recording can be stopped from the panel Portal indicator.
* Otherwise, use the "Preferences" menu and set `Use notifications (vice App Indicator)`. Clicking on the notification will stop the recording.

The menu button at the right of the header bar offers three options:

* Preferences
* Reset Portal Token
* About
* Quit (or use the header bar close button)

### Portal Token Management

Wayland requires that the user authorise screen shot and similar activities on the grounds of privacy.This is enforced by requiring the user to make a positive selection of the monitor(s) authorised for screen capture, and a token is generated.

In order to minimise user annoyance, **wayfarer** caches the token as far as possible.

* The token is established (or restored from cache) by the "Set Selection" button.
* The token is invalidated by toggling "Full Screen" with multiple monitors.
* The user may invalidate the token via the menu option "Reset Portal Token" or pressing "Ctrl-R".
* When a valid token is registered, the "Record" button has a highlighted background.

### Preferences

![Main Window](data/assets/wayfarer-prefs.png)

* Use Notifications for ready : if set, a notification count down is shown for delays > 2 seconds.
* Use notifications (vice App Indicator). Provides a persistent Notification to stop recordings; mainly needed if you don't have an AppIndicator tray shell extension (on Gtk3) or you don't like the small 'Stop' window.

Preferences are stored as `GSettings` under the schema `org.stronnag.wayfarer`. In earlier versions a simple `key = value` text file in `~/.config/wayfarer/cap.conf` was used. The `cap.conf` file may be converted to `GSettings` by the conversion tool `wayfarer-convert-to-schema`. This tool is not installed, but is built by default and may be found in the `build` directory.

## Building

### Arch Linux

Arch Linux. Wayfarer is in the AUR [wayfarer-git](https://aur.archlinux.org/packages/wayfarer-git).

### General

Other requirements:

* Desktop specific visual portal selector (e.g. `xdg-desktop-portal-gnome`.

The build system is meson / ninja, e.g.

```
# Initial setup (one-off)
meson setup build --buildtype=release --prefix=~/.local
# then
ninja install -C build
```

#### Gtk3 extra dependency

Appindicator is a build time Gtk3 (only) dependency; at runtime, if you have an appindicator Gnome Shell extension installed, you can use the indicator to stop recording; without such an indicator, you can use Notification, with a less good user experience.

* For Arch Linux, install `libappindicator-gtk3`.
* On Debian / Ubuntu et al the app indicator package is called `libayatana-appindicator3-dev` and you also need `gir1.2-ayatanaappindicator3-0.1`.
* For Fedora, try `libappindicator-gtk3-devel`

For Gtk4, a small "Stop Recording" window is displayed instead.

## Miscellaneous

Licence : GPL v3 or later
(c) Jonathan Hudson 2021-2024

Inspired by other fine tools such as **kooha**, **peek** and **green-recorder**; I appreciate the other developer's pain with the ever moving targets of Gnome, Wayland, Pipewire and XDG Portal, particularly `kooha`'s guidance on the workings of GStreamer has been extremely useful.

### Bug reports

Please provide the `stderr` information (run wayfarer from a terminal).
Bug reports should also provide:

* Operating system and version
* Details of window manger / desktop environment / GPU