%global git_date 20241012 %global git_hash 33b3991 %global git_ver 0.1.9 %global rel 1 %global src_name %{name}-%{git_date}-%{git_hash}.tar.xz Name: niri Version: %{git_ver}^%{git_date}g%{git_hash} Release: %{rel}%{?dist} Summary: A scrollable-tiling Wayland compositor. License: GPL-3 URL: https://github.com/YaLTeR/niri Source: %{url}/%{src_name} BuildRequires: rust cargo make BuildRequires: gcc BuildRequires: libudev-devel BuildRequires: libgbm-devel BuildRequires: libxkbcommon-devel BuildRequires: wayland-devel BuildRequires: libinput-devel BuildRequires: dbus-devel BuildRequires: systemd-devel BuildRequires: libseat-devel BuildRequires: pipewire-devel BuildRequires: pango-devel BuildRequires: cairo-gobject-devel BuildRequires: clang BuildRequires: pkgconfig(libdisplay-info) Requires: mesa-dri-drivers %description Windows are arranged in columns on an infinite strip going to the right. Opening a new window never causes existing windows to resize. Every monitor has its own separate window strip. Windows can never "overflow" onto an adjacent monitor. Workspaces are dynamic and arranged vertically. Every monitor has an independent set of workspaces, and there's always one empty workspace present all the way down. The workspace arrangement is preserved across disconnecting and connecting monitors where it makes sense. When a monitor disconnects, its workspaces will move to another monitor, but upon reconnection they will move back to the original monitor. Features Scrollable tiling Dynamic workspaces like in GNOME Built-in screenshot UI Monitor screencasting through xdg-desktop-portal-gnome Touchpad gesture to switch workspaces Configurable layout: gaps, borders, struts, window sizes Live-reloading config %prep %autosetup -n %{name} %build cargo build --release %install install -p -D -m755 target/release/niri %{buildroot}%{_bindir}/niri install -Dm755 -t %{buildroot}%{_bindir} ./resources/niri-session install -Dm644 -t %{buildroot}%{_datadir}/wayland-sessions ./resources/niri.desktop install -Dm644 -t %{buildroot}%{_datadir}/xdg-desktop-portal ./resources/niri-portals.conf install -Dm644 -t %{buildroot}%{_userunitdir} ./resources/niri.service install -Dm644 -t %{buildroot}%{_userunitdir} ./resources/niri-shutdown.target %files %doc README.md %license LICENSE %{_bindir}/niri* %{_datadir}/wayland-sessions/* %{_datadir}/xdg-desktop-portal/* %{_userunitdir}/niri* %changelog %autochangelog