rmenu/README.md

159 lines
3.5 KiB
Markdown
Raw Normal View History

## RMenu
2023-01-04 09:07:57 +01:00
Another customizable Application-Launcher written in Rust
2023-08-09 03:52:41 +02:00
### Features
- Blazingly Fast 🔥
- Simple and Easy to Use
- Customizable (Configuration and CSS-Styling)
- Plugin Support
- Dmenu-Like Stdin Menu Generation
2023-08-09 03:52:41 +02:00
### Installation
2024-04-03 22:47:36 +02:00
##### Nix
RMenu now has Nix support thanks to
[@LordGrimmauld](https://github.com/LordGrimmauld)!
2024-04-03 22:47:36 +02:00
Try it on nix directly via
```bash
nix run github:imgurbot12/rmenu -- -r drun
```
2024-04-07 11:51:35 +02:00
Rmenu v1.2.0 is now in nix unstable!
Install it via:
```bash
sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable unstable
sudo nix-channel --update
sudo nix-env -iA unstable.rmenu
```
2024-04-03 22:47:36 +02:00
##### Other Platforms:
Install Dependencies (Ubuntu)
```bash
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
2023-08-09 03:52:41 +02:00
```bash
$ make install
```
### Usage
2024-04-03 22:47:36 +02:00
View all available options with the built-in help:
2023-08-09 03:52:41 +02:00
```bash
$ rmenu --help
2023-08-09 03:52:41 +02:00
```
2024-04-03 22:47:36 +02:00
##### 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:
2023-08-09 03:52:41 +02:00
```bash
$ rmenu -r run
2023-08-09 03:52:41 +02:00
$ rmenu -r drun
$ rmenu -r audio
```
Or even run plugins in combination if you'd like:
```bash
$ rmenu -r run -r drun
2023-08-09 03:52:41 +02:00
```
2024-04-03 22:47:36 +02:00
##### 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](./rmenu-plugin)
2023-08-09 03:52:41 +02:00
```bash
2024-04-03 22:47:36 +02:00
$ ./examples/rmenu-build.sh > input.json
2023-08-09 03:52:41 +02:00
$ rmenu -i input.json
```
When neither a plugin nor an input are specified, rmenu defaults to reading from
stdin.
2023-08-09 03:52:41 +02:00
```bash
2024-04-03 22:47:36 +02:00
$ ./examples/rmenu-build.sh | rmenu
2023-08-09 03:52:41 +02:00
```
2024-04-03 22:47:36 +02:00
##### 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`:
```bash
$ printf 'foo\nbar\nbaz' | rmenu -f dmenu
```
Check the [examples](./examples) folder for more examples.
2023-08-09 03:52:41 +02:00
### Configuration
Customize RMenu Behavior and Appearal in a
[single config](./rmenu/public/config.yaml)
2023-08-09 03:52:41 +02:00
Customize the entire app's appearance with CSS. A few
[Example Themes](./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`
2023-08-09 03:52:41 +02:00
### 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](./other-plugins) for example uses.
```
$ rmenu-build --help
```
2023-08-21 04:09:23 +02:00
### Example Screenshots
#### Launchpad
2023-08-21 04:09:23 +02:00
![launchpad](./screenshots/launchpad.png)
#### Nord
2023-08-21 04:09:23 +02:00
![nord](./screenshots/nord.png)
#### Dark
2023-08-21 04:09:23 +02:00
![dark](./screenshots/dark.png)
2023-08-09 03:52:41 +02:00
2023-08-21 04:09:23 +02:00
#### Solarized
2023-08-21 04:09:23 +02:00
![solzarized](./screenshots/solarized.png)
2023-08-21 04:13:12 +02:00
#### PowerMenu
2023-08-21 04:13:12 +02:00
![powermenu](./screenshots/powermenu.png)