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.
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
- Bluetooth: basic bluetooth management
# Clone the repository
git clone https://github.com/abenz1267/walker.git
cd walker
# Build with Cargo
cargo build --release
# Run Walker
./target/release/walker
- GTK4 (version 4.6+)
- gtk4-layer-shell
- Protocol Buffers compiler
- cairo
- poppler-glib
- make sure elephant is running before starting Walker
Add walker and elephant to the inputs of your configs flake.nix
and set walker to follow elephant
elephant.url = "github:abenz1267/elephant";
walker = {
url = "github:abenz1267/walker";
inputs.elephant.follows = "elephant";
};
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.
imports = [inputs.walker.homeManagerModules.default];
programs.walker.enable = true;
Option B (NixOS Module): Import the nixos module in your NixOS config and enable walker
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.<system>.default
to your system packages or home-manager packages. replace <system>
with your system architecture. Note: This option doesn't support configuration using nix.
home.packages = [inputs.walker.packages.<system>.default];
environment.systemPackages = [inputs.walker.packages.<system>.default];
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" = " <!-- xml --> ";
"item_calc" = " <!-- xml --> ";
# 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.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="];
};
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:
walker --gapplication-service
If the service is running, you can either open Walker with:
walker
or for an even faster launch make a socket call, f.e. with openbsd-netcat
:
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.
The following modifier keys are valid: ctrl
, alt
, shift
, super
.
To get a full list of possible key values, look here: GDK key-values.
F.e. pub const GDK_KEY_semicolon: c_int = 59;
means that ctrl semicolon
would be a valid keybind.
Configuration should be done in ~/.config/walker
.
Check out the default config.
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 to checkout how to write *.xml
files for GTK4.
You can set the default theme in your config.toml
f.e. theme = "yours"
.
Please do not make PRs to fix single typos. Fix all or nothing.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.