Albert
albertlauncher.github.io- Category
- Productivity
- Rank
- No. 485Tools index
Previous survey · No. 463 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- albertlauncher
- GitHub
- 8.0k stars
- Latest release
- v35.1.0
- Date
About
Linux launcher inspired by Alfred. Search files, run calculations, plugin-extensible, fast.
What it does
Albert opens from a system-wide keyboard shortcut and routes typed queries through a query engine. Results can expose actions, update dynamically, and come from enabled plugins. It runs as a Qt desktop application and uses local messaging to communicate with an existing instance.
Why it's ranked here
Albert has a focused, credible desktop architecture: native C++, Qt integration, configurable global shortcuts, plugins, and single-instance local messaging. Its telemetry is disclosed through a consent prompt and can be disabled, though the collected report includes a shortened machine identifier, enabled plugins, activation counts, and system details.
What's good
The global hotkey layer reports registration failures instead of silently accepting a broken shortcut. Dynamic results support observers, so displayed items can change after creation. Local messaging detects an existing process and handles stale sockets left by crashes. Diagnostic reporting captures build, operating system, Qt, locale, style, font, arguments, and environment information.
Tradeoffs
Global shortcut support depends on the underlying platform. Changes to localization and additional executable search paths require a restart. Local messaging uses short blocking connection and response waits, which keeps the mechanism simple but imposes fixed time limits. Telemetry asks for consent with Yes selected by default and, when enabled, sends system and usage metadata.
How to use it well
Albert suits Linux users who prefer launching desktop actions through a keyboard-first query workflow and want plugins to supply specialized results. Configure a reliable global shortcut, enable only useful plugins, and review the telemetry choice. It does not cover remote automation or cross-machine orchestration because the demonstrated messaging interface uses local sockets.
Technical notes+
src/main.cpp delegates startup to albert::detail::run and converts uncaught exceptions into failure output. src/app/hotkey.cpp wraps QHotkey, exposes native and portable shortcut strings, and returns registration errors through std::expected. src/app/rpcserver.cpp uses QLocalServer and QLocalSocket for single-instance detection and request-response IPC, with 500 ms connection and 5000 ms response waits. src/app/telemetry.cpp prompts on first configuration, stores the setting, builds JSON containing platform, plugin and activation data, hashes QSysInfo::machineUniqueId() with SHA-1 and truncates it to eight hexadecimal characters, then resolves the upload endpoint from the project website. src/common/item.cpp implements observer-backed dynamic result updates, while src/frontend/session.h retains active queries for a frontend session.
Observed
- Primary language
- C++
- Application framework
- Qt
- Platform
- Linux desktop
- User interface
- Desktop keyboard launcher with a configurable global hotkey
- Architecture
- Plugin-based and desktop-agnostic
- Process interface
- Local socket request-response IPC with single-instance detection
Read from README.md, src/main.cpp, src/app/hotkey.h, src/app/report.h, src/app/hotkey.cpp, src/app/report.cpp, src/app/rpcserver.h, src/app/telemetry.h, src/common/item.cpp, src/app/pathmanager.h, src/app/rpcserver.cpp, src/app/telemetry.cpp, src/app/localization.h, src/app/urlhandler.cpp, src/frontend/session.h.
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.