Files
feresaria/packaging/fedora/ferese.spec.in
T
Samuel Onoja 42c3b290dd Add audio and region recording; make routine CI manual (#25)
The top-bar recorder previously saved a full monitor without sound. It now lets you select a region within one monitor and choose system audio, microphone audio, or both. Audio remains off by default, and recordings with audio are saved as VP8/Opus WebM files. The portal still controls screen access and cancellation; stopping from the bar or ending the video stream finishes the recording, including its audio tracks.

Region selection accounts for fractional display scales and negative monitor coordinates. The picker keeps its action buttons visible while the display list and recording options scroll together. The picker, dependency lists, and recording documentation now explain the available choices and the slurp and audio requirements.

Routine pushes and pull requests no longer start CI runners. Workspace checks and website deployment are manual, while release checks run when requested manually, through a version tag, or through a PR labeled `release`. Publishing still requires a pushed version tag. This also fixes release asset checksums by normalizing RPM filenames before generating the checksum file.

Validated locally with a release build, portal and shell recorder tests, formatting, Clippy, actionlint, packaging tests, and mocked publishing checks. Media tests encoded and decoded cropped video with audio, checked that video termination finishes live audio, and exercised system, microphone, and combined capture against a private PipeWire-Pulse server. Mixed recordings must contain both fixture frequencies, with negative controls for either missing source. The picker was also checked on 800 × 600 and 800 × 400 desktops and opened in a live nested window.
2026-10-11 15:37:51 +01:00

80 lines
3.5 KiB
Plaintext

# dwz cannot compress the DWARF 5 sections emitted by Rust. Keep debug files
# without the optional DWARF compression pass.
%global _find_debuginfo_dwz_opts %{nil}
%global upstream_version @UPSTREAM_VERSION@
%bcond resize_metrics 0
Name: ferese
Version: @VERSION@
Release: 1%{?dist}
Summary: Scrolling Wayland desktop
# Includes vendored Rust libraries and theme palettes. Full notices ship
# under /usr/share/licenses/ferese, including per-dependency SPDX metadata.
License: MIT AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BSL-1.0 AND CC0-1.0 AND CDLA-Permissive-2.0 AND ISC AND MPL-2.0 AND Unicode-3.0 AND Unlicense AND Zlib AND OFL-1.1 AND (Apache-2.0 WITH LLVM-exception)
URL: https://github.com/ferese-wm/ferese
Source0: %{url}/releases/download/v%{upstream_version}/ferese-%{upstream_version}.tar.gz
BuildRequires: cargo >= 1.95
BuildRequires: rust >= 1.95
BuildRequires: gcc-c++ cmake make clang clang-devel python3 pkgconf-pkg-config
BuildRequires: wayland-devel libxkbcommon-devel libinput-devel systemd-devel libseat-devel
BuildRequires: mesa-libgbm-devel mesa-libEGL-devel libdrm-devel fontconfig-devel freetype-devel expat-devel
BuildRequires: mesa-dri-drivers mesa-vulkan-drivers
BuildRequires: pipewire-devel gstreamer1-devel dbus-daemon desktop-file-utils polkit-libs pam
BuildRequires: xorg-x11-xauth
Requires: pam polkit polkit-libs foot pipewire wireplumber python3 bash util-linux dbus-daemon dbus-tools systemd
Requires: xdg-desktop-portal xdg-desktop-portal-gtk
# Loaded at runtime, so ELF dependency detection does not find these libraries.
Requires: libEGL.so.1()(64bit) fontconfig freetype
Recommends: brightnessctl slurp wl-clipboard satty
Recommends: gstreamer1-plugins-base gstreamer1-plugins-good pipewire-gstreamer
Recommends: pipewire-pulseaudio
%description
Ferese includes a scrolling Wayland compositor, desktop shell, Settings,
lock screen, authentication agent and desktop portal in one package.
%prep
%autosetup -n ferese-%{upstream_version}
%build
export CARGO_HOME="$PWD/cargo-home"
export CARGO_PROFILE_RELEASE_DEBUG=0
%if %{with resize_metrics}
cargo build --release --frozen --offline --workspace --features ferese/resize-metrics
%else
cargo build --release --frozen --offline --workspace
%endif
%install
python3 scripts/package.py stage --destdir "%{buildroot}" --pam fedora
desktop-file-validate "%{buildroot}%{_datadir}/wayland-sessions/ferese.desktop"
desktop-file-validate "%{buildroot}%{_datadir}/applications/dev.ferese.Settings.desktop"
%check
export CARGO_HOME="$PWD/cargo-home"
export CARGO_PROFILE_RELEASE_DEBUG=0
export TZ=UTC
export XDG_RUNTIME_DIR="$(mktemp -d)"
trap 'rm -r -- "$XDG_RUNTIME_DIR"' EXIT
python3 -m unittest discover -s scripts/tests -p test_package.py
dbus-run-session -- cargo test --release --frozen --offline --workspace
%files
%{_bindir}/ferese*
%{_bindir}/xdg-desktop-portal-ferese
%{_libexecdir}/ferese/
%{_datadir}/ferese/
%{_datadir}/wayland-sessions/ferese.desktop
%{_datadir}/applications/dev.ferese.Settings.desktop
%{_datadir}/icons/hicolor/scalable/apps/ferese.svg
%{_datadir}/icons/hicolor/scalable/apps/dev.ferese.Settings.svg
%{_datadir}/xdg-desktop-portal/portals/ferese.portal
%{_datadir}/xdg-desktop-portal/ferese-portals.conf
%{_datadir}/dbus-1/services/org.freedesktop.impl.portal.desktop.ferese.service
/usr/lib/systemd/user/ferese-session.target
/usr/lib/systemd/user/xdg-desktop-portal-ferese.service
%config(noreplace) %{_sysconfdir}/pam.d/ferese-lock
%license %{_datadir}/licenses/ferese/
%doc %{_datadir}/doc/ferese/