Open-source project
anyrun-org/anyrun avatar
anyrun-org/anyrun

Anyrun: a Wayland runner with a separate search provider dependency

A wayland native, highly customizable runner.

1,316 stars102 forksRustGPL-3.0

At a glance

What is it?
Anyrun is a Wayland native, krunner style launcher in Rust where plugins supply results. Since 25.12.0, it also depends on anyrun-provider, which must be installed or configured by path. Styling uses GTK4 CSS.
Who is it for?
Anyrun fits someone on Wayland who wants a launcher they can restyle with CSS and extend with a few functions, since the plugin model is four functions and a.so file and the plugin list covers the things a launcher actually needs, from desktop entries and a calculator to translation and monitor switching.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Anyrun draws the window; another binary finds things

The feature list says it can do basically anything, as long as it can work with input and selection, and that is why the project is called Anyrun. The architecture is worth being explicit about, because it changed recently: since 25.12.0 Anyrun also depends on anyrun-provider to provide search results, and you must install it as well for Anyrun to function. If you would rather not put it on your PATH, the provider config option takes its location. So the runner is a window plus a keyboard and a selection list, and the searching moved to a companion process. Plugins still exist and still supply entries.

Manual installation is four cargo commands and two copies

The manual route assumes the GTK4 libraries are already installed, which the dependency list names as packages: gtk4-layer-shell, gtk4, pango, cairo, gdk-pixbuf2 and glib2, with everything else statically linked into the binary. Then it is:

bash
git clone https://github.com/anyrun-org/anyrun && cd anyrun
cargo build --release
cargo install --path anyrun/
mkdir -p ~/.config/anyrun/plugins
cp target/release/*.so ~/.config/anyrun/plugins
cp examples/config.ron ~/.config/anyrun/config.ron

The order matters and is the interesting part. The workspace build produces every plugin as a shared object, you install the runner itself separately, then you create the plugins directory and copy the .so files into it, then you copy the example configuration as your config.ron. So a plugin in Anyrun is a native library in a directory, not a manifest entry to fetch, which is what makes the four function plugin model possible.

Four functions and a shared object is the whole plugin contract

The feature list advertises easy plugin making with four functions, pointing at the Rink plugin as a simple example and to the documentation of the anyrun-plugin crate. The repository layout matches: anyrun/ is the application, anyrun-plugin/ is the crate plugins implement, anyrun-macros/ is the macro side, and plugins/ holds fourteen of them listed explicitly in the workspace members, from applications and symbols through to niri-focus. The trade-off of native plugins is straightforward. You get direct access to the process and no sandbox, and in exchange a plugin that fails to build blocks your whole configuration, and the async execution claim in the feature list is about the runner not blocking on slow plugin functions.

What the bundled plugins actually cover

The list is a good indication of whether the runner replaces your current one. Applications searches system and user desktop entries. Symbols searches unicode symbols. Rink is a calculator and unit converter and is the plugin the documentation uses as its example. Shell runs shell commands, Translate translates text quickly, Dictionary looks up word definitions, and Websearch searches the web with configurable engines: Google, Ecosia, Bing and DuckDuckGo. Kidex provides file search from a separate project. Nix-run launches graphical applications through nix run. Stdin turns Anyrun into a dmenu-like fuzzy selector and is documented as something to use mainly with the --plugins argument. Randr rotates and resizes monitors on the fly, and carries a TODO in its own README saying it only supports Hyprland and needs other compositors.

The Nvidia note is the first thing to read if it will not close

The very first note in the README is a bug report from users: if you use Nvidia and Anyrun refuses to close, you need to set GSK_RENDERER=ngl, meaning you run it as GSK_RENDERER=ngl anyrun. The README calls it a known issue, links an Nvidia forum thread about GTK4 apps hanging when attempting to exit, and warns that it is quite driver version dependent. That is worth internalising for two reasons. It is a compositor and driver interaction rather than a bug in the launcher logic, so the workaround is an environment variable you have to remember to set in your keybinding. And driver dependent means the behaviour can change under you on a driver update, which is the kind of thing that turns into a support ticket months later.

Nix is the maintained route, and the cache has a rule attached

The Nix story is the most complete part of the documentation. A package containing all the official plugins is available in nixpkgs, and the preferred way to use Home-Manager is the upstream module, which enables programs.anyrun with a config block covering placement as fractions for x, y and width, options such as hideIcons, ignoreExclusiveZones, layer set to overlay, hidePluginInfo, closeOnClick, showResultsImmediately and maxEntries, plus a plugins list referencing built libraries like libapplications.so and libsymbols.so. The module also supports extraCss as an inline string with a comment noting that inline comments are supported for language injection into multi-line strings with Treesitter, and extraConfigFiles for per-plugin .ron files written to ~/.config/anyrun. Anyrun is also buildable and cached from the repository flake, and the warning attached to it is concrete: overriding the nixpkgs input causes cache misses so you rebuild from source every time.

Against the launcher your compositor already ships

The comparison is with the runner your compositor or desktop environment already includes, and with the dmenu style fuzzy selectors. Those ship as part of something else, need no second provider binary, and work identically everywhere. Anyrun's differences are that it is Wayland native by construction rather than by compatibility shim, that its appearance is GTK4 CSS rather than a theme file, and that the result set is assembled from plugins you can replace with four functions. If your current launcher already does application search, calculation and web search and you have never touched its styling, this is a project for a weekend rather than a need. If you want a runner that looks like something you designed and does something no other launcher does, the Randr and niri-focus plugins show the direction of travel.

Editorial conclusion

Anyrun fits someone on Wayland who wants a launcher they can restyle with CSS and extend with a few functions, since the plugin model is four functions and a.so file and the plugin list covers the things a launcher actually needs, from desktop entries and a calculator to translation and monitor switching. Skip it if you cannot install anyrun-provider alongside it, since it is required for Anyrun to function, and read the Nvidia note before you debug a launcher that will not close. Before adopting, try the plugin set you actually use with stdin, which turns Anyrun into a dmenu style selector, because a runner whose results depend on plugins you did not enable is an empty window. Releases are recent, v26.6.1 from 2026-06-09, the last push was on 2026-09-29, and the licence is GPL-3.0.

Frequently asked questions

What does anyrun-provider do and is it required?

Since version 25.12.0 Anyrun depends on anyrun-provider to provide search results, and the README says to make sure it is installed as well for Anyrun to function. If you do not want it on your PATH you can point at it with the provider config option.

How do I install Anyrun without Nix?

Install the GTK4 dependencies, then clone the repository and run cargo build --release followed by cargo install --path anyrun/, create ~/.config/anyrun/plugins, copy the built .so files from target/release into it, and copy examples/config.ron to ~/.config/anyrun/config.ron.

Why does Anyrun not close on my NVIDIA system?

The README documents this as a known, driver version dependent issue and says to set GSK_RENDERER=ngl, running Anyrun as GSK_RENDERER=ngl anyrun. It links an NVIDIA forum thread about GTK4 apps hanging when attempting to exit.

Official sources

  1. anyrun-org/anyrun on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/anyrun-org-anyrun.svg)](https://hysenlabs.com/projects/anyrun-org-anyrun)

Was this useful?