Modern GTK4 + Libadwaita foundation library for Rust applications.
AtlBase is a modular Rust framework designed to simplify the development of modern Linux desktop applications with GTK4 and Libadwaita. It provides reusable UI components, helper utilities, filesystem tools, configuration management, localization support, logging helpers, and system integration APIs.
- GTK4 (
>4.20) + Libadwaita 1.8 integration - Ready-to-use dialogs and UI widgets
- File and folder chooser utilities
- Journald logging helpers
- Command execution utilities
- TOML configuration management
- Filesystem helper functions
- Internationalization (gettext)
- Root command execution helpers (
pkexec) - Reusable UI widget generators
- Modular architecture
AtlBase is divided into multiple high-level modules.
atlbase
├── helper/ -> Helper for basic operations
├── design/ -> GTK4 + Libadwaita UI framework
├── macros.rs -> Reusable macros
├── prelude -> Logic helper exports
└── ui_prelude -> UI helper exports
| Module | Description |
|---|---|
helper |
Helper functions and utilities |
design |
UI dialogs, widgets, themes and utility components |
macros |
Shared macros used across applications |
prelude |
Central import point for backend helpers |
ui_prelude |
Central import point for UI helpers |
Add AtlBase to your project:
[dependencies]
atlbase = "0.1"AtlBase depends on GTK4 and Libadwaita development libraries.
sudo apt install \
libgtk-4-dev \
libadwaita-1-dev \
libvte-2.91-gtk4-dev \
gettextsudo dnf install \
gtk4-devel \
libadwaita-devel \
vte291-gtk4-devel \
gettextsudo pacman -S \
gtk4 \
libadwaita \
vte4 \
gettextAtlBase provides two convenience preludes.
use atlbase::prelude::*;This imports:
- Command helpers
- Configuration utilities
- Filesystem helpers
- File utilities
- Localization helpers
- Logging utilities
use atlbase::ui_prelude::*;This imports:
- Dialog systems
- File choosers
- Theme helpers
- Widget creators
- Spinner dialogs
- Logging viewers
The helper module contains backend and system integration functionality.
Utilities for executing and managing system commands.
- Run shell commands
- Capture command output
- Execute commands via
pkexec - Open terminal applications
- Open URLs in browser
- Detect command availability
TOML-based configuration helpers.
- Store structured settings
- Load configuration automatically
- Detect runtime environment
- Application environment helpers
Helpers for reading, writing and modifying files.
- Write files
- Append lines
- Temporary application storage
- Clean and trim strings
- Read configuration values
Filesystem abstraction helpers.
- Create directories
- Search files
- Expand paths (
~support) - Delete files and directories
- Home directory detection
- File existence checks
gettext-based internationalization support.
- Translation initialization
- Language directory handling
- Runtime locale switching
journald integration.
- Syslog initialization
- Journald log viewer
- Custom headerbars for logs
- Runtime debugging
The design module contains reusable GTK4 and Libadwaita UI components.
Ready-to-use dialogs for modern applications.
| Dialog | Description |
|---|---|
| Alert Dialog | Standard alert message |
| About Dialog | ADW application about window |
| Entry Dialog | Text input dialog |
| Spinner Dialog | Background task progress dialog |
| Error Dialog | Error presentation |
| Image Dialog | Image preview dialog |
| Custom Dialog | Fully custom content container |
AtlBase contains reusable widget generators.
- Buttons with icons
- Icon-positioned buttons
- Entry widgets
- Password entry widgets
- Label + icon combinations
| Dependency | Purpose |
|---|---|
gtk4 |
GTK4 UI toolkit |
libadwaita |
GNOME/Adwaita components |
vte4 |
Embedded terminal widget |
tokio |
Async runtime |
serde |
Serialization |
confy |
Configuration management |
gettext-rs |
Internationalization |
networkmanager |
Network integration |
syslog |
System logging |
walkdir |
Recursive filesystem traversal |
AtlBase is configured for highly optimized release builds.
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
panic = "abort"
strip = trueThis configuration minimizes binary size while preserving performance.
cargo buildcargo build --releaseGenerate local API documentation:
cargo doc --openRun the example application:
cargo run --example test_appGPL-3.0 License.
See the LICENSE file for more information.
GitHub Repository:
https://github.com/AtlantisOS-Project/atlantis-UI-base
The AtlantisOS Project
Primary Developer: @NachtsternBuild