Skip to content

Modules

Andrej Benz edited this page Feb 2, 2025 · 22 revisions

Description about specific modules will be found in their according sub-section

For all

type GeneralModule struct {
	AutoSelect         bool        `koanf:"auto_select"`
	Blacklist          []Blacklist `koanf:"blacklist"`
	Delay              int         `koanf:"delay"`
	EagerLoading       bool        `koanf:"eager_loading"`
	ExternalConfig     bool        `koanf:"external_config"`
	Hidden             bool        `koanf:"hidden"`
	History            bool        `koanf:"history"`
	HistoryBlacklist   []Blacklist `koanf:"history_blacklist"`
	Icon               string      `koanf:"icon"`
	KeepSort           bool        `koanf:"keep_sort"`
	MinChars           int         `koanf:"min_chars"`
	Name               string      `koanf:"name"`
	OnSelect           string      `koanf:"on_select"`
	OutputPlaceholder  string      `koanf:"output_placeholder"`
	Placeholder        string      `koanf:"placeholder"`
	Prefix             string      `koanf:"prefix"`
	Refresh            bool        `koanf:"refresh"`
	ShowIconWhenSingle bool        `koanf:"show_icon_when_single"`
	ShowSubWhenSingle  bool        `koanf:"show_sub_when_single"`
	SwitcherOnly       bool        `koanf:"switcher_only"`
	Theme              string      `koanf:"theme"`
	ThemeBase          []string    `koanf:"theme_base"`
	Typeahead          bool        `koanf:"typeahead"`
	Weight             int         `koanf:"weight"`
}

type Blacklist struct {
	Regexp string `mapstructure:"regexp"`
	Label  bool   `mapstructure:"label"`
	Sub    bool   `mapstructure:"sub"`
}

Applications

type Applications struct {
	GeneralModule `koanf:",squash"`
	Actions       ApplicationActions `koanf:"actions"`
	Cache         bool               `koanf:"cache"`
	ContextAware  bool               `koanf:"context_aware"`
	PrioritizeNew bool               `koanf:"prioritize_new"`
	ShowGeneric   bool               `koanf:"show_generic"`
}

type ApplicationActions struct {
	Enabled          bool `mapstructure:"enabled"`
	HideCategory     bool `mapstructure:"hide_category"`
	HideWithoutQuery bool `mapstructure:"hide_without_query"`
}

AI

type AI struct {
	GeneralModule `koanf:",squash"`
	Anthropic     Anthropic `koanf:"anthropic"`
}

type Anthropic struct {
	Prompts []AnthropicPrompt `koanf:"prompts"`
}

type AnthropicPrompt struct {
	Model            string  `koanf:"model"`
	MaxTokens        int     `koanf:"max_tokens"`
	Temperature      float64 `koanf:"temperature"`
	Label            string  `koanf:"label"`
	Prompt           string  `koanf:"prompt"`
	SingleModuleOnly bool    `koanf:"single_module_only"`
}

In order to use the AI module, you need a valid Anthropic API key set as an envar ANTHROPIC_API_KEY.

You can set various prompts in your config, f.e.:

external_config = true
switcher_only = false
system_info = ""

[[anthropic.prompts]]
model = "claude-3-5-sonnet-20241022"
temperature = 1
max_tokens = 1_000
label = "Go Dev"
prompt = "You are a seasoned Go developer. Keep your answers short and precise."

[[anthropic.prompts]]
model = "claude-3-5-sonnet-20241022"
temperature = 1
max_tokens = 1_000
label = "Java Dev"
prompt = "You are a seasoned Java developer. Keep your answers short and precise."

Upon selecting a prompt, you can simply start chatting. See keybinds on the readme.

Windows

type Windows struct {
	GeneralModule `mapstructure:",squash"`
}

Bookmarks

type Bookmarks struct {
	GeneralModule `mapstructure:",squash"`
	Groups        []BookmarkGroup `mapstructure:"groups"`
	Entries       []BookmarkEntry `mapstructure:"entries"`
}

type BookmarkGroup struct {
	Label            string          `mapstructure:"label"`
	Prefix           string          `mapstructure:"prefix"`
	IgnoreUnprefixed bool            `mapstructure:"ignore_unprefixed"`
	Entries          []BookmarkEntry `mapstructure:"entries"`
}

type BookmarkEntry struct {
	Label    string   `mapstructure:"label"`
	Url      string   `mapstructure:"url"`
	Keywords []string `mapstructure:"keywords"`
}

