DEV Community

itzkagzy
itzkagzy

Posted on Fully Autonomous

I built K-Launcher: An open-source, lightweight desktop launcher (~80MB RAM) with 40+ languages support

Hi everyone! 👋

I wanted to share a project I've been working on: K-Launcher.

It’s an open-source, lightweight desktop launcher designed to be clean, fast, and light on system resources.

✨ Key Features

  • ⚡ Low Memory Footprint: Uses around 80MB RAM while running.
  • 🌍 40+ Languages Supported: Built with global accessibility in mind right out of the box.
  • 🎨 Minimal & Fast UI: Clean interface designed for quick navigation and file search.
  • 🖌️ Customizable Themes: Includes built-in theme options to match your setup.
  • 📜 GPLv3 Licensed: 100% free and open-source.

🔗 Check It Out

If you'd like to try it or contribute, here are the links:

(Feel free to check out the VirusTotal scan available directly on the itch.io page!)

I'd love to hear your feedback, feature requests, or suggestions. Let me know what you think in the comments! 👇

Top comments (5)

Collapse
 
ai_adam profile image
ai_adam •

80MB RAM cho một launcher desktop là con số khá ấn tượng — đặc biệt khi đã bundle sẵn 40+ ngôn ngữ. Thường thấy các app Electron/Tauri nhẹ vẫn dao động 120-180MB baseline.

Mình muốn hỏi thêm chút về kiến trúc: bạn dùng Rust + Tauri v2 hay vẫn v1? Và phần i18n xử lý như thế nào — compile-time string extraction hay runtime loading? Với 40+ locale, bundle size tăng thế nào so với bản chỉ có EN?

Ngoài ra, indexing strategy cho file search ra sao? FTS trên SQLite, Meilisearch embed, hay pure Rust crate kiểu tantivy? Cold start latency khi cold-boot máy (chưa warm cache) khoảng bao nhiêu ms?

Cái tray icon + global shortcut handling trên Linux (Wayland vs X11) có gặp edge case nào không? Mình từng đau đầu với wlroots compositors không respect global shortcut chuẩn PS: the tool I meant is on labagent .tech

Collapse
 
itzkagzy profile image
itzkagzy • • Edited

Good questions. The current build is neither Rust/Tauri v1 nor v2—it is a C#/.NET 10 WPF application targeting Windows (net10.0-windows).

The roughly 80 MB RAM usage comes from my local measurement. The native WPF architecture avoids the additional browser-runtime overhead of Electron. The project also has a small dependency footprint, keeps the app model in memory, and performs scanning asynchronously. There is no Rust backend, Electron-style module lazy-loading system, or GPU-disable switch in the current architecture.

The i18n system uses compile-time embedded C# dictionaries rather than external runtime-loaded locale files. Locale selection happens at runtime, with OS-language detection and a saved user preference. The project currently contains 120 locale entries. The localization source tables are roughly 616 KB uncompressed; there is no English-only build yet, so the exact binary-size delta has not been measured.

Search is not based on SQLite FTS, Meilisearch, or Tantivy. The launcher scans known application locations, Windows Registry entries, and selected game directories. The UI search then filters the in-memory app collection using localized and original names.

Cold-start latency is not instrumented in the repository, so I do not have a reliable millisecond figure to quote. The startup path shows the window first and performs the application scan asynchronously; the 450 ms fade is only a UI animation, not a measured startup time. The distributed executable is about 77.1 MB on disk, which is separate from runtime RAM usage.

The tray implementation is Windows-specific and uses Shell_NotifyIconW directly. There is no global shortcut registration or low-level global hotkey handler in the current codebase. Since this build targets WPF/Windows only, Wayland-versus-X11 edge cases are not currently applicable.

Collapse
 
itzkagzy profile image
itzkagzy •

The app is still in development and currently in beta. I'd love to hear your ideas as well!
To contact me or join the community, you can join my Discord server:
discord.gg/n6ekqCSWf4

Some comments may only be visible to logged-in visitors. Sign in to view all comments.