工具介绍
具有众多功能的多用途启动程序。高度可定制且速度快。
# 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/)
## 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
- **Niri Actions**: list niri actions
- **Niri Sessions**: create stored sets of workspaces/apps
- **Bitwarden/1Password**: access your passwords
- **Wireplumber**: handle sound input/output
- **Snippets**: access text-snippets
- **Windows**: list and focus opened windows
## 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
```
…
```
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.