Clipboard

type Clipboard struct {
	GeneralModule     `koanf:",squash"`
	AvoidLineBreaks   bool   `koanf:"avoid_line_breaks"`
	ImageHeight       int    `koanf:"image_height"`
	MaxEntries        int    `koanf:"max_entries"`
	Exec              string `koanf:"exec"`
	AlwaysPutNewOnTop bool   `koanf:"always_put_new_on_top"`
}

The clipboard module will not work, if Walker isn't run as a service.

Commands

type Commands struct {
	GeneralModule `mapstructure:",squash"`
}

Custom Commands

type CustomCommands struct {
	GeneralModule `mapstructure:",squash"`
	Commands      []CustomCommand `mapstructure:"commands"`
}

type CustomCommand struct {
	Cmd               string   `koanf:"cmd"`
	CmdAlt            string   `koanf:"cmd_alt"`
	Env               []string `koanf:"env"`
	Name              string   `koanf:"name"`
	Path              string   `koanf:"path"`
	Terminal          bool     `koanf:"terminal"`
	TerminalTitleFlag string   `koanf:"terminal_title_flag"`
}

Emojis

type Emojis struct {
	GeneralModule   `koanf:",squash"`
	Exec            string `koanf:"exec"`
	ExecAlt         string `koanf:"exec_alt"`
	ShowUnqualified bool   `koanf:"show_unqualified"`
}

Finder

type Finder struct {
	GeneralModule   `koanf:",squash"`
	CmdAlt          string `koanf:"cmd_alt"`
	UseFD           bool   `koanf:"use_fd"`
	IgnoreGitIgnore bool   `koanf:"ignore_gitignore"`
	Concurrency     int    `koanf:"concurrency"`
	PreviewImages   bool   `koanf:"preview_images"`
}

Runner

type Runner struct {
	GeneralModule `koanf:",squash"`
	Excludes      []string `koanf:"excludes"`
	Includes      []string `koanf:"includes"`
	ShellConfig   string   `koanf:"shell_config"`
	GenericEntry  bool     `koanf:"generic_entry"`
	UseFD         bool     `koanf:"use_fd"`
}

SSH

type SSH struct {
	GeneralModule `mapstructure:",squash"`
	HostFile      string `mapstructure:"host_file"`
	ConfigFile    string `mapstructure:"config_file"`
}

Usage of a SSH Host entry: <query> <username>. If you search for myh root and select the according entry, ssh root@myhost.com will be run.

Usage of SSH Config entry: just run it. No username needed, as it's defined in your config.

Switcher

type Switcher struct {
	GeneralModule `mapstructure:",squash"`
}

Websearch

type Websearch struct {
	GeneralModule `mapstructure:",squash"`
	Entries       []WebsearchEntry `mapstructure:"entries"`
}

type WebsearchEntry struct {
	Name         string `mapstructure:"name"`
	Url          string `mapstructure:"url"`
	Prefix       string `mapstructure:"prefix"`
	SwitcherOnly bool   `mapstructure:"switcher_only"`
}

Supported search engines: google, duckduckgo, ecosia and yandex.

Dmenu

type Dmenu struct {
	GeneralModule `mapstructure:",squash"`
	Separator     string `mapstructure:"separator"` // column separator
	LabelColumn   int    `mapstructure:"label_column"` // column to use as label
}

Symbols

type Symbols struct {
	GeneralModule `mapstructure:",squash"`
	AfterCopy     string `mapstructure:"after_copy"`
}

XDG-Desktop-Portal-Hyprland (xdph) Share Picker

type XdphPicker struct {
	GeneralModule `mapstructure:",squash"`
}

To use this as your screen-share-picker, you have to:

# <cfg>/hypr/xdph.conf
screencopy {
    custom_picker_binary=/picker/script/location
}

where

# pickerscript
walker -n --modules xdphpicker

and ofc chmod +x the script.

Translation

type Translation struct {
	GeneralModule `koanf:",squash"`
	Provider      string `koanf:"provider"`
}

Right now the only provider is "googlefree". Others might be added in the future.

Providers

  • google (free): googlefree
  • deepl (free, required api key DEEPL_AUTH_KEY): deeplfree

Usage

  • <query> => translate <query> to setup locale
  • <src>><query> => f.e. de>hallo => translate hallo to setup locale
  • <query>><dest> => f.e. hallo>fr => translate hallo to french
  • <src>><query>><dest> => f.e. de>hallo>fr => translate hallo from de to fr