commit cbf7d2fdcd5784deb320f8d239f21d685caec11e
Author: awy <awy@awy.one>
Date: Sat, 29 Nov 2025 19:22:06 +0300
init
Diffstat:
36 files changed, 1657 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,13 @@
+*/*
+!*/PKGBUILD
+!*/build.sh
+icecat/neopkg/*
+icecat/pkg/*
+!icecat/pkg/extensions
+icecat/pkg/extensions/*
+!icecat/pkg/extensions/download_extension.sh
+!icecat/*/PKGBUILD
+!icecat/*/user.js
+!icecat/*/build.sh
+!icecat/neopkg
+!icecat/pkg
diff --git a/catppuccin-gtk/PKGBUILD b/catppuccin-gtk/PKGBUILD
@@ -0,0 +1,35 @@
+pkgbase=catppuccin-theme-git
+pkgname=('catppuccin-icon-theme' 'catppuccin-gtk-theme')
+pkgver=r76.f25d8cf68
+pkgrel=1
+pkgdesc='A GTK theme based on the Catppuccin color palette.'
+arch=('any')
+url='https://github.com/Fausto-Korpsvart/Catppuccin-GTK-Theme'
+license=('GPL3')
+depends=('gtk-engine-murrine')
+makedepends=('git' 'sassc')
+source=("$pkgbase"::'git+https://github.com/Fausto-Korpsvart/Catppuccin-GTK-Theme')
+sha256sums=('SKIP')
+
+pkgver() {
+ cd "$srcdir/$pkgbase"
+ if git describe --long --tags >/dev/null 2>&1; then
+ git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+ else
+ printf 'r%s.%s' "$(git rev-list --count HEAD)" "$(git describe --always)"
+ fi
+}
+
+package_catppuccin-icon-theme() {
+ cd "$srcdir/$pkgbase"
+ sed -i icons/*/index.theme -e 's/oomox-//'
+ mkdir -p "$pkgdir/usr/share/icons"
+ cp -r icons/Catppuccin-* "$pkgdir/usr/share/icons/"
+}
+
+package_catppuccin-gtk-theme() {
+ cd "$srcdir/$pkgbase/themes"
+ ./build.sh
+ mkdir -p "$pkgdir/usr/share/themes"
+ ./install.sh --dest "$pkgdir/usr/share/themes" --theme all
+}
diff --git a/catppuccin-gtk/build.sh b/catppuccin-gtk/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/dwlb/PKGBUILD b/dwlb/PKGBUILD
@@ -0,0 +1,36 @@
+_pkgname=dwlb
+pkgname=$_pkgname
+pkgver=r95.5bdc70b
+pkgrel=1
+pkgdesc="A fast, feature-complete bar for mango"
+url="https://git.awy.one/dwlb"
+arch=('x86_64')
+license=('GPL3')
+# depends=('wayland' 'libxkbcommon' 'fcft')
+makedepends=('git' 'pkg-config' 'wayland-protocols' 'fcft' 'pixman')
+# if tray patch is used
+# makedepends=('git' 'pkg-config' 'wayland-protocols' 'fcft' 'pixman' 'gtk4-layer-shell')
+source=(git+https://git.awy.one/dwlb.git)
+sha256sums=(SKIP)
+
+provides=("$pkgname")
+conflicts=("$pkgname")
+
+pkgver() {
+ cd $srcdir/$_pkgname
+ git_ver=$(printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)")
+ echo "$git_ver"
+}
+
+build() {
+ cd "$srcdir/$_pkgname"
+ make PREFIX=/usr
+}
+
+package() {
+ cd "$srcdir/$_pkgname"
+
+ install -Dm755 dwlb "$pkgdir/usr/bin/dwlb"
+ install -Dm644 dwlb.1 "$pkgdir/usr/share/man/man1/dwlb.1"
+ install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/dwlb/build.sh b/dwlb/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/everforest-cursors/PKGBUILD b/everforest-cursors/PKGBUILD
@@ -0,0 +1,19 @@
+pkgname=('everforest-cursors')
+pkgver=0
+pkgrel=1
+pkgdesc='Everforest cursors'
+arch=('any')
+url='https://github.com/talwat/everforest-cursors'
+license=('GPL3')
+source=('everforest-cursors-variants.tar.bz2')
+sha256sums=('SKIP')
+
+package() {
+ # cd "$srcdir/$pkgbase"
+ # sed -i icons/*/index.theme -e 's/oomox-//'
+ # sed -i icons/Everforest-Light/index.theme -e 's/[Ee]verforest_[Ll]ight/Everforest-Light/g'
+ mkdir -p "$pkgdir/usr/share/icons"
+ # cp -r icons/Everforest-Dark "$pkgdir/usr/share/icons/"
+ # cp -r icons/Everforest-Light "$pkgdir/usr/share/icons/"
+ cp -r "$srcdir/everforest-cursors" "$pkgdir/usr/share/icons/"
+}
diff --git a/everforest-cursors/build.sh b/everforest-cursors/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/everforest-dark/PKGBUILD b/everforest-dark/PKGBUILD
@@ -0,0 +1,39 @@
+pkgbase=everforest-gtk-theme-git
+pkgname=('everforest-icon-theme-git' 'everforest-gtk-theme-git')
+pkgver=r77.930a5dc5
+pkgrel=1
+pkgdesc='Everforest colour palette for GTK'
+arch=('any')
+url='https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme'
+license=('GPL3')
+depends=('gtk-engine-murrine')
+makedepends=('git' 'sassc')
+source=("$pkgbase"::'git+https://github.com/Fausto-Korpsvart/Everforest-GTK-Theme')
+sha256sums=('SKIP')
+
+pkgver() {
+ cd "$srcdir/$pkgbase"
+ if git describe --long --tags >/dev/null 2>&1; then
+ git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+ else
+ printf 'r%s.%s' "$(git rev-list --count HEAD)" "$(git describe --always)"
+ fi
+}
+
+package_everforest-icon-theme-git() {
+ cd "$srcdir/$pkgbase"
+ sed -i icons/*/index.theme -e 's/oomox-//'
+ sed -i icons/Everforest-Light/index.theme -e 's/[Ee]verforest_[Ll]ight/Everforest-Light/g'
+ mkdir -p "$pkgdir/usr/share/icons"
+ cp -r icons/Everforest-Dark "$pkgdir/usr/share/icons/"
+ cp -r icons/Everforest-Light "$pkgdir/usr/share/icons/"
+}
+
+package_everforest-gtk-theme-git() {
+ cd "$srcdir/$pkgbase/themes"
+ ./build.sh
+ mkdir -p "$pkgdir/usr/share/themes"
+ ./install.sh --dest "$pkgdir/usr/share/themes" --theme all
+}
+
+# vim: set ts=4 sw=4 et :
diff --git a/everforest-dark/build.sh b/everforest-dark/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/gruvbox-gtk/PKGBUILD b/gruvbox-gtk/PKGBUILD
@@ -0,0 +1,36 @@
+pkgbase=gruvbox-theme-git
+pkgname=('gruvbox-icon-theme' 'gruvbox-gtk-theme')
+pkgver=r102.578cd220
+pkgrel=1
+pkgdesc='A GTK theme based on the Gruvbox colour palette.'
+arch=('any')
+url='https://github.com/Fausto-Korpsvart/Gruvbox-GTK-Theme'
+license=('GPL3')
+depends=('gtk-engine-murrine')
+makedepends=('git' 'sassc')
+source=("$pkgbase"::'git+https://github.com/Fausto-Korpsvart/Gruvbox-GTK-Theme')
+sha256sums=('SKIP')
+
+pkgver() {
+ cd "$srcdir/$pkgbase"
+ if git describe --long --tags >/dev/null 2>&1; then
+ git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+ else
+ printf 'r%s.%s' "$(git rev-list --count HEAD)" "$(git describe --always)"
+ fi
+}
+
+package_gruvbox-icon-theme() {
+ cd "$srcdir/$pkgbase"
+ sed -i icons/*/index.theme -e 's/oomox-//'
+ mkdir -p "$pkgdir/usr/share/icons"
+ cp -r icons/Gruvbox-Dark "$pkgdir/usr/share/icons/"
+ cp -r icons/Gruvbox-Light "$pkgdir/usr/share/icons/"
+}
+
+package_gruvbox-gtk-theme() {
+ cd "$srcdir/$pkgbase/themes"
+ ./build.sh
+ mkdir -p "$pkgdir/usr/share/themes"
+ ./install.sh --tweaks medium --dest "$pkgdir/usr/share/themes" --theme all
+}
diff --git a/gruvbox-gtk/build.sh b/gruvbox-gtk/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r
diff --git a/icecat/neopkg/PKGBUILD b/icecat/neopkg/PKGBUILD
@@ -0,0 +1,545 @@
+## options
+: ${_build_save_source:=true}
+: ${_build_repatch:=false}
+
+: ${_build_pgo:=true}
+: ${_build_pgo_reuse:=try}
+: ${_build_pgo_xvfb:=true}
+
+: ${_build_lto:=true}
+: ${_build_system_libs:=true}
+
+: ${_build_limit_cores:=false}
+
+## update
+_icver="140.5.0"
+_commit="419ffc070436336cb2499306a6833d9fab18a035"
+_icsum="4647dee35a4170ed2f376f3ffa08d1d804b379e9cd6d40591932d81ed5b47b62"
+_ffsum="832b7ef3e5f7a2430e0ba0b9000dab6fdd8f65bccff8bcf7eeb9ed16e6d310e2"
+
+## package
+_pkgname="icecat"
+pkgname="$_pkgname"
+pkgver="$_icver"
+pkgrel=1
+pkgdesc="GNU version of the Firefox ESR browser"
+url="https://git.awy.one/gnuzilla.git"
+license=('MPL-2.0')
+arch=('x86_64')
+
+depends=(
+ dbus
+ ffmpeg
+ ffmpeg4.4
+ gtk3
+ libevent
+ libjpeg
+ libpulse
+ libvpx.so
+ libwebp.so
+ libxss
+ libxt
+ mime-types
+ nspr
+ nss
+ ttf-font
+ zlib
+)
+makedepends=(
+ cargo
+ cbindgen
+ clang
+ diffutils
+ dump_syms
+ imake
+ inetutils
+ jack
+ mold
+ llvm
+ mercurial
+ mesa
+ nasm
+ nodejs
+ python
+ python-setuptools
+ unzip
+ wasi-compiler-rt
+ wasi-libc
+ wasi-libc++
+ wasi-libc++abi
+ yasm
+ zip
+
+ ## makeicecat
+ git
+ m4
+ python-jsonschema
+ python-psutil
+ python-setuptools
+ wget
+)
+optdepends=(
+ 'hunspell-dictionary: Spell checking'
+ 'libnotify: Notification integration'
+ 'networkmanager: Location detection via available WiFi networks'
+ 'speech-dispatcher: Text-to-Speech'
+ 'xdg-desktop-portal: Screensharing with Wayland'
+)
+
+if [[ "${_build_pgo::1}" == "t" ]]; then
+ if [[ "${_build_pgo_xvfb::1}" == "t" ]]; then
+ makedepends+=(
+ xorg-server-xvfb
+ )
+ else
+ makedepends+=(
+ weston
+ wlheadless-run # aur/xwayland-run
+ )
+ fi
+fi
+
+options=(
+ !debug
+ !emptydirs
+ !lto
+ !makeflags
+ !strip
+)
+
+noextract=("firefox-${pkgver}esr.source.tar.xz")
+
+_source_icecat() {
+ _pkgsrc="$_pkgname-$pkgver"
+ _pkgsrc_gnuzilla="gnuzilla-$_commit"
+ _pkgsrc_firefox="firefox-$pkgver"
+ _pkgext="tar.gz"
+ source=(
+ "gnuzilla-$pkgver-${_commit::7}.$_pkgext"::"https://git.awy.one/gnuzilla.git/snapshot/gnuzilla-$_commit.$_pkgext"
+ "https://archive.mozilla.org/pub/firefox/releases/${pkgver}esr/source/firefox-${pkgver}esr.source.tar.xz"
+ "user.js"
+ )
+ sha256sums=(
+ "$_icsum"
+ "$_ffsum"
+ "b136ed7e73a2a4e8fc2d33f758199ca1707ca996750aa4f6452739359705f5b4"
+ )
+}
+
+_source_icecat
+
+_make_icecat() (
+ # restore icecat tarball, if exists
+ if [ "${_build_repatch::1}" != "t" ] && [ -e "$SRCDEST/$_pkgsrc.tar.zst" ]; then
+ echo "Restoring previously patched sources..."
+ rm -rf "$srcdir/$_pkgsrc"
+ bsdtar -xf "$SRCDEST/$_pkgsrc.tar.zst"
+ return
+ fi
+
+ pushd "$_pkgsrc_gnuzilla"
+
+ # clean output in case there is already an old build
+ mkdir -p output || rm -rf output/*
+ mkdir -p output/l10n
+
+ echo "Preparing Firefox ESR..."
+ #cp -f "$srcdir/firefox-${pkgver}esr.source.tar.xz"{,.asc} "$_pkgsrc_gnuzilla"/output/
+
+ bsdtar xf "$srcdir/firefox-${pkgver}esr.source.tar.xz"
+ mv "$_pkgsrc_firefox" "$srcdir/$_pkgsrc_gnuzilla/output/$_pkgsrc"
+
+ echo "Patching sources..."
+
+ # don't reset output folder (already done)
+ sed -e '/^prepare_env$/d' -i makeicecat
+
+ # don't make source tarball (done later)
+ sed -e '/^finalize_sourceball$/d' -i makeicecat
+
+ # don't redownload or reextract firefox (already done)
+ sed \
+ -e '/^fetch_source$/d' \
+ -e '/^verify_sources$/d' \
+ -e '/^extract_sources$/d' \
+ -i makeicecat
+
+ # produce icecat sources
+ cd output
+ ../makeicecat
+ popd
+
+ # save icecat tarball
+ if [[ "${_build_save_source::1}" == "t" ]]; then
+ echo "Saving patched sources..."
+ mv -f "$_pkgsrc_gnuzilla/output/$_pkgsrc" "$srcdir/"
+ bsdtar -a -cf "$_pkgsrc.tar.zst" --options zstd:compression-level=9 "$_pkgsrc"
+ cp -rf "$_pkgsrc.tar.zst" "$SRCDEST/"
+ fi
+)
+
+_prepare_icecat() (
+ cat > icecat.desktop << END
+[Desktop Entry]
+Name=IceCat
+GenericName=Web Browser
+Comment=Browse the World Wide Web
+Keywords=Internet;WWW;Browser;Web;Explorer
+Exec=icecat %u
+Icon=icecat
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;
+StartupNotify=true
+StartupWMClass=icecat
+Categories=Network;WebBrowser;
+Actions=new-window;new-private-window;safe-mode;
+
+[Desktop Action new-window]
+Name=New Window
+Exec=icecat --new-window %u
+
+[Desktop Action new-private-window]
+Name=New Private Window
+Exec=icecat --private-window %u
+
+[Desktop Action safe-mode]
+Name=Safe Mode
+Exec=icecat -safe-mode %u
+END
+
+ _make_icecat
+
+ mkdir -p mozbuild
+ cd "$_pkgsrc"
+
+ # clear forced startup pages
+ sed -E -e 's&^\s*pref\("startup\.homepage.*$&&' -i "browser/branding/official/pref/icecat-branding.js"
+
+ # configure
+ cat > ../mozconfig << END
+ac_add_options --enable-application=browser
+ac_add_options --disable-artifact-builds
+
+mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
+
+ac_add_options --prefix=/usr
+ac_add_options --enable-release
+ac_add_options --enable-hardening
+ac_add_options --enable-rust-simd
+ac_add_options --enable-wasm-simd
+ac_add_options --enable-linker=mold
+ac_add_options --disable-elf-hack
+ac_add_options --disable-bootstrap
+ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
+
+# Branding
+ac_add_options --with-app-basename=$_pkgname
+ac_add_options --with-app-name=$_pkgname
+ac_add_options --with-branding=browser/branding/official
+ac_add_options --enable-update-channel=nightly
+ac_add_options --with-distribution-id=org.gnu
+ac_add_options --with-unsigned-addon-scopes=app,system
+ac_add_options --allow-addon-sideload
+export MOZILLA_OFFICIAL=1
+export MOZ_APP_REMOTINGNAME=$_pkgname
+MOZ_REQUIRE_SIGNING=
+
+# Features
+ac_add_options --enable-alsa
+ac_add_options --enable-av1
+#ac_add_options --enable-eme=widevine
+ac_add_options --enable-jack
+ac_add_options --enable-jxl
+ac_add_options --enable-proxy-bypass-protection
+ac_add_options --enable-pulseaudio
+ac_add_options --enable-sandbox
+ac_add_options --enable-unverified-updates
+ac_add_options --enable-webrtc
+ac_add_options --disable-crashreporter
+ac_add_options --disable-default-browser-agent
+ac_add_options --disable-parental-controls
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+
+# Disables Telemetry by Default
+mk_add_options MOZ_DATA_REPORTING=0
+mk_add_options MOZ_SERVICES_HEALTHREPORT=0
+mk_add_options MOZ_TELEMETRY_REPORTING=0
+
+# Debugging
+ac_add_options --disable-debug
+ac_add_options --disable-debug-symbols
+ac_add_options --disable-debug-js-modules
+ac_add_options --enable-strip
+ac_add_options --enable-install-strip
+export STRIP_FLAGS="--strip-debug --strip-unneeded"
+
+# Optimization
+ac_add_options --enable-optimize
+ac_add_options OPT_LEVEL="3"
+ac_add_options RUSTC_OPT_LEVEL="3"
+
+# Other
+export AR=llvm-ar
+export CC=clang
+export CXX=clang++
+export NM=llvm-nm
+export RANLIB=llvm-ranlib
+END
+
+ if [[ "${_build_system_libs::1}" == "t" ]]; then
+ cat >> ../mozconfig << END
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-libevent
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-webp
+ac_add_options --with-system-zlib
+END
+ fi
+
+ if [[ "${_build_lto::1}" == "t" ]]; then
+ cat >> ../mozconfig << END
+ac_add_options --enable-lto=cross,full
+END
+ fi
+
+ if [[ "${_build_limit_cores::1}" == "t" ]]; then
+ # calculate core availability
+ local _mem _nproc _cores
+ _mem=$(cat /proc/meminfo | grep MemFree | grep -Eom1 '[0-9]+')
+ _nproc=$(nproc)
+ _cores=$((_mem / (1024 * 1024) < _nproc ? _mem / (1024 * 1024) : _nproc))
+ _cores=$((_cores < 1 ? 1 : _cores))
+
+ printf '\nFree RAM: %s\nCores: %s\nUsing: %s\n\n' "$((_mem / (1024 * 1024)))" "$_nproc" "$_cores"
+
+ cat >> ../mozconfig << END
+mk_add_options MOZ_PARALLEL_BUILD=${_cores:-4}
+END
+ fi
+)
+
+build() (
+ _run_if_exists _prepare_icecat
+
+ cd "$_pkgsrc"
+
+ export RUSTUP_TOOLCHAIN=stable
+
+ export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-$srcdir/xdg-runtime}"
+ [ ! -d "$XDG_RUNTIME_DIR" ] && mkdir -pm700 "${XDG_RUNTIME_DIR:?}"
+
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip
+ export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
+ export MOZ_BUILD_DATE="$(date -u${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH} +%Y%m%d%H%M%S)"
+ export MOZ_NOSPAM=1
+
+# # workaround for cargo lock
+# install -Dm755 /dev/stdin "$srcdir/cargo-nofrozen" << 'END'
+# #!/usr/bin/env bash
+# real=$(command -v cargo | grep -v "cargo-nofrozen" | head -n1)
+# args=()
+# for a in "$@"; do
+# [[ "$a" == "--frozen" ]] && continue
+# args+=("$a")
+# done
+# exec "$real" "${args[@]}"
+# END
+
+ # export CARGO="$srcdir/cargo-nofrozen"
+
+ # malloc_usable_size is used in various parts of the codebase
+ CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+ CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}"
+
+ # Breaks compilation since https://bugzilla.mozilla.org/show_bug.cgi?id=1896066
+ CFLAGS="${CFLAGS/-fexceptions/}"
+ CXXFLAGS="${CXXFLAGS/-fexceptions/}"
+
+ # LTO/PGO needs more open files
+ ulimit -n 4096
+
+ # Do 3-tier PGO
+ if [[ "${_build_pgo::1}" == "t" ]]; then
+ # find previous profile file...
+ local _old_profdata _old_jarlog _pkgver_old tmp_old tmp_new
+ _pkgver_prof=$(
+ cd "$SRCDEST"
+ for i in *.profdata; do [ -f "$i" ] && echo "$i"; done \
+ | sort -rV | head -1 | sed -E -e 's&^[^0-9]+-([0-9\.]+)-merged.profdata&\1&'
+ )
+
+ # new profile for new major version
+ if [ "${_pkgver_prof%%.*}" != "${pkgver%%.*}" ]; then
+ _build_pgo_reuse=false
+ _pkgver_prof="$pkgver"
+ fi
+
+ # new profile for new minor version
+ _tmp_old=$(echo "${_pkgver_prof}" | cut -d'-' -f2 | cut -d'.' -f2)
+ _tmp_new=$(echo "${pkgver}" | cut -d'-' -f2 | cut -d'.' -f2)
+
+ if [ "${_tmp_new:-0}" -gt "${_tmp_old:-0}" ]; then
+ _build_pgo_reuse=false
+ _pkgver_prof="$pkgver"
+ fi
+
+ local _old_profdata="$SRCDEST/$_pkgname-$_pkgver_prof-merged.profdata"
+ local _old_jarlog="$SRCDEST/$_pkgname-$_pkgver_prof-jarlog"
+
+ # Restore old profile
+ if [[ "${_build_pgo_reuse::1}" == "t" ]]; then
+ if [[ -s "$_old_profdata" ]]; then
+ echo "Restoring old profile data."
+ cp -f "$_old_profdata" merged.profdata
+ fi
+
+ if [[ -s "$_old_jarlog" ]]; then
+ echo "Restoring old jar log."
+ cp -f "$_old_jarlog" jarlog
+ fi
+ fi
+
+ # Make new profile
+ if [[ "${_build_pgo_reuse::1}" != "t" ]] || [[ ! -s merged.profdata ]]; then
+ # disable extensions, otherwise profiling freezes
+ cp "browser/app/Makefile.in" "$srcdir/Makefile.in"
+ sed -E -e '/^\t.*\/extensions\/gnu\/\*.*$/d' -i "browser/app/Makefile.in"
+
+ cp "browser/installer/package-manifest.in" "$srcdir/package-manifest.in"
+ sed -E -e '/^.*\/browser\/extensions\/.*$/d' -i "browser/installer/package-manifest.in"
+
+ cp "browser/installer/allowed-dupes.mn" "$srcdir/allowed-dupes.mn"
+ sed -E -e '/^browser\/extensions\/.*$/d' -i "browser/installer/allowed-dupes.mn"
+
+ echo "Building instrumented browser..."
+ cat > .mozconfig ../mozconfig - << END
+ac_add_options --enable-profile-generate=cross
+export MOZ_ENABLE_FULL_SYMBOLS=1
+END
+ ./mach build --priority normal
+
+ echo "Profiling instrumented browser..."
+ ./mach package
+
+ local _headless_env=(
+ LLVM_PROFDATA=llvm-profdata
+ JARLOG_FILE="${PWD@Q}/jarlog"
+ LIBGL_ALWAYS_SOFTWARE=true
+ dbus-run-session
+ )
+
+ if [[ "${_build_pgo_xvfb::1}" == "t" ]]; then
+ local _headless_run=(
+ xvfb-run
+ -s "-screen 0 1920x1080x24 -nolisten local"
+ )
+ else
+ local _headless_run=(
+ wlheadless-run
+ -c weston --width=1920 --height=1080
+ )
+ fi
+
+ env "${_headless_env[@]}" "${_headless_run[@]}" -- ./mach python build/pgo/profileserver.py
+
+ echo "Removing instrumented browser..."
+ ./mach clobber objdir
+
+ # reenable extensions
+ cp "$srcdir/Makefile.in" "browser/app/Makefile.in"
+ cp "$srcdir/package-manifest.in" "browser/installer/package-manifest.in"
+ cp "$srcdir/allowed-dupes.mn" "browser/installer/allowed-dupes.mn"
+ fi
+
+ echo "Building optimized browser..."
+ cat > .mozconfig ../mozconfig
+
+ if [[ -s merged.profdata ]]; then
+ stat -c "Profile data found (%s bytes)" merged.profdata
+ cat >> .mozconfig - << END
+ac_add_options --enable-profile-use=cross
+ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
+END
+
+ # save profdata for reuse
+ cp -f merged.profdata "$_old_profdata"
+ else
+ echo "Profile data not found."
+ fi
+
+ if [[ -s jarlog ]]; then
+ stat -c "Jar log found (%s bytes)" jarlog
+ cat >> .mozconfig - << END
+ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
+END
+
+ # save jarlog for reuse
+ cp -f jarlog "$_old_jarlog"
+ else
+ echo "Jar log not found."
+ fi
+
+ ./mach build --priority normal
+ else
+ echo "Building browser..."
+ cat > .mozconfig ../mozconfig
+
+ ./mach build --priority normal
+ fi
+)
+
+package() {
+ cd "$_pkgsrc"
+ DESTDIR="$pkgdir" ./mach install
+
+ local vendorjs="$pkgdir/usr/lib/$_pkgname/browser/defaults/preferences/vendor.js"
+ install -Dm644 "../user.js" "$vendorjs"
+
+ local distini="$pkgdir/usr/lib/$_pkgname/distribution/distribution.ini"
+ install -Dm644 /dev/stdin "$distini" << END
+[Global]
+id=archlinux
+version=${pkgver}
+about=GNU IceCat for Arch Linux
+
+[Preferences]
+app.distributor=archlinux
+app.distributor.channel=$_pkgname
+app.partner.archlinux=archlinux
+END
+
+ # search provider
+ local sprovider="$pkgdir/usr/share/gnome-shell/search-providers/$_pkgname.search-provider.ini"
+ install -Dm644 /dev/stdin "$sprovider" << END
+[Shell Search Provider]
+DesktopId=$_pkgname.desktop
+BusName=org.mozilla.${_pkgname//-/}.SearchProvider
+ObjectPath=/org/mozilla/${_pkgname//-/}/SearchProvider
+Version=2
+END
+
+ # Replace duplicate binary
+ ln -sf "$_pkgname" "$pkgdir/usr/lib/$_pkgname/$_pkgname-bin"
+
+ # desktop file
+ install -Dm644 ../$_pkgname.desktop \
+ "$pkgdir/usr/share/applications/$_pkgname.desktop"
+
+ # icons
+ local i theme=official
+ for i in 16 22 24 32 48 64 128 256; do
+ install -Dm644 browser/branding/$theme/default$i.png \
+ "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$_pkgname.png"
+ done
+}
+
+_run_if_exists() {
+ if declare -F "$1" > /dev/null; then
+ eval "$1"
+ fi
+}
diff --git a/icecat/neopkg/build.sh b/icecat/neopkg/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r
diff --git a/icecat/neopkg/user.js b/icecat/neopkg/user.js
@@ -0,0 +1,210 @@
+pref("browser.aboutConfig.showWarning", false);
+pref("browser.startup.page", 0);
+pref("browser.startup.homepage", "chrome://browser/content/blanktab.html");
+pref("browser.newtabpage.enabled", false);
+pref("browser.newtabpage.activity-stream.showSponsored", false); // [FF58+] Sponsored stories
+pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] Sponsored shortcuts
+pref("browser.newtabpage.activity-stream.showSponsoredCheckboxes", false); // [FF140+] Support Firefox
+pref("browser.newtabpage.activity-stream.default.sites", "");
+pref("geo.provider.ms-windows-location", false); // [WINDOWS]
+pref("geo.provider.use_corelocation", false); // [MAC]
+pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX]
+pref("extensions.getAddons.showPane", false); // [HIDDEN PREF]
+pref("extensions.htmlaboutaddons.recommendations.enabled", false);
+pref("browser.discovery.enabled", false);
+pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+pref("browser.newtabpage.activity-stream.telemetry", false);
+pref("app.shield.optoutstudies.enabled", false);
+pref("app.normandy.enabled", false);
+pref("app.normandy.api_url", "");
+pref("breakpad.reportURL", "");
+pref("browser.tabs.crashReporting.sendReport", false); // [FF44+]
+pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT: false]
+pref("captivedetect.canonicalURL", "");
+pref("network.captive-portal-service.enabled", false); // [FF52+]
+pref("network.connectivity-service.enabled", false);
+pref("browser.safebrowsing.downloads.remote.enabled", false);
+pref("network.prefetch-next", false);
+pref("network.dns.disablePrefetch", true);
+pref("network.dns.disablePrefetchFromHTTPS", true);
+pref("network.predictor.enabled", false);
+pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false]
+pref("network.http.speculative-parallel-limit", 0);
+pref("browser.places.speculativeConnect.enabled", false);
+pref("network.proxy.socks_remote_dns", true);
+pref("network.file.disable_unc_paths", true); // [HIDDEN PREF]
+pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: ""]
+pref("browser.urlbar.speculativeConnect.enabled", false);
+pref("browser.urlbar.quicksuggest.enabled", false); // [FF92+]
+pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+]
+pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+]
+pref("browser.search.suggest.enabled", false);
+pref("browser.urlbar.suggest.searches", false);
+pref("browser.urlbar.trending.featureGate", false);
+pref("browser.urlbar.addons.featureGate", false); // [FF115+]
+pref("browser.urlbar.amp.featureGate", false); // [FF141+] adMarketplace
+pref("browser.urlbar.fakespot.featureGate", false); // [FF130+] [DEFAULT: false]
+pref("browser.urlbar.mdn.featureGate", false); // [FF117+]
+pref("browser.urlbar.weather.featureGate", false); // [FF108+]
+pref("browser.urlbar.wikipedia.featureGate", false); // [FF141+]
+pref("browser.urlbar.yelp.featureGate", false); // [FF124+]
+pref("browser.formfill.enable", false);
+pref("browser.search.separatePrivateDefault", true); // [FF70+]
+pref("browser.search.separatePrivateDefault.ui.enabled", true); // [FF71+]
+pref("signon.autofillForms", false);
+pref("signon.formlessCapture.enabled", false);
+pref("network.auth.subresource-http-auth-allow", 1);
+pref("browser.cache.disk.enable", false);
+pref("browser.privatebrowsing.forceMediaMemoryCache", true); // [FF75+]
+pref("media.memory_cache_max_size", 65536);
+pref("browser.sessionstore.privacy_level", 2);
+pref("toolkit.winRegisterApplicationRestart", false);
+pref("browser.shell.shortcutFavicons", false);
+pref("security.ssl.require_safe_negotiation", true);
+pref("security.tls.enable_0rtt_data", false);
+pref("security.OCSP.enabled", 1); // [DEFAULT: 1]
+pref("security.OCSP.require", true);
+pref("security.cert_pinning.enforcement_level", 2);
+pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true FF137+]
+pref("security.pki.crlite_mode", 2);
+pref("dom.security.https_only_mode", true); // [FF76+]
+pref("dom.security.https_only_mode_send_http_background_request", false);
+pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
+pref("browser.xul.error_pages.expert_bad_cert", true);
+pref("network.http.referer.XOriginTrimmingPolicy", 2);
+pref("privacy.userContext.enabled", true);
+pref("privacy.userContext.ui.enabled", true);
+pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
+pref("media.peerconnection.ice.default_address_only", true);
+pref("dom.disable_window_move_resize", true);
+pref("browser.download.start_downloads_in_tmp_dir", true); // [FF102+]
+pref("browser.helperApps.deleteTempFileOnExit", true);
+pref("browser.uitour.enabled", false);
+pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false]
+pref("permissions.manager.defaultsUrl", "");
+pref("network.IDN_show_punycode", true);
+pref("pdfjs.disabled", false); // [DEFAULT: false]
+pref("pdfjs.enableScripting", false); // [FF86+]
+pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: false NON-LINUX]
+pref("browser.contentanalysis.enabled", false); // [FF121+] [DEFAULT: false]
+pref("browser.contentanalysis.default_result", 0); // [FF127+] [DEFAULT: 0]
+pref("security.csp.reporting.enabled", false);
+pref("browser.download.useDownloadDir", false);
+pref("browser.download.alwaysOpenPanel", false);
+pref("browser.download.manager.addToRecentDocs", false);
+pref("browser.download.always_ask_before_handling_new_types", true);
+pref("extensions.enabledScopes", 5); // [HIDDEN PREF]
+pref("extensions.postDownloadThirdPartyPrompt", false);
+pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF]
+pref("privacy.sanitize.sanitizeOnShutdown", true);
+pref("privacy.clearOnShutdown_v2.cache", true); // [DEFAULT: true]
+pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearOnShutdown_v2.downloads", true); // [HIDDEN]
+pref("privacy.clearOnShutdown_v2.formdata", true);
+pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true);
+pref("privacy.clearSiteData.cache", true);
+pref("privacy.clearSiteData.cookiesAndStorage", false); // keep false until it respects "allow" site exceptions
+pref("privacy.clearSiteData.historyFormDataAndDownloads", true);
+pref("privacy.clearSiteData.browsingHistoryAndDownloads", true);
+pref("privacy.clearSiteData.formdata", true);
+pref("privacy.clearHistory.cache", true); // [DEFAULT: true]
+pref("privacy.clearHistory.cookiesAndStorage", false);
+pref("privacy.clearHistory.historyFormDataAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearHistory.browsingHistoryAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearHistory.formdata", true);
+pref("privacy.sanitize.timeSpan", 0);
+pref("privacy.window.maxInnerWidth", 1600);
+pref("privacy.window.maxInnerHeight", 900);
+pref("privacy.resistFingerprinting.block_mozAddonManager", true);
+pref("privacy.spoof_english", 1);
+pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS]
+pref("widget.non-native-theme.use-theme-accent", false); // [DEFAULT: false WINDOWS]
+pref("browser.link.open_newwindow", 3); // [DEFAULT: 3]
+pref("browser.link.open_newwindow.restriction", 0);
+pref("extensions.blocklist.enabled", true); // [DEFAULT: true]
+pref("network.http.referer.spoofSource", false); // [DEFAULT: false]
+pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000]
+pref("privacy.firstparty.isolate", false); // [DEFAULT: false]
+pref("extensions.webcompat.enable_shims", true); // [HIDDEN PREF] [DEFAULT: true]
+pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false]
+pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false]
+pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
+pref("datareporting.policy.dataSubmissionEnabled", false);
+pref("datareporting.healthreport.uploadEnabled", false);
+pref("toolkit.telemetry.unified", false);
+pref("toolkit.telemetry.enabled", false); // see [NOTE]
+pref("toolkit.telemetry.server", "data:,");
+pref("toolkit.telemetry.archive.enabled", false);
+pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+]
+pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+]
+pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+]
+pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter
+pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+]
+pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF]
+pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF]
+pref("toolkit.coverage.endpoint.base", "");
+pref("browser.startup.homepage_override.mstone", "ignore"); // [HIDDEN PREF]
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+pref("browser.urlbar.showSearchTerms.enabled", false);
+pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false]
+pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false]
+pref("media.hardware-video-decoding.force-enabled", true);
+pref("media.webspeech.synth.enabled", false);
+pref("media.eme.enabled", false);
+pref("permissions.default.desktop-notification", 2);
+pref("permissions.default.camera", 2);
+pref("permissions.default.geo", 2);
+pref("permissions.default.microphone", 2);
+pref("permissions.default.persistent-storage", 2);
+pref("cookiebanners.service.mode", 1);
+pref("cookiebanners.service.mode.privateBrowsing", 1);
+pref("cookiebanners.service.enableGlobalRules", true);
+pref("extensions.pocket.enabled", false);
+pref("browser.tabs.tabmanager.enabled", false);
+pref("identity.fxaccounts.enabled", false);
+pref("browser.preferences.moreFromMozilla", false);
+pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+pref("browser.urlbar.suggest.bookmark", false);
+pref("browser.urlbar.suggest.history", false);
+pref("browser.urlbar.suggest.engines", false);
+pref("browser.urlbar.suggest.openpage", false);
+pref("browser.urlbar.suggest.topsites", false);
+pref("browser.urlbar.autoFill", false);
+pref("browser.urlbar.suggest.addons", false);
+pref("browser.urlbar.suggest.mdn", false);
+pref("browser.urlbar.suggest.recentsearches", false);
+pref("browser.translations.automaticallyPopup", false);
+pref("signon.firefoxRelay.feature", "disabled");
+pref("signon.rememberSignons", false);
+pref("signon.management.page.breach-alerts.enabled", false);
+pref("signon.generation.enabled", false);
+pref("sidebar.revamp", true);
+pref("sidebar.verticalTabs", true);
+pref("browser.eme.ui.enabled", false);
+pref("dom.push.enabled", false);
+pref("browser.ml.chat.enabled", false);
+pref("general.autoScroll", true);
+pref("mousewheel.min_line_scroll_amount", 10); // 10-40; adjust this number to your liking; default=5
+pref("general.smoothScroll.mouseWheel.durationMinMS", 80); // default=50
+pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX
+pref("general.smoothScroll", true); // DEFAULT
+pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);
+pref("general.smoothScroll.msdPhysics.enabled", true);
+pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600);
+pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650);
+pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);
+pref("general.smoothScroll.msdPhysics.slowdownMinDeltaRatio", "2.0");
+pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);
+pref("general.smoothScroll.currentVelocityWeighting", "1.0");
+pref("general.smoothScroll.stopDecelerationWeighting", "1.0");
+pref("mousewheel.default.delta_multiplier_y", 400); // 250-400; adjust this number to your liking
+pref("widget.use-xdg-desktop-portal.file-picker", 1);
+pref("privacy.resistFingerprinting", false);
+pref("browser.compactmode.show", true);
+pref("browser.uidensity", 1);
+pref("media.videocontrols.picture-in-picture.enabled", "false");
+pref("media.videocontrols.picture-in-picture.video-toggle.enabled", "false");
+pref("full-screen-api.warning.timeout", 0);
+pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[],\"nav-bar\":[\"icecat-view-button\",\"alltabs-button\",\"urlbar-container\",\"downloads-button\",\"ublock0_raymondhill_net-browser-action\",\"unified-extensions-button\",\"vertical-spacer\",\"forward-button\",\"back-button\",\"sidebar-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"ublock0_raymondhill_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"TabsToolbar\",\"vertical-tabs\",\"toolbar-menubar\",\"PersonalToolbar\"],\"currentVersion\":22,\"newElementCount\":3}");
diff --git a/icecat/pkg/PKGBUILD b/icecat/pkg/PKGBUILD
@@ -0,0 +1,98 @@
+: ${_install_path:=usr/lib}
+
+pkgname="icecat"
+pkgver=140.5.0
+pkgrel=1
+pkgdesc="GNU version of the Firefox ESR browser"
+url="https://www.gnu.org/software/gnuzilla"
+license=('MPL-2.0')
+arch=('x86_64')
+
+provides=("$pkgname")
+conflicts=("$pkgname")
+
+options=('!strip' '!debug')
+
+_file="icecat-$pkgver.en-US.linux-$CARCH.tar.xz"
+
+source=(
+ "$_file"
+ "user.js"
+)
+
+sha256sums=(
+ '770f90079081edcb22f523788e2c172be0f051b2fad9c7010c03eab79ea00950'
+ 'ff229336d8db84da8abf2070b42167feeba77b388e5ff9d820b808247fe30ad8'
+)
+
+package() {
+ depends=(
+ dbus
+ ffmpeg
+ ffmpeg4.4
+ gtk3
+ libevent
+ libjpeg
+ libpulse
+ libvpx.so
+ libwebp.so
+ libxss
+ libxt
+ mime-types
+ nspr
+ nss
+ ttf-font
+ zlib
+ )
+
+ install -Dm644 "user.js" "$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
+
+ # main files
+ _path="$pkgdir/$_install_path"
+ mkdir -pm755 "$_path"
+ bsdtar -C "$_path" -xf "$srcdir/$_file"
+
+ # duplicate binary
+ ln -sf icecat-bin "$_path/$pkgname/icecat"
+
+ # symlink
+ mkdir -pm755 "$pkgdir/usr/bin"
+ ln -sf "/$_install_path/$pkgname/$pkgname" "$pkgdir/usr/bin/$pkgname"
+
+ # icon
+ install -Dm644 "$pkgdir/$_install_path/$pkgname/browser/chrome/icons/default/default128.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
+
+ # launcher
+ install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/$pkgname.desktop" << END
+[Desktop Entry]
+Name=IceCat
+GenericName=Web Browser
+Comment=Browse the World Wide Web
+Keywords=Internet;WWW;Browser;Web;Explorer
+Exec=icecat %u
+Icon=icecat
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;
+StartupNotify=true
+StartupWMClass=icecat-default
+Categories=Network;WebBrowser;
+Actions=new-window;new-private-window;safe-mode;
+
+[Desktop Action new-window]
+Name=New Window
+Exec=icecat --new-window %u
+
+[Desktop Action new-private-window]
+Name=New Private Window
+Exec=icecat --private-window %u
+
+[Desktop Action safe-mode]
+Name=Safe Mode
+Exec=icecat -safe-mode %u
+END
+
+ # permissions
+ chmod -R u+rwX,go+rX,go-w "$pkgdir/"
+}
diff --git a/icecat/pkg/build.sh b/icecat/pkg/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r
diff --git a/icecat/pkg/extensions/download_extension.sh b/icecat/pkg/extensions/download_extension.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+
+ADDON_NAMES=("ublock-origin")
+for ADDON_NAME in "${ADDON_NAMES[@]}"; do
+ ADDON_URL="$(curl -fSk "https://addons.mozilla.org/en-US/firefox/addon/${ADDON_NAME}/" |
+ grep -o 'https://addons.mozilla.org/firefox/downloads/file/[^"]*')"
+ echo "$ADDON_URL"
+done
diff --git a/icecat/pkg/user.js b/icecat/pkg/user.js
@@ -0,0 +1,209 @@
+pref("browser.aboutConfig.showWarning", false);
+pref("browser.startup.page", 0);
+pref("browser.startup.homepage", "chrome://browser/content/blanktab.html");
+pref("browser.newtabpage.enabled", false);
+pref("browser.newtabpage.activity-stream.showSponsored", false); // [FF58+] Sponsored stories
+pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false); // [FF83+] Sponsored shortcuts
+pref("browser.newtabpage.activity-stream.showSponsoredCheckboxes", false); // [FF140+] Support Firefox
+pref("browser.newtabpage.activity-stream.default.sites", "");
+pref("geo.provider.ms-windows-location", false); // [WINDOWS]
+pref("geo.provider.use_corelocation", false); // [MAC]
+pref("geo.provider.use_geoclue", false); // [FF102+] [LINUX]
+pref("extensions.getAddons.showPane", false); // [HIDDEN PREF]
+pref("extensions.htmlaboutaddons.recommendations.enabled", false);
+pref("browser.discovery.enabled", false);
+pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+pref("browser.newtabpage.activity-stream.telemetry", false);
+pref("app.shield.optoutstudies.enabled", false);
+pref("app.normandy.enabled", false);
+pref("app.normandy.api_url", "");
+pref("breakpad.reportURL", "");
+pref("browser.tabs.crashReporting.sendReport", false); // [FF44+]
+pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT: false]
+pref("captivedetect.canonicalURL", "");
+pref("network.captive-portal-service.enabled", false); // [FF52+]
+pref("network.connectivity-service.enabled", false);
+pref("browser.safebrowsing.downloads.remote.enabled", false);
+pref("network.prefetch-next", false);
+pref("network.dns.disablePrefetch", true);
+pref("network.dns.disablePrefetchFromHTTPS", true);
+pref("network.predictor.enabled", false);
+pref("network.predictor.enable-prefetch", false); // [FF48+] [DEFAULT: false]
+pref("network.http.speculative-parallel-limit", 0);
+pref("browser.places.speculativeConnect.enabled", false);
+pref("network.proxy.socks_remote_dns", true);
+pref("network.file.disable_unc_paths", true); // [HIDDEN PREF]
+pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: ""]
+pref("browser.urlbar.speculativeConnect.enabled", false);
+pref("browser.urlbar.quicksuggest.enabled", false); // [FF92+]
+pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false); // [FF95+]
+pref("browser.urlbar.suggest.quicksuggest.sponsored", false); // [FF92+]
+pref("browser.search.suggest.enabled", false);
+pref("browser.urlbar.suggest.searches", false);
+pref("browser.urlbar.trending.featureGate", false);
+pref("browser.urlbar.addons.featureGate", false); // [FF115+]
+pref("browser.urlbar.amp.featureGate", false); // [FF141+] adMarketplace
+pref("browser.urlbar.fakespot.featureGate", false); // [FF130+] [DEFAULT: false]
+pref("browser.urlbar.mdn.featureGate", false); // [FF117+]
+pref("browser.urlbar.weather.featureGate", false); // [FF108+]
+pref("browser.urlbar.wikipedia.featureGate", false); // [FF141+]
+pref("browser.urlbar.yelp.featureGate", false); // [FF124+]
+pref("browser.formfill.enable", false);
+pref("browser.search.separatePrivateDefault", true); // [FF70+]
+pref("browser.search.separatePrivateDefault.ui.enabled", true); // [FF71+]
+pref("signon.autofillForms", false);
+pref("signon.formlessCapture.enabled", false);
+pref("network.auth.subresource-http-auth-allow", 1);
+pref("browser.cache.disk.enable", false);
+pref("browser.privatebrowsing.forceMediaMemoryCache", true); // [FF75+]
+pref("media.memory_cache_max_size", 65536);
+pref("browser.sessionstore.privacy_level", 2);
+pref("toolkit.winRegisterApplicationRestart", false);
+pref("browser.shell.shortcutFavicons", false);
+pref("security.ssl.require_safe_negotiation", true);
+pref("security.tls.enable_0rtt_data", false);
+pref("security.OCSP.enabled", 1); // [DEFAULT: 1]
+pref("security.OCSP.require", true);
+pref("security.cert_pinning.enforcement_level", 2);
+pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true FF137+]
+pref("security.pki.crlite_mode", 2);
+pref("dom.security.https_only_mode", true); // [FF76+]
+pref("dom.security.https_only_mode_send_http_background_request", false);
+pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
+pref("browser.xul.error_pages.expert_bad_cert", true);
+pref("network.http.referer.XOriginTrimmingPolicy", 2);
+pref("privacy.userContext.enabled", true);
+pref("privacy.userContext.ui.enabled", true);
+pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
+pref("media.peerconnection.ice.default_address_only", true);
+pref("dom.disable_window_move_resize", true);
+pref("browser.download.start_downloads_in_tmp_dir", true); // [FF102+]
+pref("browser.helperApps.deleteTempFileOnExit", true);
+pref("browser.uitour.enabled", false);
+pref("devtools.debugger.remote-enabled", false); // [DEFAULT: false]
+pref("permissions.manager.defaultsUrl", "");
+pref("network.IDN_show_punycode", true);
+pref("pdfjs.disabled", false); // [DEFAULT: false]
+pref("pdfjs.enableScripting", false); // [FF86+]
+pref("browser.tabs.searchclipboardfor.middleclick", false); // [DEFAULT: false NON-LINUX]
+pref("browser.contentanalysis.enabled", false); // [FF121+] [DEFAULT: false]
+pref("browser.contentanalysis.default_result", 0); // [FF127+] [DEFAULT: 0]
+pref("security.csp.reporting.enabled", false);
+pref("browser.download.useDownloadDir", false);
+pref("browser.download.alwaysOpenPanel", false);
+pref("browser.download.manager.addToRecentDocs", false);
+pref("browser.download.always_ask_before_handling_new_types", true);
+pref("extensions.enabledScopes", 5); // [HIDDEN PREF]
+pref("extensions.postDownloadThirdPartyPrompt", false);
+pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF]
+pref("privacy.sanitize.sanitizeOnShutdown", true);
+pref("privacy.clearOnShutdown_v2.cache", true); // [DEFAULT: true]
+pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearOnShutdown_v2.downloads", true); // [HIDDEN]
+pref("privacy.clearOnShutdown_v2.formdata", true);
+pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true);
+pref("privacy.clearSiteData.cache", true);
+pref("privacy.clearSiteData.cookiesAndStorage", false); // keep false until it respects "allow" site exceptions
+pref("privacy.clearSiteData.historyFormDataAndDownloads", true);
+pref("privacy.clearSiteData.browsingHistoryAndDownloads", true);
+pref("privacy.clearSiteData.formdata", true);
+pref("privacy.clearHistory.cache", true); // [DEFAULT: true]
+pref("privacy.clearHistory.cookiesAndStorage", false);
+pref("privacy.clearHistory.historyFormDataAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearHistory.browsingHistoryAndDownloads", true); // [DEFAULT: true]
+pref("privacy.clearHistory.formdata", true);
+pref("privacy.sanitize.timeSpan", 0);
+pref("privacy.window.maxInnerWidth", 1600);
+pref("privacy.window.maxInnerHeight", 900);
+pref("privacy.resistFingerprinting.block_mozAddonManager", true);
+pref("privacy.spoof_english", 1);
+pref("browser.display.use_system_colors", false); // [DEFAULT: false NON-WINDOWS]
+pref("widget.non-native-theme.use-theme-accent", false); // [DEFAULT: false WINDOWS]
+pref("browser.link.open_newwindow", 3); // [DEFAULT: 3]
+pref("browser.link.open_newwindow.restriction", 0);
+pref("extensions.blocklist.enabled", true); // [DEFAULT: true]
+pref("network.http.referer.spoofSource", false); // [DEFAULT: false]
+pref("security.dialog_enable_delay", 1000); // [DEFAULT: 1000]
+pref("privacy.firstparty.isolate", false); // [DEFAULT: false]
+pref("extensions.webcompat.enable_shims", true); // [HIDDEN PREF] [DEFAULT: true]
+pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false]
+pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false]
+pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
+pref("datareporting.policy.dataSubmissionEnabled", false);
+pref("datareporting.healthreport.uploadEnabled", false);
+pref("toolkit.telemetry.unified", false);
+pref("toolkit.telemetry.enabled", false); // see [NOTE]
+pref("toolkit.telemetry.server", "data:,");
+pref("toolkit.telemetry.archive.enabled", false);
+pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+]
+pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+]
+pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+]
+pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter
+pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+]
+pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF]
+pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF]
+pref("toolkit.coverage.endpoint.base", "");
+pref("browser.startup.homepage_override.mstone", "ignore"); // [HIDDEN PREF]
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+pref("browser.urlbar.showSearchTerms.enabled", false);
+pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false]
+pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false]
+pref("media.hardware-video-decoding.force-enabled", true);
+pref("media.webspeech.synth.enabled", false);
+pref("media.eme.enabled", false);
+pref("permissions.default.desktop-notification", 2);
+pref("permissions.default.camera", 2);
+pref("permissions.default.geo", 2);
+pref("permissions.default.microphone", 2);
+pref("permissions.default.persistent-storage", 2);
+pref("cookiebanners.service.mode", 1);
+pref("cookiebanners.service.mode.privateBrowsing", 1);
+pref("cookiebanners.service.enableGlobalRules", true);
+pref("extensions.pocket.enabled", false);
+pref("browser.tabs.tabmanager.enabled", false);
+pref("identity.fxaccounts.enabled", false);
+pref("browser.preferences.moreFromMozilla", false);
+pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+pref("browser.urlbar.suggest.bookmark", false);
+pref("browser.urlbar.suggest.history", false);
+pref("browser.urlbar.suggest.engines", false);
+pref("browser.urlbar.suggest.openpage", false);
+pref("browser.urlbar.suggest.topsites", false);
+pref("browser.urlbar.autoFill", false);
+pref("browser.urlbar.suggest.addons", false);
+pref("browser.urlbar.suggest.mdn", false);
+pref("browser.urlbar.suggest.recentsearches", false);
+pref("browser.translations.automaticallyPopup", false);
+pref("signon.firefoxRelay.feature", "disabled");
+pref("signon.rememberSignons", false);
+pref("signon.management.page.breach-alerts.enabled", false);
+pref("signon.generation.enabled", false);
+pref("sidebar.revamp", true);
+pref("sidebar.verticalTabs", true);
+pref("browser.eme.ui.enabled", false);
+pref("dom.push.enabled", false);
+pref("browser.ml.chat.enabled", false);
+pref("general.autoScroll", true);
+pref("mousewheel.min_line_scroll_amount", 10); // 10-40; adjust this number to your liking; default=5
+pref("general.smoothScroll.mouseWheel.durationMinMS", 80); // default=50
+pref("apz.overscroll.enabled", true); // DEFAULT NON-LINUX
+pref("general.smoothScroll", true); // DEFAULT
+pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);
+pref("general.smoothScroll.msdPhysics.enabled", true);
+pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600);
+pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650);
+pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);
+pref("general.smoothScroll.msdPhysics.slowdownMinDeltaRatio", "2.0");
+pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);
+pref("general.smoothScroll.currentVelocityWeighting", "1.0");
+pref("general.smoothScroll.stopDecelerationWeighting", "1.0");
+pref("mousewheel.default.delta_multiplier_y", 400); // 250-400; adjust this number to your liking
+pref("widget.use-xdg-desktop-portal.file-picker", 1);
+pref("privacy.resistFingerprinting", false);
+pref("browser.compactmode.show", true);
+pref("browser.uidensity", 1);
+pref("media.videocontrols.picture-in-picture.enabled", false);
+pref("full-screen-api.warning.timeout", 0);
+pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"unified-extensions-area\":[],\"nav-bar\":[\"icecat-view-button\",\"alltabs-button\",\"urlbar-container\",\"downloads-button\",\"ublock0_raymondhill_net-browser-action\",\"unified-extensions-button\",\"vertical-spacer\",\"forward-button\",\"back-button\",\"sidebar-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[],\"vertical-tabs\":[\"tabbrowser-tabs\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"ublock0_raymondhill_net-browser-action\",\"developer-button\",\"screenshot-button\"],\"dirtyAreaCache\":[\"unified-extensions-area\",\"nav-bar\",\"TabsToolbar\",\"vertical-tabs\",\"toolbar-menubar\",\"PersonalToolbar\"],\"currentVersion\":22,\"newElementCount\":3}");
diff --git a/librepods/PKGBUILD b/librepods/PKGBUILD
@@ -0,0 +1,31 @@
+# Maintainer: awy <awy@awy.one>
+
+_pkgname=librepods
+pkgname=$_pkgname-rust-git
+pkgver=r515.6f0323e
+pkgrel=1
+pkgdesc="Rust implementation of librepods"
+arch=('any')
+url="https://github.com/kavishdevar/librepods"
+license=('GPL3')
+depends=('dbus')
+makedepends=('cargo' 'git')
+source=("git+https://github.com/kavishdevar/librepods.git#branch=linux/rust")
+sha256sums=('SKIP')
+conflicts=('librepods' 'librepods-git')
+
+pkgver() {
+ cd $srcdir/$_pkgname
+ git_ver=$(printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)")
+ echo "$git_ver"
+}
+
+build() {
+ cd "$srcdir/$_pkgname/linux-rust"
+ cargo build --release
+}
+
+package() {
+ cd "$srcdir/$_pkgname/linux-rust"
+ install -Dm755 target/release/librepods "$pkgdir/usr/bin/librepods"
+}
diff --git a/librepods/build.sh b/librepods/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/lrcget/PKGBUILD b/lrcget/PKGBUILD
@@ -0,0 +1,15 @@
+pkgname=lrcget-bin
+pkgver=1.0.2
+pkgrel=2
+options=(!debug)
+pkgdesc="Utility for mass-downloading LRC synced lyrics for your offline music library."
+arch=('x86_64')
+url="https://github.com/tranxuanthang/lrcget"
+license=('MIT')
+depends=('gtk3' 'webkit2gtk-4.1' 'pipewire-alsa')
+source=("${pkgname}-${pkgver}.deb::https://github.com/tranxuanthang/lrcget/releases/download/${pkgver}/LRCGET_${pkgver}_amd64.deb")
+b2sums=('SKIP')
+
+package() {
+ tar -xz -f data.tar.gz -C "$pkgdir"
+}
diff --git a/lrcget/build.sh b/lrcget/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/mew/PKGBUILD b/mew/PKGBUILD
@@ -0,0 +1,38 @@
+_pkgname=mew
+pkgname=$_pkgname
+pkgver=0.0.r41.5d72bc7
+pkgrel=1
+pkgdesc="Wayland port of dmenu"
+url="https://codeberg.org/sewn/mew"
+arch=('i686' 'x86_64')
+license=('MIT')
+depends=('wayland' 'libxkbcommon' 'fcft')
+makedepends=('git' 'pkg-config' 'wayland-protocols' 'tllist')
+source=(git+https://git.awy.one/mew.git)
+sha256sums=(SKIP)
+
+provides=("$pkgname")
+conflicts=("$pkgname")
+
+pkgver() {
+ cd $srcdir/$_pkgname
+ git_ver=$(printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)")
+ echo "0.0.$git_ver"
+}
+
+prepare() {
+ cd "$srcdir/$_pkgname"
+ sed -i Makefile -e 's:/usr/local:/usr:g'
+}
+
+build() {
+ cd "$srcdir/$_pkgname"
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname"
+
+ PREFIX="/usr" DESTDIR="$pkgdir" make install
+ install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/mew/build.sh b/mew/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/mutt-wizard/PKGBUILD b/mutt-wizard/PKGBUILD
@@ -0,0 +1,45 @@
+pkgname=mutt-wizard
+
+pkgver() {
+ cd $srcdir/$pkgname
+ git_ver=$(printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)")
+ echo "0.0.$git_ver"
+}
+
+pkgver=0.0.r1284.0c1f068
+pkgrel=1
+
+pkgdesc='Easily auto-configure neomutt and isync/mpop with safe passwords (IMAP/POP3/SMTP)'
+arch=('any')
+url="https://git.awy.one/$pkgname.git"
+license=('GPL3')
+
+provides=("$pkgname")
+conflicts=("$pkgname")
+
+makedepends=('git')
+depends=('neomutt' 'isync' 'msmtp' 'notmuch-runtime' 'gopass' 'curl' 'libnotify' 'perl')
+optdepends=('imagemagick: view images inside of the neomutt TUI'
+ 'w3m: view HTML email and images inside of the neomutt TUI'
+ 'lynx: view HTML email inside of the neomutt TUI'
+ 'links: view HTML email inside of the neomutt TUI'
+ 'elinks: view HTML email inside of the neomutt TUI'
+ 'urlview: list URLs found in mails to open them in a browser'
+ 'abook: contact store and tab completion'
+ 'protonmail-bridge: use neomutt with protonmail accounts'
+ 'pam-gnupg: automatically unlock gpg keys at session login'
+ 'cron: set up automatic mail syncing'
+ 'mpop: if you want to use POP3 email access')
+
+options=('zipman')
+
+source=("git+$url")
+# install="$pkgname.install"
+sha256sums=('SKIP')
+
+
+package() {
+ cd "$pkgname"
+ make PREFIX=/usr DESTDIR="$pkgdir" -s install
+ install -Dm644 README.md -t"$pkgdir/usr/share/doc/$pkgname/"
+}
diff --git a/mutt-wizard/build.sh b/mutt-wizard/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/nordic/PKGBUILD b/nordic/PKGBUILD
@@ -0,0 +1,82 @@
+pkgname=(
+ nordic-theme
+ nordic-standard-buttons-theme
+ # nordic-polar-theme
+ nordic-polar-standard-buttons-theme
+ nordic-darker-theme
+ nordic-darker-standard-buttons-theme
+ nordic-bluish-accent-theme
+ nordic-bluish-accent-standard-buttons-theme)
+pkgver=2.2.0
+pkgrel=1
+pkgdesc="Nord-derived themes for GTK and other platforms"
+arch=('any')
+url="https://github.com/EliverLara/Nordic"
+license=('GPL3')
+source=(
+ "nordic-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic.tar.xz"
+ # "nordic-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-v40.tar.xz"
+ "nordic-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-standard-buttons.tar.xz"
+ # "nordic-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-standard-buttons-v40.tar.xz"
+ # "nordic-polar-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-Polar.tar.xz"
+ # "nordic-polar-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-Polar-v40.tar.xz"
+ "nordic-polar-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-Polar-standard-buttons.tar.xz"
+ # "nordic-polar-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-Polar-standard-buttons-v40.tar.xz"
+ "nordic-darker-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-darker.tar.xz"
+ # "nordic-darker-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-darker-v40.tar.xz"
+ "nordic-darker-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-darker-standard-buttons.tar.xz"
+ # "nordic-darker-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-darker-standard-buttons-v40.tar.xz"
+ "nordic-bluish-accent-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-bluish-accent.tar.xz"
+ # "nordic-bluish-accent-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/Nordic-bluish-accent-v40.tar.xz"
+ "nordic-bluish-accent-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/nordic-bluish-accent-standard-buttons.tar.xz"
+ # "nordic-bluish-accent-standard-buttons-theme-$pkgver.tar.xz::$url/releases/download/v$pkgver/nordic-bluish-accent-standard-buttons-v40.tar.xz")
+)
+sha256sums=('d162d694e13bec518636b193fbe84ccea44da9a81a89015c6713f6b258ee36d5'
+ 'b49a731043d7a27ad1f447cf955a681be0e5a8bb41448fd9a470049b004bbf4e'
+ 'bcc7feec4627963d92b4ee61d4c7b600a5d2b1252db42f0e50d18c9be385951f'
+ '49115292bfa15aaa9aea661c7468b48918708a6940e4b8058ac46f3dbb81c626'
+ '44a196d5ff98ae1c434805a01ec4222fc926e3d0e39c593762250dd098c85231'
+ '61d86268e6d20f349357262484fa3f4637764d2839d5ba096f2c5a1442c4f926'
+ '6f5e504e4f11e222547bc1f6b355d169436822588ce440d263dad319016e80cb')
+
+PURGE_TARGETS=('LICENSE' 'README.md')
+
+_package() {
+ local _name="$1"
+
+ cd "$_name"
+ install -d "$pkgdir/usr/share/themes/$_name/"
+ cp -a --no-preserve=ownership . "$pkgdir/usr/share/themes/$_name/"
+}
+
+package_nordic-theme() {
+ _package "Nordic"
+}
+
+package_nordic-standard-buttons-theme() {
+ _package "Nordic-standard-buttons"
+}
+
+# package_nordic-polar-theme() {
+# _package "Nordic-Polar"
+# }
+
+package_nordic-polar-standard-buttons-theme() {
+ _package "Nordic-Polar-standard-buttons"
+}
+
+package_nordic-darker-theme() {
+ _package "Nordic-darker"
+}
+
+package_nordic-darker-standard-buttons-theme() {
+ _package "Nordic-darker-standard-buttons"
+}
+
+package_nordic-bluish-accent-theme() {
+ _package "Nordic-bluish-accent"
+}
+
+package_nordic-bluish-accent-standard-buttons-theme() {
+ _package "Nordic-bluish-accent-standard-buttons"
+}
diff --git a/nordic/build.sh b/nordic/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/someblocks/PKGBUILD b/someblocks/PKGBUILD
@@ -0,0 +1,33 @@
+_pkgname=someblocks
+pkgname=$_pkgname
+pkgver=r84.e1c696b
+pkgrel=1
+pkgdesc="A fast, feature-complete bar for mango"
+url="https://git.awy.one/someblocks"
+arch=('x86_64')
+license=('ISC')
+makedepends=('git' 'pkg-config')
+source=(git+https://git.awy.one/someblocks.git)
+sha256sums=(SKIP)
+
+provides=("$pkgname")
+conflicts=("$pkgname")
+
+pkgver() {
+ cd $srcdir/$_pkgname
+ git_ver=$(printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)")
+ echo "$git_ver"
+}
+
+build() {
+ cd "$srcdir/$_pkgname"
+ make PREFIX=/usr
+}
+
+package() {
+ cd "$srcdir/$_pkgname"
+
+ install -Dm755 someblocks "$pkgdir/usr/bin/someblocks"
+ install -Dm644 someblocks.1 "$pkgdir/usr/share/man/man1/someblocks.1"
+ install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/someblocks/build.sh b/someblocks/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/tessen/PKGBUILD b/tessen/PKGBUILD
@@ -0,0 +1,37 @@
+_pkgname=tessen
+pkgname=$_pkgname
+pkgver=0.0.r230.dad052e
+pkgrel=1
+pkgdesc="An interactive menu to autotype and copy password-store and gopass data"
+url="https://git.awy.one/tessen.git"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('gopass' 'wtype' 'wl-clipboard' )
+optdepends=('mew' 'rofi')
+makedepends=('git' 'scdoc')
+source=(git+https://git.awy.one/tessen.git)
+sha256sums=(SKIP)
+
+provides=("$pkgname")
+conflicts=("$pkgname")
+
+pkgver() {
+ cd $srcdir/$_pkgname
+ git_ver=$(printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)")
+ echo "0.0.$git_ver"
+}
+
+prepare() {
+ cd "$srcdir/$_pkgname"
+ sed -i Makefile -e 's:/usr/local:/usr:g'
+}
+
+build() {
+ cd "$srcdir/$_pkgname"
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname"
+ make DESTDIR="${pkgdir}" install
+}
diff --git a/tessen/build.sh b/tessen/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/wlr-dpms/PKGBUILD b/wlr-dpms/PKGBUILD
@@ -0,0 +1,29 @@
+pkgname=wlr-dpms
+pkgver=r22.b6a4aa8
+pkgrel=1
+pkgdesc="change output power modes in wlroots compositors"
+arch=('x86_64')
+url="https://sr.ht/~dsemy/wlr-dpms/"
+license=('MIT')
+depends=('wayland')
+makedepends=('git')
+provides=("$pkgname")
+conflicts=("${pkgname%-git}" $pkgname)
+source=('git+https://git.sr.ht/~dsemy/wlr-dpms')
+sha256sums=('SKIP')
+
+pkgver() {
+ cd "$srcdir/$pkgname"
+ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+}
+
+build() {
+ cd "$srcdir/$pkgname"
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname"
+ make PREFIX=/usr DESTDIR="$pkgdir/" install
+ install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}
diff --git a/wlr-dpms/build.sh b/wlr-dpms/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c
diff --git a/xdg-desktop-portal-termfilechooser/PKGBUILD b/xdg-desktop-portal-termfilechooser/PKGBUILD
@@ -0,0 +1,50 @@
+pkgname=xdg-desktop-portal-termfilechooser
+pkgver=v1.2.1.r6.g8697bab
+pkgrel=1
+pkgdesc='xdg-desktop-portal backend for your favorite terminal file chooser (hunkyburrito fork)'
+url="https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser"
+arch=('x86_64')
+license=('MIT')
+provides=('xdg-desktop-portal-impl')
+depends=('xdg-desktop-portal' 'libinih')
+makedepends=('meson' 'scdoc' 'git')
+optdepends=(
+ 'kitty: default terminal for launching wrappers'
+ 'lf: wrapper included'
+ 'nnn: wrapper included'
+ 'ranger: wrapper included'
+ 'vifm: wrapper included'
+ 'yazi: wrapper included'
+)
+source=(
+ "${pkgname}::git+$url.git"
+)
+sha512sums=('SKIP')
+conflicts=(xdg-desktop-portal-termfilechooser-hunkyburrito xdg-desktop-portal-termfilechooser-git xdg-desktop-portal-termfilechooser-boydaihungst-git xdg-desktop-portal-termfilechooser-nosystemd-git)
+
+prepare() {
+ cd "${pkgname}"
+ # either it wont work on mango
+ sed -i 's/UseIn=/UseIn=mango;/' termfilechooser.portal
+}
+
+pkgver () {
+ cd "${pkgname}"
+ (
+ set -o pipefail
+ git describe --long --tags --abbrev=7 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' ||
+ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+ )
+}
+
+build() {
+ cd "${pkgname}"
+ arch-meson -Dsd-bus-provider=libelogind -Dsystemd=disabled build
+ ninja -C build
+}
+
+package() {
+ cd "${pkgname}"
+ DESTDIR="${pkgdir}" ninja -C build install
+ install -Dm644 -t "$pkgdir/usr/share/licenses/${pkgname}" LICENSE
+}
diff --git a/xdg-desktop-portal-termfilechooser/build.sh b/xdg-desktop-portal-termfilechooser/build.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+makepkg --sign -f -s -r -c