docs: include project status in the README

This commit is contained in:
NotAShelf
2024-10-13 23:48:48 +03:00
parent 4892cddc99
commit bdbf377970

135
README.md
View File

@@ -2,7 +2,19 @@
A wayland native krunner-like runner, made with customizability in mind. A wayland native krunner-like runner, made with customizability in mind.
# Features <!-- Maintenance Status Notice -->
[@notashelf]: https://github.com/notashelf
> [!NOTE]
> Anyrun is currently in maintenance mode due to the original maintainer taking
> an extended break. For the time being [@notashelf] will be reviewing and
> merging critical bug-fixes or must-have features in the form of pull requests.
> This is _hopefully_ not a permanent status.
<!-- End of Maintenance Status Notice-->
## Features
- Style customizability with GTK+ CSS - Style customizability with GTK+ CSS
- More info in [Styling](#Styling) - More info in [Styling](#Styling)
@@ -19,9 +31,9 @@ A wayland native krunner-like runner, made with customizability in mind.
- GTK layer shell for overlaying the window - GTK layer shell for overlaying the window
- data-control for managing the clipboard - data-control for managing the clipboard
# Usage ## Usage
## Dependencies ### Dependencies
Anyrun mainly depends various GTK libraries, and rust of course for building the Anyrun mainly depends various GTK libraries, and rust of course for building the
project. Rust you can get with [rustup](https://rustup.rs). The rest are project. Rust you can get with [rustup](https://rustup.rs). The rest are
@@ -41,24 +53,28 @@ build & run it:
### Nix ### Nix
You can use the flake: You can use the provided flake:
```nix ```nix
# flake.nix # flake.nix
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
anyrun.url = "github:anyrun-org/anyrun"; anyrun = {
anyrun.inputs.nixpkgs.follows = "nixpkgs"; url = "github:anyrun-org/anyrun";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, anyrun }: let outputs = { self, nixpkgs, anyrun }: {
in { nixosConfigurations."<your_hostname>" = nixpkgs.lib.nixosSystem {
nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem {
# ... # ...
modules = [
environment.systemPackages = [ anyrun.packages.${system}.anyrun ]; # Add Anyrun to environment.systemPackages to make it available to
# all system users. You may prefer `users.users.<your_username>.packages`
# to install it for a specified user only.
{environment.systemPackages = [ anyrun.packages.${system}.anyrun ];}
];
# ... # ...
}; };
}; };
@@ -67,35 +83,31 @@ You can use the flake:
The flake provides multiple packages: The flake provides multiple packages:
- anyrun (default) - just the anyrun binary - **anyrun (default)** - the Anyrun binary, without plugins
- anyrun-with-all-plugins - anyrun and all builtin plugins - **anyrun-with-all-plugins** - Anyrun and all builtin plugins
- applications - the applications plugin - **applications** - the applications plugin
- dictionary - the dictionary plugin - **dictionary** - the dictionary plugin
- kidex - the kidex plugin - **kidex** - the kidex plugin
- randr - the randr plugin - **randr** - the randr plugin
- rink - the rink plugin - **rink** - the rink plugin
- shell - the shell plugin - **shell** - the shell plugin
- stdin - the stdin plugin - **stdin** - the stdin plugin
- symbols - the symbols plugin - **symbols** - the symbols plugin
- translate - the translate plugin - **translate** - the translate plugin
- websearch - the websearch plugin - **websearch** - the websearch plugin
#### Home-Manager module #### Home-Manager module
The anyrun flake exposes a Home-Manager module as `homeManagerModules.default`. The Anyrun flake exposes a Home-Manager module as `homeManagerModules.default`
You use it in your system like this: which you can use to install and configure Anyrun in your system with ease.
You may use it in your system like this:
```nix ```nix
{ {
programs.anyrun = { programs.anyrun = {
enable = true; enable = true;
config = { config = {
plugins = [
# An array of all the plugins you want, which either can be paths to the .so files, or their packages
inputs.anyrun.packages.${pkgs.system}.applications
./some_plugin.so
"${inputs.anyrun.packages.${pkgs.system}.anyrun-with-all-plugins}/lib/kidex"
];
x = { fraction = 0.5; }; x = { fraction = 0.5; };
y = { fraction = 0.3; }; y = { fraction = 0.3; };
width = { fraction = 0.3; }; width = { fraction = 0.3; };
@@ -106,8 +118,18 @@ You use it in your system like this:
closeOnClick = false; closeOnClick = false;
showResultsImmediately = false; showResultsImmediately = false;
maxEntries = null; maxEntries = null;
plugins = [
# An array of all the plugins you want, which either can be paths to the .so files, or their packages
inputs.anyrun.packages.${pkgs.system}.applications
./some_plugin.so
"${inputs.anyrun.packages.${pkgs.system}.anyrun-with-all-plugins}/lib/kidex"
];
}; };
extraCss = ''
# Inline comments are supported for language injection into
# multi-line strings with Treesitter! (Depends on your editor)
extraCss = /*css */ ''
.some_class { .some_class {
background: red; background: red;
} }
@@ -124,12 +146,12 @@ You use it in your system like this:
} }
``` ```
You might also want to use the binary cache to avoid building locally. Anyrun packages are built and cached automatically. To avoid unnecessary
recompilations, you may use the binary cache.
```nix ```nix
nix.settings = { nix.settings = {
builders-use-substitutes = true; builders-use-substitutes = true;
# extra substituters to add
extra-substituters = [ extra-substituters = [
"https://anyrun.cachix.org" "https://anyrun.cachix.org"
]; ];
@@ -140,19 +162,32 @@ nix.settings = {
}; };
``` ```
> [!WARNING]
> While using the Anyrun flake, overriding the `nixpkgs` input for Anyrun will
> cause cache hits, i.e., you will have to build from source every time. To use
> the cache, do _not_ override the Nixpkgs input.
### Manual installation ### Manual installation
Make sure all of the dependencies are installed, and then run the following Make sure all of the dependencies are installed, and then run the following
commands in order: commands in order:
```sh ```bash
git clone https://github.com/Kirottu/anyrun.git # Clone the repository # Clone the repository and move to the cloned location
cd anyrun # Change the active directory to it git clone https://github.com/Kirottu/anyrun.git && cd anyrun
cargo build --release # Build all the packages
cargo install --path anyrun/ # Install the anyrun binary # Build all packages, and install the Anyrun binary
mkdir -p ~/.config/anyrun/plugins # Create the config directory and the plugins subdirectory cargo build --release
cp target/release/*.so ~/.config/anyrun/plugins # Copy all of the built plugins to the correct directory cargo install --path anyrun/
cp examples/config.ron ~/.config/anyrun/config.ron # Copy the default config file
# Create the config directory and the plugins subdirectory
mkdir -p ~/.config/anyrun/plugins
# Copy all of the built plugins to the correct directory
cp target/release/*.so ~/.config/anyrun/plugins
# Copy the default config file
cp examples/config.ron ~/.config/anyrun/config.ron
``` ```
## Plugins ## Plugins
@@ -176,7 +211,7 @@ list of plugins in this repository is as follows:
- Rotate and resize; quickly change monitor configurations on the fly. - Rotate and resize; quickly change monitor configurations on the fly.
- TODO: Only supports Hyprland, needs support for other compositors. - TODO: Only supports Hyprland, needs support for other compositors.
- [Stdin](plugins/stdin/README.md) - [Stdin](plugins/stdin/README.md)
- Turn Anyrun into a dmenu like fuzzy selector. - Turn Anyrun into a dmenu-like fuzzy selector.
- Should generally be used exclusively with the `--plugins` argument. - Should generally be used exclusively with the `--plugins` argument.
- [Dictionary](plugins/dictionary/README.md) - [Dictionary](plugins/dictionary/README.md)
- Look up definitions for words - Look up definitions for words
@@ -189,12 +224,12 @@ The default configuration directory is `$HOME/.config/anyrun` the structure of
the config directory is as follows and should be respected by plugins: the config directory is as follows and should be respected by plugins:
``` ```
- anyrun - anyrun/
- plugins - plugins/
<plugin dynamic libraries> - <plugin dynamic libraries>
config.ron - config.ron
style.css - style.css
<any plugin specific config files> - <any plugin specific config files>
``` ```
The [default config file](examples/config.ron) contains the default values, and The [default config file](examples/config.ron) contains the default values, and