# Zen Browser RPM Spec File %global debug_package %{nil} %global __os_install_post %{nil} Name: zen-browser Version: 1.16b Release: 1%{?dist} Summary: Firefox-based browser focused on productivity License: MPL-2.0 URL: https://zen-browser.app Source0: https://github.com/zen-browser/desktop/archive/refs/tags/%{version}.tar.gz BuildRequires: nodejs >= 18.0.0 BuildRequires: npm BuildRequires: python3 BuildRequires: python3-pip BuildRequires: rust BuildRequires: cargo BuildRequires: git BuildRequires: wget BuildRequires: tar BuildRequires: gzip BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: make BuildRequires: cmake BuildRequires: pkgconfig BuildRequires: desktop-file-utils BuildRequires: ImageMagick BuildRequires: autoconf213 BuildRequires: wireless-tools-devel # Firefox build dependencies BuildRequires: autoconf213 BuildRequires: gtk3-devel BuildRequires: gtk2-devel BuildRequires: glib2-devel BuildRequires: pango-devel BuildRequires: freetype-devel BuildRequires: fontconfig-devel BuildRequires: cairo-devel BuildRequires: dbus-glib-devel BuildRequires: libXt-devel BuildRequires: libXext-devel BuildRequires: mesa-libGL-devel BuildRequires: alsa-lib-devel BuildRequires: pulseaudio-libs-devel BuildRequires: startup-notification-devel BuildRequires: curl-devel BuildRequires: wireless-tools-devel BuildRequires: libnotify-devel BuildRequires: libvpx-devel BuildRequires: yasm BuildRequires: nasm Requires: gtk3 Requires: glib2 Requires: pango Requires: freetype Requires: fontconfig Requires: cairo Requires: dbus-glib Requires: libXt Requires: libXext Requires: alsa-lib Requires: pulseaudio-libs Requires: startup-notification Requires: curl Requires: libnotify %description Zen is a Firefox-based browser with the aim of pushing your productivity to a new level! It features a clean, modern interface and enhanced productivity features while maintaining compatibility with Firefox extensions. %prep %setup -q -n desktop-%{version} %build # Install Node.js dependencies npm ci # Install Python dependencies python3 -m pip install --user -r requirements.txt # Set up build environment export MOZCONFIG=%{_builddir}/desktop-%{version}/mozconfig export MOZ_NOSPAM=1 export MOZ_QUIET=1 # Download and setup Firefox source npm run download # Import Zen modifications npm run import # Bootstrap the build environment npm run bootstrap # Build Zen Browser npm run build %install # Create installation directories mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_libdir}/zen-browser mkdir -p %{buildroot}%{_datadir}/applications mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps mkdir -p %{buildroot}%{_datadir}/icons/hicolor/32x32/apps mkdir -p %{buildroot}%{_datadir}/icons/hicolor/16x16/apps mkdir -p %{buildroot}%{_datadir}/pixmaps mkdir -p %{buildroot}%{_datadir}/zen-browser mkdir -p %{buildroot}%{_mandir}/man1 # Install the browser files cp -r engine/obj-x86_64-pc-linux-gnu/dist/zen/* %{buildroot}%{_libdir}/zen-browser/ # Create launcher script cat > %{buildroot}%{_bindir}/zen-browser << 'EOF' #!/bin/sh exec %{_libdir}/zen-browser/zen "$@" EOF chmod 755 %{buildroot}%{_bindir}/zen-browser # Create symlink for compatibility ln -s zen-browser %{buildroot}%{_bindir}/zen # Create desktop file cat > %{buildroot}%{_datadir}/applications/zen-browser.desktop << 'EOF' [Desktop Entry] Name=Zen Browser GenericName=Web Browser Comment=Firefox-based browser focused on productivity Exec=zen-browser %u Icon=zen-browser Type=Application Categories=Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; StartupNotify=true Actions=new-window;new-private-window; [Desktop Action new-window] Name=Open a New Window Exec=zen-browser -new-window [Desktop Action new-private-window] Name=Open a New Private Window Exec=zen-browser -private-window EOF # Install icons (assuming there are icon files in the source) if [ -f "docs/assets/zen-dark.svg" ]; then # Convert SVG to different sizes and install convert -background transparent "docs/assets/zen-dark.svg" -resize 128x128 %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/zen-browser.png convert -background transparent "docs/assets/zen-dark.svg" -resize 64x64 %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/zen-browser.png convert -background transparent "docs/assets/zen-dark.svg" -resize 48x48 %{buildroot}%{_datadir}/icons/hicolor/48x48/apps/zen-browser.png convert -background transparent "docs/assets/zen-dark.svg" -resize 32x32 %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/zen-browser.png convert -background transparent "docs/assets/zen-dark.svg" -resize 16x16 %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/zen-browser.png cp "docs/assets/zen-dark.svg" %{buildroot}%{_datadir}/pixmaps/zen-browser.svg fi # Install license and documentation cp LICENSE %{buildroot}%{_datadir}/zen-browser/ cp README.md %{buildroot}%{_datadir}/zen-browser/ %check desktop-file-validate %{buildroot}%{_datadir}/applications/zen-browser.desktop %files %license LICENSE %doc README.md %{_bindir}/zen-browser %{_bindir}/zen %{_libdir}/zen-browser/ %{_datadir}/applications/zen-browser.desktop %{_datadir}/icons/hicolor/*/apps/zen-browser.png %{_datadir}/pixmaps/zen-browser.svg %{_datadir}/zen-browser/ %post /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : update-desktop-database &> /dev/null || : %postun if [ $1 -eq 0 ] ; then /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi update-desktop-database &> /dev/null || : %posttrans /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %changelog * Mon Sep 23 2025 Package Maintainer - 1.16.1b-1 - Initial RPM package for Zen Browser - Firefox-based browser with productivity focus - Based on Firefox 143.0.1