https://github.com/leosunmo/yofi
Define Rofi menus using YAML
https://github.com/leosunmo/yofi
go golang i3 i3wm rofi yaml
Last synced: about 1 year ago
JSON representation
Define Rofi menus using YAML
- Host: GitHub
- URL: https://github.com/leosunmo/yofi
- Owner: leosunmo
- Created: 2019-08-29T21:33:32.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-06-13T19:47:14.000Z (about 2 years ago)
- Last Synced: 2025-04-26T17:04:13.194Z (about 1 year ago)
- Topics: go, golang, i3, i3wm, rofi, yaml
- Language: Go
- Homepage:
- Size: 14.6 KB
- Stars: 8
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Yofi - YAML defined Rofi menus
Yofi is a simple project that allows you to build Rofi menus in a YAML configuration file.
## Usage
By default yofi looks for a `menu.yaml` file in the current directory, otherwise you can specify the YAML file as an argument.
For example, to run the shutdown menu, `yofi shutdown-menu.yaml`.
## YAML config options
Here's all of the options available.
```yaml
---
options:
stdout: true # Print the final selection or script output to STDOUT
app:
- name: main # Menu name
message: | # Messages displayed at the top of the Rofi box
hello there!
This is multiline!
prompt: 'Select' # Customise the prompt
items:
- name: "Shutdown" # Name of the button in Rofi
command: shutdown-script # Command to execute
confirm: Sure you want to shutdown? # A confirmation box with this text will appear when this menu item is selected
- name: "Other menu"
menu: other-menu
- name: script not in path
command: ./not-in-path.sh # If you want to execute a local script, use "./", by default it will search for the command in $PATH
- name: script doesn't exist
command: doesntexist # Graceful exit with Rofi error message at the top of the screen.
- name: i3
command: i3 # Finds the executable using $PATH
args: # Run "i3" which these arguments
- --version
- name: fail-script # This script will fail and display a Rofi style error message
command: ./fail.sh
- name: other-menu
message: This is another menu, select "no" to go back
items:
- name: "Yes"
return: "This message will return to stdout" # Customise returned string, if not set, menu "name" is returned
- name: "No"
menu: main # return to menu "main"
prompt: 'Y/N'
```
## Building
Download [Go](https://golang.org/dl/) and follow the [instructions](https://golang.org/doc/install#install)
TL;DR installing 1.12.9 on Ubuntu-like systems:
```
wget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.12.9.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.basrc # or ~/.profile
go version
```
Clone this repo and build it.
```
git clone https://github.com/leosunmo/yofi.git
cd yofi
go build .
```
Or just use `go get` to install the binary only
```
go get github.com/leosunmo/yofi
which yofi
# ~/go/bin/yofi
```