free-launch 0.2.1

A simple fuzzy launcher written in Rust.
Documentation

Free Launch

A fuzzy launcher written in Rust to replace Ulauncher.

Because there is no such thing as a free launch.

Why Build This

NixOS warned me of multiple security issues in libsoup-2.74.3 which was a dependency for Ulauncher.

Other Rust-based launchers don't meet my requirements:

  • They are not being actively developed.
  • They don't run on my setup.

Versions

Version v0.1.0 was written with GTK bindings. The code is still available under the gtk_based branch.

Managing additional state was proving to be overly complicated in GTK so the current version was rewritten in egui/eframe which is proving far easier to work with. Additionally, the app seems to launch faster and do not miss the first keystroke anymore, even when typing very quickly.

Launchers in C and Other Languages

This is far from an exhaustive list. I'm mostly focusing on Rust based launchers for Linux.

  • Ulauncher: The best option I had found, but unfortunately it depends on libsoup-2.74.3 which is marked as insecure in nixpkgs.
  • albert: I was actually using this first but it had a few issues. Can't remember what they were at the moment but I left it for Ulauncher.
  • rofi: Not a big fan of the interface on this one, even though it's very popular.
  • Krunner: This looks decent, worth trying for those on KDE. Actually, it should be usable on NixOS even without running KDE as the window manager.

Rust Based Launchers

  • Loungy: This looks really excellent but: "Loungy is currently not in active development. As a new dad, my development resources have dwindled."
  • gauntlet: Recommended by Matthias Grandl, creator of Loungy but: "Web-first cross-platform application launcher with React-based plugins". No thank you.
  • kickoff: Looks great but panics with: layer shell is not available: NotPresent
  • elbey: Incomplete, but worth keeping an eye on.
  • raffi: Fully config based. Does not auto-discover apps.
  • jolly: Looks good but panics with: Failed to initialize any backend! Wayland status: NoWaylandLib
  • dlauncher: Based on Ulauncher which sounds good. Just need to get it to compile...
  • sklauncher: Not bad, but I don't love the interface, even though it reminds me of fzf/skim/picleo which is kinda awesome.
  • fuzzle: Looks good but is not on crates.io.

More Rust based launchers can be found here for those that want to keep digging: ‘fuzzy launcher’ search on Lib.rs.

Features

  • Written entirely in Rust
  • Show all *.desktop files and allow launching them
  • Show all executables in path and allow launching them
  • Allow launching of shell aliases and functions?
  • Fast launch, but could always be faster...
  • Load items in separate thread
  • Daemon mode with visibility switch command like Ulauncher for instantaneous invocation
  • System commands: lock screen, sleep, hibernate, reboot, shutdown
  • Interactive help screen
  • Run or raise functionality
  • Custom commands via a config file
  • Browser search templates according to config
  • Synonyms/keywords from config
  • Frecency based sorting
  • Show running apps
  • Show running windows
  • Browser tabs
  • Path navigation with autocomplete
  • Actions besides launch via Tab
  • Integration with Symplasma