Quick Start
Add a plugin block to your Hyprland config:
ini
plugin {
hyprexpo {
columns = 3
gaps_in = 5
gaps_out = 0
bg_col = rgb(111111)
workspace_method = center current
gesture_distance = 200
cancel_key = escape
show_cursor = 1
}
}If your active config is hyprland.lua, set the same options with hl.config():
lua
hl.config({
plugin = {
hyprexpo = {
columns = 3,
gaps_in = 5,
gaps_out = 0,
bg_col = "rgb(111111)",
workspace_method = "center current",
gesture_distance = 200,
cancel_key = "escape",
show_cursor = 1,
},
},
})Add a dispatcher binding:
ini
bind = SUPER, g, hyprexpo:expo, toggleOr in Lua:
lua
hl.bind("SUPER + G", function()
hl.plugin.hyprexpo.expo("toggle")
end)Optional keyboard navigation:
ini
plugin {
hyprexpo {
keynav_enable = 1
keynav_wrap_h = 1
keynav_wrap_v = 1
keynav_reading_order = 0
}
}
submap = hyprexpo
bind = , left, hyprexpo:kb_focus, left
bind = , right, hyprexpo:kb_focus, right
bind = , up, hyprexpo:kb_focus, up
bind = , down, hyprexpo:kb_focus, down
bind = , return, hyprexpo:kb_confirm
bind = , escape, hyprexpo:expo, cancel
bind = , 1, hyprexpo:kb_selecti, 1
bind = , 2, hyprexpo:kb_selecti, 2
bind = , 3, hyprexpo:kb_selecti, 3
bind = , 4, hyprexpo:kb_selecti, 4
bind = , 5, hyprexpo:kb_selecti, 5
bind = , 6, hyprexpo:kb_selecti, 6
bind = , 7, hyprexpo:kb_selecti, 7
bind = , 8, hyprexpo:kb_selecti, 8
bind = , 9, hyprexpo:kb_selecti, 9
bind = , 0, hyprexpo:kb_selecti, 10
submap = resetIf your active config is hyprland.lua, define the submap with Lua:
lua
hl.define_submap("hyprexpo", function()
hl.bind("left", function() hl.plugin.hyprexpo.kb_focus("left") end)
hl.bind("right", function() hl.plugin.hyprexpo.kb_focus("right") end)
hl.bind("up", function() hl.plugin.hyprexpo.kb_focus("up") end)
hl.bind("down", function() hl.plugin.hyprexpo.kb_focus("down") end)
hl.bind("return", function() hl.plugin.hyprexpo.kb_confirm() end)
hl.bind("escape", function() hl.plugin.hyprexpo.expo("cancel") end)
end)Next: