albertlauncher/albert
A fast and flexible keyboard launcher
✨ Features
- Widgets BoxModel · [Warn on icon rendering taking too long](https://github.com/albertlauncher/albert-plugin-widgetsboxmodel/commit/222fdee5afa2d1bca195e7420a949977e4f697c7)
⚡ Performance
- Widgets BoxModel · [Warm up font rendering](https://github.com/albertlauncher/albert-plugin-widgetsboxmodel/commit/700ba2d84f166b2c32c9606c1700cc744d94794c)
🐛 Fixes
- _GeneratorQueryHandler_ · [Workaround Qt 6.4 deadlocks](https://github.com/albertlauncher/albert/commit/556514bb3b76ed6f9ba1d2c597759fafb95e7c51)
- _BackgroundExecutor_ · [Workaround Qt 6.4 deadlocks](https://github.com/albertlauncher/albert/commit/2e9fce148b6c4213daca68f5a350457e34331da7)
🐛 Fixes
- _widgetsboxmodel_ · [Accidentially released dev branch](https://github.com/albertlauncher/albert/commit/ad3705b2b32eb5170995d6a92faf09ead728c424)
- URL Handler · [Disable implict input action](https://github.com/albertlauncher/albert-plugin-urlhandler/commit/c4950597a4887e795ddbb375da177bf30b87164d)
🐛 Fixes
- Python plugins · [Dependent template breaks almost all builds](https://github.com/albertlauncher/albert-plugin-python/commit/9f7ec61aa0909c50fadb080bbf9fa65f4346ef1d)
📦 Miscellaneous Tasks
- [Remove title from cliff templates](https://github.com/albertlauncher/albert/commit/52f7afc834f75a996e8e494ca1deda29d49e0c81)
- GitHub · [Remove leftover debug output](https://github.com/albertlauncher/albert-plugin-github/commit/dbdc521897699b5a5e21d9e9a48d262ba4f0522b)
- Full Changelog: https://github.com/albertlauncher/albert/compare/v34.0.7...v34.0.8
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v34.0.6...v34.0.7
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v34.0.5...v34.0.6
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v34.0.4...v34.0.5
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v34.0.2...v34.0.3
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v34.0.1...v34.0.2
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v34.0.0...v34.0.1
📦 Highlights
- Query system redesign: stateful asynchronous query handlers enable lazy query processing. This significantly reduces query latency and supports infinite scrolling. Generator-based subclasses allow writing linear, readable code while remaining fully asynchronous.
- Internationalized tokenization: queries are now tokenized using Unicode word boundaries, enabling correct splitting of non-Latin scripts.
- Improved API structure and documentation: API restructuring reduces the cognitive load for plugin developers.
- Asynchronous plugin initialization: gives implementations control over how plugins are initialized, improving performance and reducing UI freezes.
- Plugins
- Added Homebrew plugin.
- Added Firefox plugin.
- Renamed the PATH plugin to Commandline.
- + 1 more
✨ Features
- [BREAKING] [Tokenize strings using unicode word boundaries](https://github.com/albertlauncher/albert/commit/292e863237bada75ddff2035bea8179d2f71d906)
- [Add 🕚 inputhint to global query wildcard](https://github.com/albertlauncher/albert/commit/b0a586f53f49f341300b6a92b2a57bca56d1bbc7)
- [Add Homebrew plugin](https://github.com/albertlauncher/albert/commit/cb62c7dc58223a72985fe6e8750567834ba29d4e)
- Arch Linux Wiki · [Infinite scrolling](https://github.com/albertlauncher/albert-plugin-python-arch-wiki/commit/3af7e39df34f7c4ee6cb5b6a9acdf75892f38505)
- Documentation · [Allow custom docsets](https://github.com/albertlauncher/albert-plugin-docs/commit/15037f8ca9c1f75285f58c7683fdd5446e544bb6)
- GitHub
- [Use a placeholder icon to impove visual appearance](https://github.com/albertlauncher/albert-plugin-github/commit/e2db7bbf591f47233370127d8d5873c543facaaf)
- [Lazily fetch pages (Infinite scroll)](https://github.com/albertlauncher/albert-plugin-github/commit/660b65bbf7920c32c90d7d81901c52eb9bd1ffaf)
- + 10 more
📦 API
- [BREAKING] [Drop property.h](https://github.com/albertlauncher/albert/commit/fc07c1d8c4dbaa4f3d6a6d76c23d257949351a38)
- [BREAKING] [Rename `bind` to `bindWidget`](https://github.com/albertlauncher/albert/commit/0debe13f281d2f5ced7d3c777f02b7a5c607718f)
- [BREAKING] [Drop `util` namespace](https://github.com/albertlauncher/albert/commit/ba78ecff5306e83f7f8ff27a599666adfc915872)
- [BREAKING] [Drop `tryCreateDirectory`](https://github.com/albertlauncher/albert/commit/fa82d140eaf6ab698ca80b2189ac562160fcda50)
- [BREAKING] [Expose the `UsageScoring` class](https://github.com/albertlauncher/albert/commit/186455b21d6d106db0df789f5820dcd1448c60c7)
- [BREAKING] [Remove color macros from public interface](https://github.com/albertlauncher/albert/commit/9171e23ece288a1124688fabbb66124cb1f4c30f)
- [BREAKING] [Simplify `UsageScoring` API](https://github.com/albertlauncher/albert/commit/ac707a94ae0963122b9bc42d85710376b90fa866)
- [BREAKING] [Add asynchronous query handling support](https://github.com/albertlauncher/albert/commit/8ece3fbb7609fcf5210f3df6968c4c0fd41c77c5)
- + 17 more
⚡ Performance
- Calculator · [Initialize calculator in background thread](https://github.com/albertlauncher/albert-plugin-calculator-qalculate/commit/8e191c40d9c15fa20bd73ed1ed2b5d5349c3eaa2)
- Documentation · [Asynchronous initialization](https://github.com/albertlauncher/albert-plugin-docs/commit/7a8f57d6f5b17c397462455aeb382470863b8903)
- Python plugins · [Asynchronous plugin initialization](https://github.com/albertlauncher/albert-plugin-python/commit/088f1d70bf9aa12ed0fb2ca91f1778ea21e59e91)
🐛 Fixes
- [No tray icon on xdg platforms](https://github.com/albertlauncher/albert/commit/3fa27f28e9fafeb2d42cd4534e0ffc308f58dde2)
- [Taborder in settingswidget](https://github.com/albertlauncher/albert/commit/ce97740fb1169aa1219ac91883e1d9e71a6dc98f)
- _QueryResults_ · [Proper tr context](https://github.com/albertlauncher/albert/commit/f804585446d4649854d98990a5d0847fd0e68378)
- _OAuth_ · [Do not silently fail on incorrect credentials](https://github.com/albertlauncher/albert/commit/8c006a12ea2a08152d810f5f6f67d7b41e4514af)
- [Prevent segfaults on plugin unload while window is visible](https://github.com/albertlauncher/albert/commit/18a26799940a40f286fbeb614271ecd26dc36869)
- _GlobalQuery_ · [Threading bugs](https://github.com/albertlauncher/albert/commit/f544e5cf7e843f8eda88e9a9301e5f61669aa3a2)
- [Replace leftover bool ref stop token](https://github.com/albertlauncher/albert/commit/4bbea02408b351589d3e69f531e8496b34bbda27)
- [Add icon.h to header file set](https://github.com/albertlauncher/albert/commit/9809bceac37ee2d9cf395693ffdcc2e058fadd2a)
- + 31 more
📝 Documentation
- [Structure by topics](https://github.com/albertlauncher/albert/commit/3bfa9e54e9a61f7919c8acb11ea216284d137c99)
- [Update doxygen topic structure](https://github.com/albertlauncher/albert/commit/253ea212574c7af987d92a29ce6091dc1e714887)
- [Update query handlers documentation](https://github.com/albertlauncher/albert/commit/f659a9d8794b668d31af4836d4d85adbdefba98f)
- [Update ALBERT_PLUGIN macro documentation](https://github.com/albertlauncher/albert/commit/d5af25621a7baa109fe9d0ae6fc3cdae873f623a)
- [Fix maintainers field documentation](https://github.com/albertlauncher/albert/commit/8f50b79454c00616286375f807920c40ac12c30b)
- [Document how to handle plugin initialization failure](https://github.com/albertlauncher/albert/commit/7aa0ce98bb14847ff971da1a9115dbf514190965)
- [Add a note on GCC-13 generator bugs](https://github.com/albertlauncher/albert/commit/99d17cd66192e4aa4383b01c6aca5871590a79fe)
- _PluginLoader_ · [Move contract into class description](https://github.com/albertlauncher/albert/commit/76b66c5f98d7bcc6da5105a51d60c8254802a258)
- + 2 more
🧪 Testing
- Files · [Fix tests according to d033020b89f0306eaf09fdf95070e1697ed7c633](https://github.com/albertlauncher/albert-plugin-files/commit/bc2c0952539ba20a2e4f8928acdca3fff3a41cf3)
- Python plugins · [Update tests](https://github.com/albertlauncher/albert-plugin-python/commit/f398366603716435c8616fc306095f2a3bf4a4bb)
📦 Miscellaneous Tasks
- [Mute `-Wshadow` warnings](https://github.com/albertlauncher/albert/commit/b87a5caeb6330e291d5144153ef4c6c585d10da7)
- _docker_ · [Build test images with Clang and Ninja](https://github.com/albertlauncher/albert/commit/0abd56ab422929510c50ea1158c6926b0b856ae8)
- _test_ · [Mute `-Wunused-result` warnings](https://github.com/albertlauncher/albert/commit/c1e0e20ab6692ee0f227e29a9a72385bd4977255)
- _changelog_ · [Group plugin commits if >1](https://github.com/albertlauncher/albert/commit/0c29ad3f38bd09bd424280fc5031c20afe8b08e1)
- [Rename plugin _path_ to _commandline_](https://github.com/albertlauncher/albert/commit/f8920b70fd495637e7db50a1c2935e320e03959a)
- [Mute clazy-fully-qualified-moc-types](https://github.com/albertlauncher/albert/commit/3d251d1227d4884b3c834a0d592f2ac5061cf3d6)
- [Print theme search paths on start](https://github.com/albertlauncher/albert/commit/fc3461901b7e1560b08d8cbabc56d2702be91d83)
- _RateLimiter_ · [Async acquire support](https://github.com/albertlauncher/albert/commit/f897a3f07a2375146f9727a253beb716a92673a4)
- + 236 more
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v33.0.0...v33.0.1
📋 ⚙️ Core changes
- _triggersqueryhandler_ · [Add fuzzy support](https://github.com/albertlauncher/albert/commit/ccfd481ad4c7d4b5e933151ddb13e903da247279)
- _tray_ · [Install the app tray icon on xdg](https://github.com/albertlauncher/albert/commit/ef29635c656ee00e5eef87d56449a379059e9719)
- [Built-in fallback theme support](https://github.com/albertlauncher/albert/commit/164aee0b066fb0f735e5fd595199429c5ecdae25)
- _PluginQueryHandler_ · [Add 'Load'/'Reload' actions](https://github.com/albertlauncher/albert/commit/197c840aa9643c8308d9a52968e27c6f0550a420)
- [User customizable PATH](https://github.com/albertlauncher/albert/commit/3519ff1eadfc2ad16048aaf12dbca2197158522a)
- _triggersqueryhandler_ · [Properly sync triggers](https://github.com/albertlauncher/albert/commit/3c1cc80c73f96d408f7b2869c9fd2f43e70316e1)
- _rankitem_ · [Correct inverted text length in operator<](https://github.com/albertlauncher/albert/commit/e098a5d34c56f5cbea706a0f152de9d3cf84cbc2)
- _globalquery_ · [Remove leftover explicit comparator](https://github.com/albertlauncher/albert/commit/b764ab77b1322c7854c70074c69b9a6fe4ce2b9c)
- + 18 more
📋 🧩 Plugin changes
- Albert · [Use paths of app data locations as input action text](https://github.com/albertlauncher/albert-plugin-application/commit/c2421a31ac0b7960c87f645e308b7a5624782c91)
- Applications · [Add sakura terminal support](https://github.com/albertlauncher/albert-plugin-applications/commit/6815974159374df1f52722ae9922d31a0b75dd5f)
- Bluetooth · [Linux/BlueZ support](https://github.com/albertlauncher/albert-plugin-bluetooth/commit/6f0115cd0cf1207ac86951f9b1380b9a4afd551a)
- Bluetooth · [Device icon based on class of device](https://github.com/albertlauncher/albert-plugin-bluetooth/commit/3624ed1db206292cd86c72358d6af5ef144eb85f)
- Clipboard · [Add fuzzy support](https://github.com/albertlauncher/albert-plugin-clipboard/commit/1f634cb14d1c84fbdb56057aaa2086f2be10233a)
- Documentation · _icon_ · [Pixel density dependent icon](https://github.com/albertlauncher/albert-plugin-docs/commit/28f8974920a41b9ed87cb71b297aa15401cc3b26)
- Jetbrains projects · [Handle multiple config dir prefixes (#4)](https://github.com/albertlauncher/albert-plugin-python-jetbrains-projects/commit/4fe02cffc930d9210e28c9cf33d2601b3aca3272)
- Jetbrains projects · [Update icons to 2025 (#5)](https://github.com/albertlauncher/albert-plugin-python-jetbrains-projects/commit/92601d1bc7fa2f6111dae2132d9dee21aa805426)
- + 124 more
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.32.1...v32.1.0
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.31.1...v0.32.0
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.31.0...v0.31.1
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.30.1...v0.31.0
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.30.0...v0.30.1
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.29.4...v0.30.0
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.29.3...v0.29.4
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.29.2...v0.29.3
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.29.1...v0.29.2
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.29.0...v0.29.1
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.28.2...v0.29.0
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.28.1...v0.28.2
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.28.0...v0.28.1
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.27.8...v0.28.0
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.27.7...v0.27.8
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.27.6...v0.27.7
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.27.5...v0.27.6
**Full Changelog**: https://github.com/albertlauncher/albert/compare/v0.27.4...v0.27.5