https://github.com/abenz1267/walker
Multi-Purpose Launcher with a lot of features. Highly Customizable and fast.
https://github.com/abenz1267/walker
runner rust wayland
Last synced: 25 days ago
JSON representation
Multi-Purpose Launcher with a lot of features. Highly Customizable and fast.
- Host: GitHub
- URL: https://github.com/abenz1267/walker
- Owner: abenz1267
- License: gpl-3.0
- Created: 2024-03-07T03:11:41.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2025-12-26T18:27:12.000Z (29 days ago)
- Last Synced: 2025-12-27T06:53:50.074Z (28 days ago)
- Topics: runner, rust, wayland
- Language: Rust
- Homepage:
- Size: 16.8 MB
- Stars: 2,290
- Watchers: 9
- Forks: 87
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-hyprland - walker
- awesome-repositories - abenz1267/walker - Multi-Purpose Launcher with a lot of features. Highly Customizable and fast. (Rust)
- awesome-gtk - Walker - Customizable application launcher for Wayland `#rust` `#gtk4`. (Productivity / Desktop Productivity)
README
# Walker - A Modern Application Launcher
A fast, customizable application launcher built with GTK4 and Rust, designed for Linux desktop environments. Walker provides a clean, modern interface for launching applications, running commands, performing calculations, and more.
[GitBook Documentation/Wiki](https://benz.gitbook.io/walker/)
[](https://discord.gg/mGQWBQHASt)
[](https://www.gnu.org/licenses/gpl-3.0)

## Features
The following Elephant providers are implemented by default:
- **Desktop Applications**: Launch installed GUI applications
- **Calculator**: Perform mathematical calculations with `=` prefix
- **File Browser**: Navigate and open files with `/` prefix
- **Command Runner**: Execute shell commands
- **Websearch**: Search the web with custom-defined engines
- **Clipboard History**: Access clipboard history with `:` prefix
- **Symbol Picker**: Insert special symbols with `.` prefix
- **Provider List**: Switch between providers with `;` prefix
- **Menu Integration**: Create custom menus with elephant and let walker display them
- **Dmenu**: Your good old dmenu ... with seamless menus!
- **Arch Linux Packages**: Search through available packages (official and aur), install or delete a target! List all exlusively installed packages.
- **Todo List**: create simple todo items with basic time tracking, scheduling and notifications
- **Bookmarks**: manage bookmarks, open with specified browsers, assign categories and import bookmarks from browsers
- **Bluetooth**: basic bluetooth management
## Installation
### Build from Source
```bash
# Clone the repository
git clone https://github.com/abenz1267/walker.git
cd walker
# Build with Cargo
cargo build --release
# Run Walker
./target/release/walker
```
### Dependencies
- GTK4 (version 4.6+)
- gtk4-layer-shell
- Protocol Buffers compiler
- cairo
- poppler-glib
- make sure [elephant](https://github.com/abenz1267/elephant) is running before starting Walker
Install using Nix
#### 1. Add flake inputs
Add walker and elephant to the inputs of your configs `flake.nix` and set walker to follow elephant
```nix
elephant.url = "github:abenz1267/elephant";
walker = {
url = "github:abenz1267/walker";
inputs.elephant.follows = "elephant";
};
```
#### 2. Install walker
You have 3 options for installing walker.
**Option A** (Home Manager Module): Import the home-manager module to your home-manager config and enable walker.
```nix
imports = [inputs.walker.homeManagerModules.default];
programs.walker.enable = true;
```
**Option B** (NixOS Module): Import the nixos module in your NixOS config and enable walker
```nix
imports = [inputs.walker.nixosModules.default];
programs.walker.enable = true;
```
> Note: this option doesn't support the `runAsService` option; It is recommended that you launch the elephant and walker services using your desktop instead.
**Option C** (Package): Add `inputs.walker.packages..default` to your system packages or home-manager packages. replace `` with your system architecture. Note: This option doesn't support configuration using nix.
```nix
home.packages = [inputs.walker.packages..default];
```
```nix
environment.systemPackages = [inputs.walker.packages..default];
```
#### 3. Configure walker
```nix
programs.walker = {
enable = true;
runAsService = true; # Note: this option isn't supported in the NixOS module only in the home-manager module
# All options from the config.toml can be used here https://github.com/abenz1267/walker/blob/master/resources/config.toml
config = {
theme = "your theme name";
placeholders."default" = { input = "Search"; list = "Example"; };
providers.prefixes = [
{provider = "websearch"; prefix = "+";}
{provider = "providerlist"; prefix = "_";}
];
keybinds.quick_activate = ["F1" "F2" "F3"];
};
# Set `programs.walker.config.theme="your theme name"` to choose the default theme
themes = {
"your theme name" = {
# Check out the default css theme as an example https://github.com/abenz1267/walker/blob/master/resources/themes/default/style.css
style = " /* css */ ";
# Check out the default layouts for examples https://github.com/abenz1267/walker/tree/master/resources/themes/default
layouts = {
"layout" = " ";
"item_calc" = " ";
# other provider layouts
};
};
"other theme name" = {
# ...
};
# more themes
};
};
```
Optionally, there is 2 binary caches which can be used by adding the following to you config:
```nix
nix.settings = {
extra-substituters = ["https://walker.cachix.org" "https://walker-git.cachix.org"];
extra-trusted-public-keys = ["walker.cachix.org-1:fG8q+uAaMqhsMxWjwvk0IMb4mFPFLqHjuvfwQxE4oJM=" "walker-git.cachix.org-1:vmC0ocfPWh0S/vRAQGtChuiZBTAe4wiKDeyyXM0/7pM="];
};
```
## Usage
### Basic Usage
**Make sure `elephant` is running and you have providers installed. `elephant-providerlist` and f.e. `elephant-desktopapplications`.**
Launch Walker with `walker`.
In order to improve startup performance, run a Walker service with:
```bash
walker --gapplication-service
```
If the service is running, you can either open Walker with:
```bash
walker
```
or for an even faster launch make a socket call, f.e. with `openbsd-netcat`:
```bash
nc -U /run/user/1000/walker/walker.sock
```
The downside of the socket call is that it does not handle any commandline options, so it's just a faster alternative to a simple `walker` call.
## Keybinds
The following modifier keys are valid: `ctrl`, `alt`, `shift`, `super`.
To get a full list of possible key values, look here: [GDK key-values](https://github.com/gtk-rs/gtk4-rs/blob/0.9/gdk4/sys/src/lib.rs#L302).
F.e. `pub const GDK_KEY_semicolon: c_int = 59;` means that `ctrl semicolon` would be a valid keybind.
## Config
Configuration should be done in `~/.config/walker`.
Check out the [default config](https://raw.githubusercontent.com/abenz1267/walker/refs/heads/master/resources/config.toml).
## Theming
You can customize Walker's appearance by creating a custom theme. Checkout `resources/themes/default` for the default theme. Themes inherit the default theme by default, so if you just want to change the CSS, you can just create `themes/yours/style.css`.
You can customize rendering of list items for each provider individually, f.e. "item_files.xml" will define the layout for items sourced from the `files` provider.
Please refer to [the GTK4 docs](https://docs.gtk.org/gtk4/) to checkout how to write `*.xml` files for GTK4.
You can set the default theme in your `config.toml` f.e. `theme = "yours"`.
## Contributing
Please do not make PRs to fix single typos. Fix all or nothing.
## License
This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.