abenz1267 / walker

Application launcher similar to Rofi etc. . Wayland native.
MIT License
263 stars 12 forks source link
golang runner wayland

Walker - Application launcher

Walker is a highly extendable application launcher that doesn't hold back on features and usability. Fast. Unclutters your brain. Improves your workflow.

Screenshot

Features

Builtin Modules

Themes

Requirements

Installation

arch:
yay -S walker-bin

// or to build from source
yay -S walker

Building from source

Building can take quite a while, be patient

Make sure you have the following dependencies installed:

git clone https://github.com/abenz1267/walker /tmp/walker
cd /tmp/walker
go build -x // the '-x' is for debug output
sudo cp walker /usr/bin/

Without these you won't be able to build.

Install using Nix You have two options of installing walker using Nix. 1. Using the package exposed by this flake 1. Add to your flake `inputs.walker.url = "github:abenz1267/walker";` 2. Add `inputs.walker.packages..default` to `environment.systemPackages` or `home.packages` 2. Using the home-manager module exposed by this flake: 1. Add to your flake `inputs.walker.url = "github:abenz1267/walker";` 2. Add `imports = [inputs.walker.homeManagerModules.default];` into your home-manager config 3. Configure walker using: ```nix programs.walker = { enable = true; runAsService = true; # All options from the config.json can be used here. config = { search.placeholder = "Example"; ui.fullscreen = true; list = { height = 200; }; websearch.prefix = "?"; switcher.prefix = "/"; }; # If this is not set the default styling is used. style = '' * { color: #dcd7ba; } ''; }; ``` Additionally, there is a binary caches at `https://walker.cachix.org` and `https://walker-git.cachix.org` which you can use with the following: ```nix nix.settings = { substituters = ["https://walker.cachix.org"]; trusted-public-keys = ["walker.cachix.org-1:fG8q+uAaMqhsMxWjwvk0IMb4mFPFLqHjuvfwQxE4oJM="]; }; ``` ```nix nix.settings = { substituters = ["https://walker-git.cachix.org"]; trusted-public-keys = ["walker-git.cachix.org-1:vmC0ocfPWh0S/vRAQGtChuiZBTAe4wiKDeyyXM0/7pM="]; }; ```

Running as a service

This depends on your system. You simply need to autostart Walker with walker --gapplication-service and it will run in the background. Then just run walker to bring it up.

Example for Hyprland:

exec-once=walker --gapplication-service

Config & Style

Check the wiki

Start Walker with explicit modules

You can start walker with explicit modules by using the --modules flag. F.e:

walker --modules applications,ssh

Will tell Walker to only use the applications and ssh module.

Styling with typeahead enabled

If you have typeahead enabled, make sure that your #search has no background, so the typeahead is readable.

Providing your own modules

If you want to extend walker with your own modules, you can do that in the config.

{
  "plugins": [
    {
      "prefix": "!",
      "name": "mymodule",
      "src": "node /path/to/myscript.js"
    }
  ]
}

See the wiki for more information.

Dynamic Styling

The window and items will have a class based on the source. Selecting an item will change the windows class to the current selections source. Using a prefix will apply that sources classes to the window.

F.e. search = !somecommand => #window.runner

class condition
#window.activation AM enabled
#spinner.visible Processing in progress
#item.<entryclass> Always

Starting as service

Start with walker --gapplication-service to start in service-mode. Calling walker normally afterwards should be rather fast.

Additional flags

Flag Description
--modules, -m Run with explicit modules
--new, -n Start new instance ignoring service
--config, -c Config file to use
--theme, -s Theme to use
--dmenu, -d Start in dmenu mode
--keepsort, -k Don't sort alphabetically
--placeholder, -p Placeholder text
--labelcolumn, -l Column to use for the label
--password, -y Launch in password mode
--forceprint, -f Forces printing input if no item is selected
--query, -q To set initial query

Keybinds

AM = Activation Mode

Key Description
Enter activate selection
Alt+Enter activate selection with alternative command. By default: run in terminal
Shift+Enter activate selection without closing
Ctrl+j (if ActivationMode is disabled), Down, Tab next entry
Ctrl+k (if ActivationMode is disabled), Up, LEFT_TAB (shift+tab?) previous entry
Escape close
Ctrl + Label Activate item by label
Ctrl + Shift + Label Activate item by label without closing
Shift+Backspace delete entry from history

Activation Mode

Activation-Mode can be triggered by holding LCtrl ( or LAlt). The window will get an additional class activation you can use for styling. While activated, you can run items by pressing their respective label. This only works for the top 8 items.

FAQ

Newly installed or removed applications aren't shown / are still shown

Make sure to clean the applications cache by either running the "Clear Applications Cache" command from within Walker (using the commands module) or by deleting the applications.json file in $HOME/.cache/walker/.

Additionally you can diasble the cache completely by setting

  "applications": {
    "cache": false
  },

in your config.