Browser Development • Re: Linux Pale Moon with Qt toolkit
Pale Moon forum - Forum index [Unofficial]
May 7, 2026
Here's my steps for building Basilisk-Qt6. I used GCC just because I'm unfamiliar with Clang:
- Confirm you are in an X11 session if you build it on KDE like I did -
CODE:
echo "$XDG_SESSION_TYPE"
- Update, and Install build dependencies. Note - I had to download and 'sudo apt install' the deb package for autoconf2.13 from Debian Bookworm at packages.debian.org, which installed fine, but it's not available on Debian 13:
CODE:
sudo apt updatesudo apt install git ca-certificates curl wget build-essential pkgconf autoconf2.13 m4 perl patch python3 python-is-python3 python3-dev python3-dbus yasm zip unzip xz-utils tar bzip2 ccache libasound2-dev libpulse-dev libxt-dev libx11-dev libx11-xcb-dev libxext-dev libxrender-dev libxfixes-dev libxss-dev libxi-dev libxcomposite-dev libxdamage-dev libxrandr-dev libxcb1-dev libxcb-shm0-dev libxcb-render0-dev libxcb-render-util0-dev libxcb-xfixes0-dev libxcb-glx0-dev libxcb-randr0-dev libxcb-keysyms1-dev libxcb-cursor0 libxcb-cursor-dev libegl-dev libgl-dev libglu1-mesa-dev mesa-common-dev zlib1g-dev libssl-dev libsqlite3-dev libbz2-dev libffi-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libpango1.0-dev libfontconfig-dev libfreetype-dev libharfbuzz-dev qt6-base-dev qt6-base-dev-tools qt6-base-private-dev qt6-qpa-plugins gdb strace
- Create a source directory
CODE:
mkdir -p ~/srccd ~/src
- Clone Basilisk-Qt6
CODE:
git clone https://repo.palemoon.org/Basilisk-Dev/Basilisk.git basilisk-qt6cd basilisk-qt6
- Initialize the UXP platform submodule
CODE:
git submodule initgit submodule update --init platform
- Point
platform/at the Qt6 UXP-contrib repo and branch
CODE:
git submodule set-url platform https://repo.palemoon.org/Basilisk-Dev/UXP-contrib.gitcd platformgit fetch origin qt6git checkout -B qt6 origin/qt6cd ..
5.1. Verify:
CODE:
git -C platform branch --show-currentgit -C platform log --oneline -5
The branch should show: qt6
- Create .mozconfig. Run this from the top-level
basilisk-qt6directory. This is my GCC version, not @Basilisk-Dev's Clang version, so there's some small differences:
CODE:
cat > .mozconfig <<'EOF'# Build output directorymk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-qt6# Adjust this for your VM.# -j4 is a safe starting point for many VMs.mk_add_options MOZ_MAKE_FLAGS="-j4"# Set Basilisk version to date timestampexport BASILISK_VERSION=1# Basilisk applicationac_add_options --enable-application=basilisk# Experimental Qt6 backendac_add_options --enable-default-toolkit=cairo-qt6# Conservative first build: GCC, no LTO, no Clang, no ThinLTOac_add_options --enable-optimize="-O2 -w"# Standard-ish Basilisk optionsac_add_options --enable-jemallocac_add_options --enable-stripac_add_options --enable-devtoolsac_add_options --enable-av1ac_add_options --enable-webrtcac_add_options --enable-gamepadac_add_options --enable-pieac_add_options --enable-update-channel=releaseac_add_options --disable-testsac_add_options --disable-debugac_add_options --disable-necko-wifiac_add_options --enable-updaterac_add_options --with-pthreads# Branding / official flag.# Fine for private testing. Be careful about redistribution rules.ac_add_options --enable-official-brandingexport MOZILLA_OFFICIAL=1# Debian/MX amd64 library path.# Do not use /usr/lib64 on Debian/MX.ac_add_options --x-libraries=/usr/lib/x86_64-linux-gnu# Mark package flavorexport MOZ_PKG_SPECIAL=qt6EOF
- Configure Explicitly tell Qt to build for X11:
CODE:
export QT_QPA_PLATFORM=xcb
Then:
CODE:
./mach configure
- Build
CODE:
./mach build
This may take a while. If your VM has low RAM, reduce jobs in .mozconfig:
CODE:
mk_add_options MOZ_MAKE_FLAGS="-j2"
Then rerun:
CODE:
./mach build
- Package [this failed for me]:
CODE:
./mach package
Find the output:
CODE:
find obj-qt6/dist -maxdepth 3 -type f \( -name "*.tar.*" -o -name "*.zip" \) -print
Since packaging failed, I ran Basilisk-Qt6 directly via mach run:
CODE:
QT_QPA_PLATFORM=xcb ./mach run
- Clean rebuild command, if needed, if configure/build state gets messy:
CODE:
./mach clobberrm -rf obj-qt6./mach configure./mach build
Here it is. Visually it seems the same as regular Basilisk to me, except that the menus aren't as polished:
Discussion in the ATmosphere