Notice: Due to how it was developed, it encounters issues on Window Managers (where it is originally developed for) where it gets tiled instead of appearing as a popup overlay. This is because the app uses a workaround based on what Slint 1.16.1 can offer, which is to remove the window frame, and force maximize it which visually worked on other desktop environments like GNOME or KDE but not WM like Hyprland. I'm still looking for a solution to spawn the app as a layer shell to make it work like wofi/rofi, and waybar similarly as originally intended. The repo will remain archived indefinitely.
SAS (Simple App Switcher) is a fast, minimal linux app launcher with a configurable UI powered by Slint.
git clone https://github.com/you/sas
cd sas
cargo build --release
./target/release/sasLaunch sas and start typing to filter apps. Click or press Enter on an entry to launch it.
# Bash
Usage: sas [OPTIONS]
Options:
-c, --config <FILE> Use a custom slint config file
-d, --disable-maximize Disable default force maximize
-h, --help Print help | Input | Behavior |
|---|---|
@Games skyrim |
Filter by category, then by name |
@Development |
Filter by category only |
firefox |
Plain text search |
Both @ and # are valid category sigils. Category names are case-insensitive and map to XDG Categories= values.
sas loads an external .slint file as its UI. On first run, a default config is written to $XDG_CONFIG_HOME/sas/config.slint (or typically /home/{user}/.config/sas/config.slint).
Your config must expose this interface:
struct AppEntry {
name: string,
exec: string,
icon: image,
terminal: bool,
}
component YourComponent {
in property <[AppEntry]> app-list;
callback app-selected(int);
callback search-changed(string);
callback quit();
}You typically only need to handle name and icon when configuring UI, the default config shows it. The rest is usually used by the backend.
This project was developed with significant AI assistance , with particularly heavy involvement in the desktop entry listing pipeline and the search query parser. All generated code was reviewed and integrated by the project author.
I will continue to improve the existing code and add new features as I learn more and as Slint grows further too.
MIT