SparkNotePad is a fast, versatile native Linux and macOS desktop text editor built on the Scintilla 5.6.7 and Lexilla 5.5.4 editing engines with a native Qt 6 GUI (no Win32 emulation, no Wine layer).
This guide provides step-by-step native compilation and .deb packaging instructions for:
Lineage & Upstream Reference: This document incorporates native Linux build strategies established in upstream projects and community reference implementations, notably Jeremie Conte’s
NotepadNext-native-linux(BUILD-UBUNTU-26.04.md), adapted for SparkNotePad’s architecture.
Install the required system compilers, CMake, Qt6 development libraries, and X11/XCB headers.
sudo apt update
sudo apt install -y \
build-essential cmake ninja-build pkgconf \
qt6-base-dev qt6-base-private-dev qt6-base-dev-tools \
qt6-5compat-dev qt6-tools-dev qt6-tools-dev-tools linguist-qt6 \
libgl1-mesa-dev libxkbcommon-dev libxkbcommon-x11-0 \
libfontconfig1-dev libfreetype6-dev libxcb1-dev libxcb-cursor-dev \
dpkg-dev rpm
On Ubuntu 22.04 and Debian 12, install the standard Qt6 developer packages:
sudo apt update
sudo apt install -y \
build-essential g++-12 cmake ninja-build pkg-config \
qt6-base-dev qt6-base-dev-tools \
qt6-5compat-dev qt6-tools-dev qt6-tools-dev-tools linguist-qt6 \
libgl1-mesa-dev libxkbcommon-dev libxkbcommon-x11-0 \
libfontconfig1-dev libfreetype6-dev libxcb1-dev libxcb-cursor-dev \
dpkg-dev rpm
(On Ubuntu 22.04, g++-12 provides optimal C++20 standard library support for Scintilla and Lexilla).
SparkNotePad vendors core editing algorithms directly within thirdparty/ for reproducibility and offline stability:
thirdparty/scintilla)thirdparty/lexilla)thirdparty/lua)thirdparty/uchardet)Auxiliary Qt utilities are retrieved automatically via CPM (CMake Package Manager) during CMake configuration (internet connection required only on the first configure):
Qt6::GuiPrivate on Qt ≥ 6.9As documented in NotepadNext-native-linux/BUILD-UBUNTU-26.04.md:
Qt6::GuiPrivate to access <qpa/qplatformnativeinterface.h> for X11 floating title bar customization.qt6-base-private-dev must be installed. If absent, CMake will fail looking for private header paths under /usr/include/.../QtGui/<version>.glibc 2.35.glibc 2.35 will seamlessly run on Ubuntu 22.04, Debian 12 (glibc 2.36), Ubuntu 24.04 (glibc 2.39), and Ubuntu 26.04.glibc 2.39) cannot run on Ubuntu 22.04 or Debian 12 without upgrading the host glibc.# 1. Clone repository
git clone https://github.com/alsyundawy/SparkNotePad.git
cd SparkNotePad
# 2. Configure CMake Release build
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
# 3. Build executable in parallel
cmake --build build --parallel "$(nproc)"
# 4. Run binary directly
./build/src/SparkNotePad
Binary hardening flags (RELRO, -z now, -fstack-protector-strong, -D_FORTIFY_SOURCE=2) are enabled automatically by the root CMakeLists.txt.
.deb & .rpm# Generate Debian package (.deb)
cmake --build build --target deb
# Generate Red Hat package (.rpm)
cmake --build build --target rpm
The resulting files will be placed in build/:
build/sparknotepad_1.3.5_amd64.debbuild/sparknotepad-1.3.5-1.x86_64.rpm# Inspect generated Debian package control metadata:
dpkg-deb -I build/sparknotepad_1.3.5_amd64.deb
# Verify file contents inside .deb:
dpkg-deb -c build/sparknotepad_1.3.5_amd64.deb
To install the .deb package while automatically resolving and downloading all required dependencies from APT repositories:
# ✅ Recommended APT installation command (local file):
sudo apt install ./build/sparknotepad_1.3.5_amd64.deb
Why
apt install ./file.debinstead ofdpkg -i?
dpkg -iis a low-level unpacker that cannot query APT repository mirrors.sudo apt install ./file.debcalculates the full dependency graph and automatically downloads required Qt6 libraries (libqt6widgets6,qt6-qpa-plugins, etc.) just likesudo dnf install ./file.rpmdoes on Fedora.