examples | ||
nix | ||
other-plugins | ||
plugin-desktop | ||
plugin-network | ||
plugin-run | ||
plugin-window | ||
rmenu | ||
rmenu-plugin | ||
screenshots | ||
themes | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
Makefile | ||
README.md | ||
rust-toolchain.toml |
RMenu
Another customizable Application-Launcher written in Rust
Features
- Blazingly Fast 🔥
- Simple and Easy to Use
- Customizable (Configuration and CSS-Styling)
- Plugin Support
- Dmenu-Like Stdin Menu Generation
Installation
Nix
RMenu now has Nix support thanks to @LordGrimmauld!
Try it on nix directly via
nix run github:imgurbot12/rmenu -- -r drun
Rmenu v1.2.0 is now in nix unstable! Install it via:
sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable unstable
sudo nix-channel --update
sudo nix-env -iA unstable.rmenu
Other Platforms:
Install Dependencies (Ubuntu)
sudo apt install pkg-config libglib2.0-dev libghc-gi-gdk-dev libsoup-3.0-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev libnm-dev
Compile and Install Binaries/Config-Files
$ make install
Usage
View all available options with the built-in help:
$ rmenu --help
Plugins
RMenu Comes with a few default plugins.
Name | Description |
---|---|
run | Execute a program in $PATH |
drun | Run a Configured Free-Desktop Application |
audio | Select and Set-Default PulseAudio Sink using pactl |
network | Wi-Fi Login/Connection Tool using Network-Manager |
window | Simple Window Switcher (Currently Only Support Sway) |
powermenu | Simple Power/Logout Tool (Currently Only Supports Sway) |
Run a plugin by passing the -r
flag like one of the following:
$ rmenu -r run
$ rmenu -r drun
$ rmenu -r audio
Or even run plugins in combination if you'd like:
$ rmenu -r run -r drun
Direct Input
Custom Menus can also be passed via /dev/stdin
or as an input file. The schema
follows a standard as defined in rmenu-plugin
$ ./examples/rmenu-build.sh > input.json
$ rmenu -i input.json
When neither a plugin nor an input are specified, rmenu defaults to reading from stdin.
$ ./examples/rmenu-build.sh | rmenu
Supported Formats
RMenu has two supported input formats: dmenu-like and JSON. JSON is the default
provided by rmenu and allows for rich configuration and controls for dynamically
generated menus. You can switch between supported formats with -f
:
$ printf 'foo\nbar\nbaz' | rmenu -f dmenu
Check the examples folder for more examples.
Configuration
Customize RMenu Behavior and Appearal in a single config
Customize the entire app's appearance with CSS. A few
Example Themes are available as reference. To try them out use:
rmenu --css <my-css-theme>
or move the css file to
$HOME/.config/rmenu/style.css
Scripting
RMenu plugins and imports communicate using JSON messages defined in
rmenu-plugin
. Writing JSON in shell is painful, so rmenu provides another
cli-tool to help build messages quickly and easily while still retaining the
flexibility of JSON.
After Installing. Use the following command, and look at other-plugins for example uses.
$ rmenu-build --help