Skip to content

Pickers

  • / on an empty line opens the command picker: every slash command (including yours), fuzzy-filtered as you type, with descriptions.
  • /connect with no arguments opens the world picker over your saved bookmarks.
  • Ctrl+R opens history search; Ctrl+T searches your aliases.

Inside any picker: type to filter, arrows to move, Enter to select, Esc/Ctrl+C to cancel. In the inline command picker, Tab completes the highlighted command into the input line.

Results appear above the editor, with one shared separator and no separate picker box. Modal pickers show their labeled filter at the bottom and hide your command draft until they close. Inline completion keeps the command field active in that same position and uses its text to filter suggestions. Find uses the same arrangement for its search query, with matching output above it, a match count beside the query, and navigation help above the separator.

Use rune.ui.picker.show to open a picker from a script:

rune.ui.picker.show({
title = "Where to?",
items = {
{ text = "temple", desc = "the safe room", value = "temple" },
{ text = "smithy", desc = "repairs", value = "smithy" },
{ text = "harbor", desc = "boats east", value = "harbor" },
},
on_select = function(value)
rune.send("walkto " .. value)
end,
})

on_select receives the selected item’s value, which defaults to its text. Items can also be plain strings. Pass mode = "inline" for a compact picker attached to the input line instead of a modal (the title only shows in modal mode), and match_description = true to fuzzy-match descriptions too.

Bind it to a key and you have a custom menu:

rune.bind("f3", function()
rune.ui.picker.show({ title = "Paths", items = path_names, on_select = go })
end)

Related: rune.ui.picker reference, Input & History for tab completion and history navigation, Key Bindings