A native application framework for building Linux desktop applications.
Warning
This project is experimental and in alpha. I'm actively building and iterating on AppLib, so expect things to change—sometimes quickly. If you run into rough edges or missing features, know that I'm working on it. Things should improve rapidly as development continues.
Note
AI Disclaimer: I use AI to help with some of my work on this project. I write some code myself, can still read and understand what code written by AI does, and I do review it.
AppLib provides the foundation for creating polished, high-performance desktop apps with a complete set of UI components, window management, and system integration.
- 60+ Components - Buttons, lists, tables, forms, navigation, and more
- Beautiful by Default - Polished, cohesive design out of the box
- Built on GPUI - Leverages Zed's high-performance GPU-accelerated UI framework
- Declarative API - Intuitive, composable patterns for rapid development
Add AppLib to your Cargo.toml:
[dependencies]
applib = "0.1"
gpui = "0.2"Build your first UI:
use applib::prelude::*;
fn main() {
App::new().run(|cx| {
cx.open_window(WindowOptions::default(), |cx| {
cx.new_view(|_cx| MyApp)
});
});
}
struct MyApp;
impl Render for MyApp {
fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
WindowFrame::new(cx.view().clone())
.child(
VStack::new()
.gap_4()
.p_4()
.child(Text::new("Hello, AppLib!").size_xl().bold())
.child(
HStack::new()
.gap_2()
.child(Button::new("cancel", "Cancel"))
.child(Button::new("ok", "OK").primary())
)
)
}
}VStack · HStack · ZStack · Spacer · Divider
Button · IconButton · Toggle · Checkbox · RadioGroup · Slider · Stepper · Picker · DatePicker · ColorPicker
TextField · SecureField · TextArea
List · ListItem · Table · TableRow · LazyVStack · LazyHStack · LazyVGrid · LazyHGrid
TabView · Sidebar · SidebarItem · Menu · ContextMenu
WindowFrame · TitleBar · TrafficLights · SplitView · ScrollView · Panel · Sheet · Alert · Popover · GroupBox · Section · Form · DisclosureGroup
Text · Label · Badge · Image · ProgressView · EmptyState · EmptyView · Canvas · ColorView · Link · Tooltip
AppLib is dual-licensed:
LGPL-3.0-or-later with Additional Terms
- ✅ Build any application (commercial or open source)
- ✅ Sell your applications
- ✅ Keep your application code proprietary
- ✅ Create plugins, themes, and extensions
- 📤 Share modifications to AppLib itself (LGPL requirement)
- ❌ Cannot create competing UI frameworks
See LICENSE for complete terms.
For organizations that prefer:
- Not sharing modifications to AppLib
- Enterprise support and SLAs
- Additional features and priority fixes
- Indemnification and warranties
Contact: cihan@tas.fm
Contributions are welcome. Please read the Contributor License Agreement before submitting pull requests.
# Clone the repository
git clone https://github.com/cihantas/applib.git
# Build
cargo build
# Run tests
cargo test
# Generate documentation
cargo doc --open