%global cef_version 143.0.14+gdd46a37+chromium-143.0.7499.193 %global cef_dir cef_binary_%{cef_version}_linux64_minimal Name: brow6el Version: 0.3.4 Release: 2%{?dist} Summary: Terminal web browser with Sixel and Kitty graphics support License: MIT AND BSD-3-Clause URL: https://codeberg.org/janantos/brow6el Source0: %{name}-%{version}.tar.gz Source1: cef_binary_%{cef_version}_linux64_minimal.tar.bz2 ExclusiveArch: x86_64 BuildRequires: gcc-c++ BuildRequires: cmake >= 3.10 BuildRequires: make BuildRequires: pkgconf-pkg-config BuildRequires: libsixel-devel BuildRequires: libX11-devel BuildRequires: libXcomposite-devel BuildRequires: libXdamage-devel BuildRequires: libXext-devel BuildRequires: libXfixes-devel BuildRequires: libXrandr-devel BuildRequires: mesa-libgbm-devel BuildRequires: libxcb-devel BuildRequires: pango-devel BuildRequires: atk-devel BuildRequires: cups-devel BuildRequires: alsa-lib-devel BuildRequires: nss-devel BuildRequires: nspr-devel BuildRequires: glib2-devel BuildRequires: libxkbcommon-devel BuildRequires: at-spi2-atk-devel Requires: libsixel Requires: nss Requires: nspr Requires: alsa-lib Requires: atk Requires: cups-libs Requires: pango Requires: libXcomposite Requires: libXdamage Requires: libXrandr Requires: mesa-libgbm Requires: glib2 Requires: at-spi2-atk Requires: libdrm Requires: dbus-libs Provides: bundled(chromium-embedded-framework) = %{cef_version} # CEF bundles its own Chromium libraries; suppress auto-requires/provides %global __requires_exclude_from ^%{_libdir}/%{name}/.*$ %global __provides_exclude_from ^%{_libdir}/%{name}/.*$ %description Brow6el is a full-featured web browser for the terminal using Chromium (CEF) with support for Sixel and Kitty graphics protocols. It features vim-style modal navigation, bookmarks, user scripts, download management, a JavaScript console, and configurable profiles. %prep %setup -q -n %{name}-%{version} # Extract CEF binary distribution alongside the source tar xjf %{SOURCE1} ln -sf %{cef_dir} cef_binary %build # Step 1: build the CEF C++ wrapper (static library) pushd cef_binary/build 2>/dev/null || { mkdir -p cef_binary/build && pushd cef_binary/build; } cmake -DCMAKE_BUILD_TYPE=Release .. %make_build libcef_dll_wrapper popd # Step 2: build brow6el itself mkdir -p build cd build cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_RPATH=%{_libdir}/%{name} \ -DCMAKE_BUILD_RPATH=%{_libdir}/%{name} \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE \ .. %make_build %install # Directory layout install -d %{buildroot}%{_libdir}/%{name} install -d %{buildroot}%{_libdir}/%{name}/locales install -d %{buildroot}%{_libdir}/%{name}/scripts install -d %{buildroot}%{_bindir} # Main binary install -m 0755 build/%{name} %{buildroot}%{_libdir}/%{name}/ # CEF shared libraries install -m 0755 cef_binary/Release/libcef.so %{buildroot}%{_libdir}/%{name}/ install -m 0755 cef_binary/Release/libEGL.so %{buildroot}%{_libdir}/%{name}/ install -m 0755 cef_binary/Release/libGLESv2.so %{buildroot}%{_libdir}/%{name}/ install -m 0755 cef_binary/Release/libvk_swiftshader.so %{buildroot}%{_libdir}/%{name}/ install -m 0755 cef_binary/Release/libvulkan.so.1 %{buildroot}%{_libdir}/%{name}/ install -m 0644 cef_binary/Release/vk_swiftshader_icd.json %{buildroot}%{_libdir}/%{name}/ # CEF data files install -m 0644 cef_binary/Release/v8_context_snapshot.bin %{buildroot}%{_libdir}/%{name}/ # CEF resource files install -m 0644 cef_binary/Resources/icudtl.dat %{buildroot}%{_libdir}/%{name}/ install -m 0644 cef_binary/Resources/*.pak %{buildroot}%{_libdir}/%{name}/ install -m 0644 cef_binary/Resources/locales/*.pak %{buildroot}%{_libdir}/%{name}/locales/ # Chrome sandbox helper install -m 4755 cef_binary/Release/chrome-sandbox %{buildroot}%{_libdir}/%{name}/ # JS helper files (copied into build dir by cmake) for f in select_detector.js hint_mode.js mouse_emu.js inspect_mode.js visual_mode.js; do install -m 0644 build/${f} %{buildroot}%{_libdir}/%{name}/ done # Bundled content scripts install -m 0644 src/scripts/*.js %{buildroot}%{_libdir}/%{name}/scripts/ # Strip debug symbols from the huge libcef.so (~1 GB unstripped) strip --strip-debug %{buildroot}%{_libdir}/%{name}/libcef.so || : # Wrapper script in PATH cat > %{buildroot}%{_bindir}/%{name} << 'WRAPPER' #!/bin/bash BROW6EL_DIR="%{_libdir}/brow6el" export LD_LIBRARY_PATH="${BROW6EL_DIR}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" export VK_ICD_FILENAMES="${BROW6EL_DIR}/vk_swiftshader_icd.json" exec "${BROW6EL_DIR}/brow6el" "$@" WRAPPER chmod 0755 %{buildroot}%{_bindir}/%{name} %files %license README.md %doc USERSCRIPTS.md examples/ %{_bindir}/%{name} %dir %{_libdir}/%{name} %{_libdir}/%{name}/%{name} %{_libdir}/%{name}/libcef.so %{_libdir}/%{name}/libEGL.so %{_libdir}/%{name}/libGLESv2.so %{_libdir}/%{name}/libvk_swiftshader.so %{_libdir}/%{name}/libvulkan.so.1 %{_libdir}/%{name}/vk_swiftshader_icd.json %{_libdir}/%{name}/v8_context_snapshot.bin %{_libdir}/%{name}/icudtl.dat %{_libdir}/%{name}/*.pak %dir %{_libdir}/%{name}/locales %{_libdir}/%{name}/locales/*.pak %attr(4755,root,root) %{_libdir}/%{name}/chrome-sandbox %{_libdir}/%{name}/*.js %dir %{_libdir}/%{name}/scripts %{_libdir}/%{name}/scripts/*.js %changelog * Tue Apr 28 2026 Greg Procunier - 0.3.4-2 - Add missing BuildRequires: libxkbcommon-devel, at-spi2-atk-devel * Tue Apr 28 2026 Greg Procunier - 0.3.4-1 - Initial RPM package for Fedora 43 - Based on upstream v0.3.4 release - Bundles CEF 143 (Chromium 143.0.7499.193)