# Linux Desktop Guide > A practical field guide to building fast, accessible, deeply integrated native apps for the Linux desktops that matter, with a curated target matrix, a default stack for each target, and a shared quality bar. ## Targets - [Fedora 45 KDE Plasma + Qt](https://digitalesich.github.io/linux-desktop-guide/targets/fedora-kde.md): The guide's upstream-current KDE reference target: Fedora 45 KDE Plasma, Qt 6, KDE Frameworks 6, Kirigami, Wayland, Flatpak, RPM, SELinux, and the quality gates for a KDE-native… - [How Targets Are Chosen](https://digitalesich.github.io/linux-desktop-guide/targets/selection.md): The evidence-based method behind the guide's platform targets: adoption, momentum, developer environment, platform quality, longevity, and coverage. - [Platform Targets](https://digitalesich.github.io/linux-desktop-guide/targets.md): The curated targets this guide supports, the default stack for each, and the evidence behind the choice. - [Ubuntu 26.04 LTS + GNOME](https://digitalesich.github.io/linux-desktop-guide/targets/ubuntu-gnome.md): The guide's stable GNOME reference target: Ubuntu 26.04 LTS, GNOME 50, GTK 4.22, libadwaita 1.9, Wayland, native Snap/deb packaging, cross-target Flatpak, and the quality gates… ## Start Here - [Build Your First App](https://digitalesich.github.io/linux-desktop-guide/start/first-app.md): A complete, minimal GTK 4 + libadwaita app for the Ubuntu 26.04 LTS + GNOME target — with adaptive layout, XDG storage, keyboard shortcuts, AppStream metadata, and a Flatpak… - [Choose Your Target and Stack](https://digitalesich.github.io/linux-desktop-guide/start/choose-stack.md): Choose a platform target first, then the default stack for that target. A practical comparison of GTK 4 + libadwaita, Qt 6 + Kirigami, Rust, Python, and web tech, with… - [One App Across Linux Targets](https://digitalesich.github.io/linux-desktop-guide/start/one-app-across-targets.md): How to ship one Linux app across Ubuntu, Fedora, Debian, and Arch without pretending one toolkit, HIG, or package channel is native everywhere. - [The Native Standard](https://digitalesich.github.io/linux-desktop-guide/start/native-standard.md): Ten rules for building Linux desktop apps that are fast, accessible, well-integrated, and trustworthy — in any toolkit. - [Why Linux Is Different](https://digitalesich.github.io/linux-desktop-guide/start/why-linux.md): A model for building software across GNOME, KDE Plasma, and every Linux desktop that shares the same contracts. ## Platform - [Flatpak & Portals](https://digitalesich.github.io/linux-desktop-guide/platform/flatpak-portals.md): How the Flatpak sandbox works, which permissions are acceptable, and how XDG Desktop Portals let a sandboxed app use files, secrets, screen capture, and notifications without… - [Packaging & Distribution](https://digitalesich.github.io/linux-desktop-guide/platform/packaging.md): How to package a Linux desktop app: Flatpak, deb, RPM, Snap, and AppImage compared — with the files, commands, and release practices for installation and updates. - [Security & Privacy](https://digitalesich.github.io/linux-desktop-guide/platform/security.md): A practical threat model for Linux desktop apps: sandboxing, AppArmor and SELinux, least privilege, secrets, safe file handling, network security, privacy-respecting telemetry,… - [System Integration](https://digitalesich.github.io/linux-desktop-guide/platform/integration.md): D-Bus, notifications, file dialogs, secrets, search, media controls, background services, and hardware APIs — how a Linux app becomes part of the desktop instead of a window on… - [The XDG Contract](https://digitalesich.github.io/linux-desktop-guide/platform/xdg.md): Where Linux apps put configuration, data, state, caches, desktop entries, icons, MIME types, and autostart files — and why the XDG specs are the closest thing the desktop has to… - [Ubuntu Platform](https://digitalesich.github.io/linux-desktop-guide/platform/ubuntu.md): Release support, toolchains, packaging paths, system services, security, and Ubuntu Pro for desktop developers. - [Wayland & Display](https://digitalesich.github.io/linux-desktop-guide/platform/wayland.md): How Wayland changes windowing, input, scaling, screen capture, and security — and what a native Linux app must do instead of reaching for X11. ## Design - [Accessibility](https://digitalesich.github.io/linux-desktop-guide/design/accessibility.md): Keyboard access, screen-reader semantics, contrast, text scaling, reduced motion, and inclusive forms — the technical and legal baseline for Linux desktop apps. - [Design Principles](https://digitalesich.github.io/linux-desktop-guide/design/principles.md): How to design Linux desktop apps that feel calm, fast, and native across GNOME, KDE, and the wider ecosystem — without sanding off your product's character. - [Interaction & Feedback](https://digitalesich.github.io/linux-desktop-guide/design/interaction.md): Keyboard shortcuts, focus, pointer targets, undo, search, toasts, errors, loading states, and motion — the small behaviors that make a Linux app feel responsive and trustworthy. - [Layout & Navigation](https://digitalesich.github.io/linux-desktop-guide/design/layout.md): Adaptive layouts, navigation patterns, dialogs, empty states, and settings pages for Linux desktop apps — with GNOME/libadwaita and KDE/Kirigami patterns. - [Localization](https://digitalesich.github.io/linux-desktop-guide/design/localization.md): Internationalization and localization for Linux desktop apps: gettext, Qt Linguist, plurals, dates, RTL layouts, fonts, metadata translation, and a workflow that keeps… - [Visual Language](https://digitalesich.github.io/linux-desktop-guide/design/visual-language.md): Typography, color, spacing, icons, shape, and motion for Linux desktop apps that adapt to GNOME, KDE, and the user's accessibility settings. ## Engineering - [Architecture](https://digitalesich.github.io/linux-desktop-guide/engineering/architecture.md): A maintainable structure for Linux desktop apps: the main loop, state, async work, storage, D-Bus, and testing seams that keep the UI fast and the codebase understandable. - [GTK & libadwaita](https://digitalesich.github.io/linux-desktop-guide/engineering/gtk.md): A practical deep dive into GTK 4.22 and libadwaita 1.9: project structure, Blueprint UI, adaptive widgets, actions, models, settings, async work, testing, accessibility, and… - [Performance](https://digitalesich.github.io/linux-desktop-guide/engineering/performance.md): Startup budgets, main-loop discipline, rendering, memory, battery, and a profiling workflow with Sysprof, perf, heaptrack, and GTK Inspector. - [Qt & Kirigami](https://digitalesich.github.io/linux-desktop-guide/engineering/qt.md): Building native KDE apps with Qt 6.10+ and Kirigami: a persistent C++/QML project, XDG storage, QAbstractListModel, CMake, KConfig, KNotification, KIO, testing, accessibility,… - [Reliability & Logging](https://digitalesich.github.io/linux-desktop-guide/engineering/reliability.md): Designing for failure: logging, crash reports, recovery, and data integrity across the Linux desktop. - [Rust on the Desktop](https://digitalesich.github.io/linux-desktop-guide/engineering/rust.md): Rust desktop options compared — gtk-rs, Relm4, Iced, Slint, libcosmic — with a complete gtk-rs project, actions, async patterns, testing, accessibility, and Flatpak packaging. - [Testing](https://digitalesich.github.io/linux-desktop-guide/engineering/testing.md): A practical test strategy for Linux desktop apps: unit, integration, UI, accessibility, performance, packaging, headless Wayland, and CI release gates. ## Ship - [AppStream & Metadata](https://digitalesich.github.io/linux-desktop-guide/ship/appstream.md): How to write AppStream metainfo, screenshots, release notes, and desktop entries that make a Linux app discoverable, trustworthy, and installable from a software center. - [Flathub](https://digitalesich.github.io/linux-desktop-guide/ship/flathub.md): The complete Flathub submission and maintenance workflow: app IDs, manifests, linting, pull requests, review, runtime updates, verification, and the mistakes that get submissions… - [Release Checklist](https://digitalesich.github.io/linux-desktop-guide/ship/release-checklist.md): A practical pre-release, release-day, and post-release checklist for Linux desktop apps — quality gates, packaging, metadata, UX matrix, and rollback. - [The Quality Bar](https://digitalesich.github.io/linux-desktop-guide/ship/quality-bar.md): A seven-dimension scorecard for Linux desktop apps — from prototype to exemplary — with concrete criteria, an audit method, and a 90-day improvement plan. - [User Documentation](https://digitalesich.github.io/linux-desktop-guide/ship/documentation.md): How to structure, write, test, and ship user documentation for a Linux desktop app — task-based pages, plain language, accessible formats, and review against ISO/IEC/IEEE 26514,… ## Reference - [Agent Access](https://digitalesich.github.io/linux-desktop-guide/reference/agent-access.md): How an agent reads the published guide through MCP, the generated Markdown routes, or the local docs server. - [Baseline](https://digitalesich.github.io/linux-desktop-guide/reference/baseline.md): The validated Ubuntu 26.04 LTS + GNOME reference baseline: GNOME 50, GTK 4.22, libadwaita 1.9, Qt 6.10, and the packaging toolchain the examples are tested against. The full… - [Checklists](https://digitalesich.github.io/linux-desktop-guide/reference/checklists.md): Condensed, copy-paste checklists for new Linux desktop projects, releases, accessibility, performance, security, metadata, and Flatpak. - [Feedback](https://digitalesich.github.io/linux-desktop-guide/reference/feedback.md): How to report a wrong, missing, or unclear page in the Linux Desktop Guide — for human readers and agents, with a static GitHub Issues workflow that works on GitHub Pages. - [Glossary](https://digitalesich.github.io/linux-desktop-guide/reference/glossary.md): The Linux desktop terms used in this guide — Wayland, XDG, portals, GTK, libadwaita, Flatpak, AppStream, and more — defined in plain language. - [Quality Signals](https://digitalesich.github.io/linux-desktop-guide/reference/quality-signals.md): How to judge whether a toolkit, runtime, or packaging channel is actively maintained, healthy, and safe to depend on — using observable signals instead of popularity. - [Resources](https://digitalesich.github.io/linux-desktop-guide/reference/resources.md): A curated, link-checked set of specifications, documentation, tooling, design assets, and communities for building native Linux desktop apps. - [Style Guide](https://digitalesich.github.io/linux-desktop-guide/reference/style-guide.md): The house style for the Linux Desktop Guide and the apps it documents — voice, page shape, terminology, code, links, screenshots, accessibility, localization, and agent-facing… ## Optional - [Full text](https://digitalesich.github.io/linux-desktop-guide/llms-full.txt): The complete guide in one Markdown file. - [Baseline](https://digitalesich.github.io/linux-desktop-guide/reference/baseline.md): The validated version set and review date.