# nautilus-miller-columns.spec # # Fork of Fedora's nautilus package that adds the Miller Columns view. # Base spec derived from Fedora 44 dist-git (src.fedoraproject.org/rpms/nautilus). # # Transparent replacement: this package is named nautilus-miller-columns but # Provides/Obsoletes the stock "nautilus" so that enabling the COPR and # installing it swaps the stock Files for the Miller Columns build. # Epoch is bumped so it wins version comparison against stock nautilus even # though it is pinned to the 50.1 base the patches target (stock is ahead). # # AI-assisted development disclosure (Fedora AI-Assisted Contributions Policy, # approved Oct 2025): parts of the Miller Columns patches in this package were # developed with AI assistance (Claude, Anthropic). All code is reviewed, # tested, and maintained by the human author (jguece). %bcond cloudproviders %{undefined rhel} %global glib2_version 2.79.0 %global gnome_autoar_version 0.4.4 %global gtk4_version 4.17.5 %global libadwaita_version 1.6~beta %global tarball_version %%(echo %%{version} | tr '~' '.') %global major_version %%(echo %%{tarball_version} | cut -d "." -f 1) # Upstream package being forked/replaced %global upstream_name nautilus Name: nautilus-miller-columns Epoch: 1 # Pinned to the Nautilus base the Miller Columns patches target. # Fedora stock may be ahead (e.g. 50.2.x); Epoch keeps this package winning. Version: 50.1 Release: 1%{?dist} Summary: GNOME Files (Nautilus) with the Miller Columns view # Sources are GPL-3.0-or-later and Appdata is CC0-1.0. License: GPL-3.0-or-later AND CC0-1.0 URL: https://gitlab.com/jguece/nautilus-miller-columns-patch Source0: https://download.gnome.org/sources/%{upstream_name}/%{major_version}/%{upstream_name}-%{tarball_version}.tar.xz # Miller Columns patches (generated with `git format-patch 50.1`) Patch1: 0001-feat-add-Miller-Columns-view-prototype-Ctrl-3.patch Patch2: 0002-feat-full-context-menu-and-keyboard-actions-for-Mill.patch Patch3: 0003-feat-keyboard-navigation-between-Miller-columns-and-.patch Patch4: 0004-feat-drag-and-drop-into-Miller-sub-columns-with-sele.patch Patch5: 0005-feat-multi-selection-rubberband-and-UX-refinements-f.patch Patch6: 0006-feat-resizable-columns-smooth-scroll-context-menu-fi.patch Patch7: 0007-feat-persist-Miller-Columns-view-across-restarts.patch Patch8: 0008-feat-add-zoom-support-for-Miller-Columns-view.patch Patch9: 0009-feat-add-empty-trailing-column-for-visual-breathing-.patch Patch10: 0010-fix-background-click-deselection-breadcrumb-nav-focu.patch Patch11: 0011-feat-show-cut-indicator-scissors-icon-for-cut-files-.patch Patch12: 0012-feat-Space-preview-sync-for-Miller-sub-columns.patch Patch13: 0013-feat-batched-sub-column-loading-with-spinner-and-sel.patch Patch14: 0014-feat-smooth-bidirectional-scroll-animation-for-Mille.patch Patch15: 0015-refactor-harden-timers-and-extract-helpers-to-reduce.patch Patch16: 0016-miller-propagate-sub-column-selection-to-file-choose.patch Patch17: 0017-fix-migrate-Miller-cell-thumbnails-to-NautilusImage-.patch Patch18: 0018-fix-prevent-cut-indicator-overlap-and-fallback-in-Mi.patch BuildRequires: desktop-file-utils BuildRequires: gcc BuildRequires: gettext BuildRequires: meson BuildRequires: pkgconfig(gexiv2-0.16) BuildRequires: pkgconfig(gi-docgen) BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} BuildRequires: pkgconfig(gnome-autoar-0) >= %{gnome_autoar_version} BuildRequires: pkgconfig(gnome-desktop-4) BuildRequires: pkgconfig(gobject-introspection-1.0) BuildRequires: pkgconfig(gsettings-desktop-schemas) BuildRequires: pkgconfig(gstreamer-pbutils-1.0) BuildRequires: pkgconfig(gstreamer-tag-1.0) BuildRequires: pkgconfig(gtk4) >= %{gtk4_version} BuildRequires: pkgconfig(libadwaita-1) >= %{libadwaita_version} %if %{with cloudproviders} BuildRequires: pkgconfig(cloudproviders) %endif BuildRequires: pkgconfig(libportal) BuildRequires: pkgconfig(libportal-gtk4) BuildRequires: pkgconfig(libseccomp) BuildRequires: pkgconfig(libselinux) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(tracker-sparql-3.0) BuildRequires: pkgconfig(x11) BuildRequires: /usr/bin/appstream-util # needed by test/automated/displayless BuildRequires: localsearch BuildRequires: pkgconfig(glycin-gtk4-2) BuildRequires: pkgconfig(blueprint-compiler) Requires: glib2%{_isa} >= %{glib2_version} Requires: gnome-autoar%{_isa} >= %{gnome_autoar_version} Requires: gsettings-desktop-schemas%{_isa} Requires: gtk4%{_isa} >= %{gtk4_version} Requires: gvfs%{_isa} %if ! 0%{?flatpak} Recommends: gvfs-fuse%{_isa} %endif Requires: libadwaita%{_isa} >= %{libadwaita_version} # the main binary links against libnautilus-extension.so # don't depend on soname, rather on exact version Requires: %{name}-extensions%{_isa} = %{epoch}:%{version}-%{release} # For the org.freedesktop.Tracker3.Miner.Files GSettings schema Requires: localsearch Recommends: glycin-thumbnailer%{_isa} Recommends: gst-thumbnailers%{_isa} Provides: bundled(libgd) # Transparent replacement of stock nautilus Provides: %{upstream_name} = %{epoch}:%{version}-%{release} Provides: %{upstream_name}%{?_isa} = %{epoch}:%{version}-%{release} Obsoletes: %{upstream_name} < %{epoch}:%{version}-%{release} %description Nautilus (GNOME Files) rebuilt with the Miller Columns view, a column-based hierarchical file browser (like the macOS Finder column view), activated with Ctrl+3 alongside the List (Ctrl+1) and Grid (Ctrl+2) views. This package replaces the stock nautilus package. It is NOT the official Nautilus. Report Miller Columns bugs at https://gitlab.com/jguece/nautilus-miller-columns-patch/-/issues and not on the GNOME GitLab. %package extensions Summary: Nautilus extensions library License: LGPL-2.1-or-later Provides: %{upstream_name}-extensions = %{epoch}:%{version}-%{release} Provides: %{upstream_name}-extensions%{?_isa} = %{epoch}:%{version}-%{release} Obsoletes: %{upstream_name}-extensions < %{epoch}:%{version}-%{release} %description extensions This package provides the libraries used by nautilus extensions. %package devel Summary: Support for developing nautilus extensions License: LGPL-2.1-or-later Requires: %{name}%{_isa} = %{epoch}:%{version}-%{release} Requires: %{name}-extensions%{_isa} = %{epoch}:%{version}-%{release} Provides: %{upstream_name}-devel = %{epoch}:%{version}-%{release} Provides: %{upstream_name}-devel%{?_isa} = %{epoch}:%{version}-%{release} Obsoletes: %{upstream_name}-devel < %{epoch}:%{version}-%{release} # Because web fonts from upstream are not bundled in the gi-docgen package, # packages containing documentation generated with gi-docgen should depend on # this metapackage to ensure the proper system fonts are present. Recommends: gi-docgen-fonts %description devel This package provides libraries and header files needed for developing nautilus extensions. %prep %autosetup -p1 -n %{upstream_name}-%{tarball_version} # Remove -Werror from compiler flags sed -i '/-Werror/d' meson.build %build %meson \ -Ddocs=true \ -Dextensions=true \ -Dintrospection=true \ -Dselinux=true \ -Dcloudproviders=%{?with_cloudproviders:true}%{?!with_cloudproviders:false} %{nil} %meson_build %install %meson_install %find_lang %{upstream_name} %check desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop %files -f %{upstream_name}.lang %doc NEWS README.md %license LICENSE %{_datadir}/applications/* %{_bindir}/* %{_datadir}/dbus-1/services/org.freedesktop.FileManager1.service %{_datadir}/dbus-1/services/org.gnome.Nautilus.service %dir %{_datadir}/gnome-shell %dir %{_datadir}/gnome-shell/search-providers %{_datadir}/gnome-shell/search-providers/org.gnome.Nautilus.search-provider.ini %{_datadir}/icons/hicolor/scalable/apps/org.gnome.Nautilus.svg %{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Nautilus-symbolic.svg %{_mandir}/man1/nautilus.1* %{_mandir}/man1/nautilus-autorun-software.1* %{_datadir}/glib-2.0/schemas/org.gnome.nautilus.gschema.xml %{_datadir}/nautilus/ %{_libdir}/nautilus/extensions-4/libnautilus-image-properties.so %{_libdir}/nautilus/extensions-4/libtotem-properties-page.so %{_metainfodir}/org.gnome.Nautilus.metainfo.xml %files extensions %license libnautilus-extension/LICENSE %{_libdir}/libnautilus-extension.so.4* %{_libdir}/girepository-1.0/Nautilus-4.1.typelib %dir %{_libdir}/nautilus %dir %{_libdir}/nautilus/extensions-4 %files devel %{_includedir}/nautilus %{_libdir}/pkgconfig/libnautilus-extension-4.pc %{_libdir}/libnautilus-extension.so %{_datadir}/gir-1.0/Nautilus-4.1.gir %doc %{_datadir}/doc/nautilus/ %changelog * Sat May 30 2026 jguece - 1:50.1-1 - Initial COPR build: Nautilus 50.1 + Miller Columns (18 patches, v0.1.1-50.1) - Transparent replacement of stock nautilus (Provides/Obsoletes + Epoch)