Skip to content

Modern customizable global menu with unlimiting plugin system written in Rust

License

Notifications You must be signed in to change notification settings

fxdave/vonal-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vonal global search

Vonal is a modern alternative to dmenu, rofi, albert etc... Ideal for tiling window managers.

Currently only X11 is supported. (If you need Wayland support, please tell me.)

Installation & Usage

1. Installation

Build from source (Rust is required):

  • cargo build --release

Alternatively: Install from binary on Archlinux:

  • yay vonal-bin

Alternatively: install from binary for other distros:

2. Usage

  • Start the daemon: ./target/release/vonal
  • Show the window: ./target/release/vonalc toggle

(They have to be called from the same directory.)

Optionally: If you use bspwm, an example rule to keep Vonal floating:

  • bspc rule -a vonal state=floating border=off

Plugins

launcher_plugin

Preview

A fuzzy search for .desktop files and executables in $PATH, supporting sub-actions

  • trigger: anything
  • shortcuts:
    • Up, Down, Left, Right, Enter
  • example commands:
    • chr finds chromium
    • chr github.com finds chromium and on enter, it opens it with github.com
    • , is for settings like reload application cache

math_plugin

Preview

A python proxy

  • trigger: =
  • example commands:
    • = sin(radians(90)) prints 1.0
    • = [i for i in range(1000) if i %99 == 0] shows the numbers between 0 and 999 that are dividable by 99

pass_plugin

Preview

A configurable password manager plugin. It works with every password managers, however, the default config is only for GNU pass. This is not meant to be used from the search menu although you can reach it that way as well.

  • suggested binding: super+p vonalc set_query "pass " show
  • trigger: pass
  • example commands:
    • pass fa list every account name containing "fa"
    • pass add email generates a password named "email"
    • pass add email 123456 adds new password named "email" with password "123456"
    • pass delete em search for every password name containing em with offering a delete option for each

Warning: On update you have to manually enable new plugins.

CLI

Synopsis: vonalc commandA arg1 arg2 commandB arg1 ...

  • restart: restarts the vonal daemon
  • show: show the window
  • hide: hide the window
  • toggle: show/hide the window
  • set_query "something": writes the word "something" to the searchbar.

Configuration

The configuration file is created on the fly to ~/.config/vonal/config.toml. You can see every existing config options, there.

Contribution

Please let me know if you would like to use it. It would motivate me to work on the project. Open any issues about new ideas. Tell me what plugins would you want to see.

Develop your own plugins, it's easy! I put serious effort to make plugins both unlimited and simple.

The GUI is done with egui, which is tailored for quick progress.

An example plugin:

struct SayHiPlugin {}

impl Plugin for SayHiPlugin {
    fn search(
        &mut self,
        query: &mut String,
        ui: &mut Ui,
        _window: &GlutinWindowContext,
    ) -> PluginFlowControl {
      if query.starts_with("hello") {
        ui.label("Hi!");

        return PluginFlowControl::Break
      }


      PluginFlowControl::Continue
    }
}