A Linux multi application launcher written in Rust that allows you to start groups of applications with a TUI (Terminal User Interface).
Launcher is a tool that facilitates the startup of multiple applications organized into groups. Ideal for automating your work environment setup at system boot, allowing you to choose which set of applications to launch based on the task you're about to perform.
- Intuitive TUI interface using Ratatui
- JSON-based configuration
- Multiple applications per group execution
- Support for simple and complex commands (with shell)
- Applications run independently (don't die when launcher closes)
- Keyboard navigation (vim-style and arrows)
cargo build --releasesudo install -Dm755 target/release/launcher /usr/local/bin/launcherThe launcher searches for the configuration file in the following order:
./launcher.json(current directory)~/.config/launcher/config.json/etc/launcher/config.json
{
"groups": [
{
"name": "Development",
"apps": [
{
"name": "VSCode",
"command": "code",
"args": []
},
{
"name": "Terminal",
"command": "kitty",
"args": []
}
]
},
{
"name": "Docker Services",
"apps": [
{
"name": "Start Docker Containers",
"command": "sh",
"args": ["-c", "docker start $(docker ps -aq)"],
"use_shell": true
}
]
}
]
}name: Descriptive name of the applicationcommand: Command to executeargs: Array of arguments for the command (optional)use_shell: Boolean indicating whether to usesh -cto execute complex commands (optional)
Create the configuration directory:
mkdir -p ~/.config/launcher/Create the configuration file:
nano ~/.config/launcher/config.jsonRun the launcher:
launcher- Up/Down arrows or
k/j: Navigate between groups - Enter: Select and execute group
qor Esc: Exit without executing
Create a .desktop file in ~/.config/autostart/:
nano ~/.config/autostart/launcher.desktopFile content:
[Desktop Entry]
Type=Application
Exec=kitty --class=launcher-term --title="Launcher" -e launcher
Name=Launcher
Comment=Auto start Launcher in Kitty
X-KDE-autostart-after=panelNote: Adjust the Exec command according to your preferred terminal emulator.
- Rust 1.70 or higher
- Linux/Unix operating system
- ratatui: TUI framework
- crossterm: Terminal handling
- serde: Serialization/deserialization
- serde_json: JSON handling
Open source personal project.