j0ru / kickoff

Minimalistic program launcher
GNU General Public License v3.0
409 stars 11 forks source link
launcher rust wayland

logo

Kickoff is heavily inspired by rofi, but not without changes made. Like many programs, kickoff was born from an itch that no existing program seemed to relieve and my desire to learn a lower-level programming language.

AUR version Crates Version

screenshot

Install

Arch Linux

Use your favorite AUR manager, i.e. blinky:

blinky -S kickoff

Cargo

cargo install kickoff

Features

How does it search

All programs found in $PATH are included in the search results. This can include your additions to $PATH as long as they are done before you launch kickoff or the program that launches kickoff (i.e. your window manager)

This list is then combined with your previous searches and sorted by the amount of usage and how well it fits the query.

Configuration

A default configuration will be placed at $XDG_CONFIG_HOME/kickoff/config.toml or can be found here.

Script integration

If you want to adapt kickoff for your use case, i.e. selecting an entry from a password manager, you can use one of the --from-* options. If any of those options is defined, the default behavior of reading from $PATH is disabled as well as saving the history. The latter can easily be reactivated by setting --history <some path>.

Option Argument Usage
--from-stdin None Reads a list of items from stdin
--from-file Path Reads a list of items from a file
--from-path None Walks all $PATH directories and adds all executables as selectable items
--stdout None Prints the selected result to stdout instead of trying to execute it

These can also be combined, for example, if you want to add custom commands to your usual list of programs.

echo 'Big kitty = kitty -o "font_size=20"' | kickoff --from-stdin --from-path --history ".cache/kickoff/custom_history.csv"

Input Format

Reading from file or stdin follows a very simple format, spaces around the equals sign can be dropped:

Small kitty = kitty -o "font_size=5"
Big kitty = kitty -o "font_size=20"
^=======^   ^=====================^
    |                  |
Displayed Name         |
                       |
              Executed Command

Magic Words

When reading from a file or stdin, you can use magic words to influence the generated items. Currently, there is only one, but more might be added someday:

Word Argument Usage Default
%base_score number Sets the base score for all following entries, can be overwritten later 0

In this example, Small kitty has a base score of 0, while the others have a score of 5.

Small kitty = kitty -o "font_size=5"
%base_score = 5
Big kitty = kitty -o "font_size=20"
Medium kitty = kitty -o "font_size=12"