{"id":13580303,"url":"https://github.com/fxdave/vonal-rust","last_synced_at":"2025-04-11T05:44:17.930Z","repository":{"id":106473081,"uuid":"551703938","full_name":"fxdave/vonal-rust","owner":"fxdave","description":"Modern customizable global menu with unlimiting plugin system written in Rust","archived":false,"fork":false,"pushed_at":"2023-12-29T14:05:49.000Z","size":335,"stargazers_count":29,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T03:49:14.571Z","etag":null,"topics":["application-launcher","dmenu-replacement","global-menu","linux","math","password-manager","tiling-window-manager"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fxdave.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-10-14T23:29:53.000Z","updated_at":"2025-03-21T14:52:55.000Z","dependencies_parsed_at":"2023-10-16T08:19:24.574Z","dependency_job_id":"a088e0ce-d51b-4424-8a6f-83219cdc6848","html_url":"https://github.com/fxdave/vonal-rust","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxdave%2Fvonal-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxdave%2Fvonal-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxdave%2Fvonal-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxdave%2Fvonal-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fxdave","download_url":"https://codeload.github.com/fxdave/vonal-rust/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351461,"owners_count":21089271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["application-launcher","dmenu-replacement","global-menu","linux","math","password-manager","tiling-window-manager"],"created_at":"2024-08-01T15:01:49.661Z","updated_at":"2025-04-11T05:44:17.907Z","avatar_url":"https://github.com/fxdave.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Vonal global search\n\nVonal is a modern alternative to `dmenu`, `rofi`, `albert` etc...\nIdeal for tiling window managers.\n\nCurrently only X11 is supported. (If you need Wayland support, please tell me.)\n\n## Installation \u0026 Usage\n\n### 1. Installation\n\nBuild from source (Rust is required):\n - `cargo build --release`\n\n*Alternatively:* Install from binary **on Archlinux**:\n\n- `yay vonal-bin`\n\n*Alternatively:* install from binary **for other distros**:\n\n- Check releases: https://github.com/fxdave/vonal-rust/releases\n\n### 2. Usage\n\n- Start the daemon: `./target/release/vonal`\n- Show the window: `./target/release/vonalc toggle`\n\n\u003csmall\u003e(They have to be called from the same directory.)\u003c/small\u003e\n\n*Optionally*: If you use **bspwm**, an example rule to keep Vonal floating:\n- `bspc rule -a vonal state=floating border=off`\n\n# Plugins\n\n## launcher_plugin\n![Preview](./docs/app-launcher-plugin.png)\n\nA fuzzy search for .desktop files and executables in $PATH, supporting sub-actions\n  - trigger: anything\n  - shortcuts:\n    - Up, Down, Left, Right, Enter\n  - example commands:\n    - `chr` finds chromium\n    - `chr github.com` finds chromium and on enter, it opens it with `github.com`\n    - `,` is for settings like reload application cache\n## math_plugin\n![Preview](./docs/math-plugin.png)\n\nA python proxy\n  - trigger: `=`\n  - example commands:\n    - `= sin(radians(90))` prints `1.0`\n    - `= [i for i in range(1000) if i %99 == 0]` shows the numbers between 0 and 999 that are dividable by 99\n## pass_plugin\n![Preview](./docs/password-manager-plugin.png)\n\nA 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.\n  - suggested binding: `super+p` `vonalc set_query \"pass \" show`\n  - trigger: `pass`\n  - example commands:\n    - `pass fa` list every account name containing \"fa\"\n    - `pass add email` generates a password named \"email\"\n    - `pass add email 123456` adds new password named \"email\" with password \"123456\"\n    - `pass delete em` search for every password name containing `em` with offering a delete option for each \n\nWarning: On update you have to manually enable new plugins.\n\n# CLI\n\nSynopsis: `vonalc commandA arg1 arg2 commandB arg1 ...`\n\n- `restart`: restarts the vonal daemon\n- `show`: show the window\n- `hide`: hide the window\n- `toggle`: show/hide the window\n- `set_query \"something\"`: writes the word \"something\" to the searchbar.\n\n# Configuration\n\nThe configuration file is created on the fly to `~/.config/vonal/config.toml`.\nYou can see every existing config options, there.\n\n# Contribution\n\nPlease let me know if you would like to use it. It would motivate me to work on the project.\nOpen any issues about new ideas. Tell me what plugins would you want to see.\n\nDevelop your own plugins, it's easy!\nI put serious effort to make plugins both unlimited and simple.\n\nThe GUI is done with [egui](https://github.com/emilk/egui), which is tailored for quick progress.\n\nAn example plugin:\n\n```rust\n\nstruct SayHiPlugin {}\n\nimpl Plugin for SayHiPlugin {\n    fn search(\n        \u0026mut self,\n        query: \u0026mut String,\n        ui: \u0026mut Ui,\n        _window: \u0026GlutinWindowContext,\n    ) -\u003e PluginFlowControl {\n      if query.starts_with(\"hello\") {\n        ui.label(\"Hi!\");\n\n        return PluginFlowControl::Break\n      }\n\n\n      PluginFlowControl::Continue\n    }\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxdave%2Fvonal-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffxdave%2Fvonal-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxdave%2Fvonal-rust/lists"}