| Crates.io | rlauncher |
| lib.rs | rlauncher |
| version | 0.1.0 |
| created_at | 2025-03-08 22:53:18.315476+00 |
| updated_at | 2025-03-08 22:53:18.315476+00 |
| description | dmenu_run replacement focused on startup time |
| homepage | |
| repository | https://codeberg.org/binarycat/rlauncher |
| max_upload_size | |
| id | 1584893 |
| size | 100,830 |
Unlike dmenu, which is a mulipurpuse menu utility, rlauncher is an all-in-one program launcher, with a focus on performance and minimising startup time.
Due to differences in command lookup logic, rlauncher is only designed to work on unix-like systems.
rlauncher can be built with nix flakes or directly with cargo.
nix (strongly reccomended for NixOS users): nix build git+https://codeberg.org/binarycat/rlauncher
cargo: cargo install rlauncher
rlauncher accepts the following command-line flags:
-w/--wrapper <WRAPPER_PROGRAM>: specifies a command to use when launching programs.When a program is launched, rlauncher runs sh -c with the argument
${WRAPPER_PROGRAM} '${selected_program}' & disown.
rlauncher does not accept positional arguments.
While the rlauncher window is open, there are a few keys that have behviors beyond just text editing:
rlauncher)There are two main strategies employed by rlauncher to minimize its startup time.
The most significant optimization it employs is, rather that exiting after launching a program, it instead hides its window and suspends itself with SIGSTOP. Further invokations of rlauncher will wake the existing instance with SIGCONT instead of creating their own window. This behavior has the nice side effect of making rlaucher mostly idempotent, preventing you from launching multiple instances of it.
rlauncher uses a pidfile to coordinate this behavior. The pidfile's location can be exactly set using the $RLAUNCHER_PIDFILE environment variable.
If $RLAUNCHER_PIDFILE is not set, the path follows the form:
${dir}/rlauncher-${display}.pidfile
${dir} is the first environment variable set in:
XDG_RUNTIME_DIRTEMPDIRTEMPTMPor /tmp, if none are set.
${display} is the first environment variable set in:
WAYLAND_DISPLAYDISPLAYFor this reason, when using rlauncher in a multi-user environment, you should make sure one of the following is true:
RLAUNCHER_PIDFILE is set appropriately in .xinitrc or your compositor config.XDG_RUNTIME_DIR is properly set.$PATH is iterated through in a background thread.
This significantly decreases startup latency if you have a complex $PATH
or a slow filesystem.