{"id":50543944,"url":"https://github.com/colonelpanic8/hyprexpo","last_synced_at":"2026-06-03T22:05:30.916Z","repository":{"id":357465135,"uuid":"1237053714","full_name":"colonelpanic8/hyprexpo","owner":"colonelpanic8","description":"Standalone maintained fork of the HyprExpo Hyprland plugin","archived":false,"fork":false,"pushed_at":"2026-05-19T22:36:16.000Z","size":203,"stargazers_count":12,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-20T00:50:38.428Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/colonelpanic8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T20:40:37.000Z","updated_at":"2026-05-19T22:36:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/colonelpanic8/hyprexpo","commit_stats":null,"previous_names":["colonelpanic8/hyprexpo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/colonelpanic8/hyprexpo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colonelpanic8%2Fhyprexpo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colonelpanic8%2Fhyprexpo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colonelpanic8%2Fhyprexpo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colonelpanic8%2Fhyprexpo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/colonelpanic8","download_url":"https://codeload.github.com/colonelpanic8/hyprexpo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/colonelpanic8%2Fhyprexpo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33881262,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-03T22:05:29.842Z","updated_at":"2026-06-03T22:05:30.907Z","avatar_url":"https://github.com/colonelpanic8.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HyprExpo\nHyprExpo is an overview plugin like Gnome, KDE or wf.\n  \n![HyprExpo](https://github.com/user-attachments/assets/e89df9d2-9800-4268-9929-239ad9bc3a54)\n  \n## Installation\n\n```bash\nhyprpm add https://github.com/colonelpanic8/hyprexpo\nhyprpm enable hyprexpo\nhyprpm reload\n```\n\n## Config\nA great start to configure this plugin would be adding this code to the `plugin` section of your hyprland configuration file:  \n\n```ini\n# .config/hypr/hyprland.conf\nplugin {\n    hyprexpo {\n        columns = 3\n        gap_size = 5\n        gap_size_outer = 0\n        bg_col = rgb(111111)\n        preview_mode = live # live or cached\n        workspace_method = center current # [center/first] [workspace] e.g. first 1 or center m+1\n\n        label_enable = false\n        label_text_mode = id # token, index, or id\n        selection_label_enable = false\n        selection_label_token_map = a,s,d,f,g,q,w,e,r,t,z,x,c,v,b\n        border_width = 0\n        border_color_current = rgb(66ccff)\n        border_color_hover = rgb(aabbcc)\n        border_color_focus = rgb(ffcc66)\n        window_icon_enable = false\n        window_icon_position = bottom-right\n\n        gesture_distance = 300 # how far is the \"max\" for the gesture\n        cancel_key = escape # key that cancels the overview without selecting a workspace\n    }\n}\n```\n\n### Properties\n\n| property | type | description | default |\n| --- | --- | --- | --- |\ncolumns | number | how many desktops are displayed on one line | `3`\ngap_size | number | gap between desktops | `5`\ngap_size_outer | number | gap around the outside of the grid | `0`\nbg_col | color | color in gaps (between desktops) | `rgb(000000)`\nworkspace_method | [center/first] [workspace] | position of the desktops; comma-separated monitor-specific entries are supported, e.g. `DP-1 first 1, HDMI-A-1 center current, center current` | `center current`\npreview_mode | string | preview backend: `live` re-renders workspaces every frame; `cached` uses framebuffer snapshots | `live`\nskip_empty | boolean | whether the grid displays workspaces sequentially by id using selector \"r\" (`false`) or skips empty workspaces using selector \"m\" (`true`) | `false`\nmax_workspace | number | highest normal workspace to show when `skip_empty` is `false`; `0` disables the limit | `0`\nshow_workspace_numbers | boolean | legacy shortcut to show workspace ID labels | `false`\nworkspace_number_color | color | color of workspace number labels | `rgb(ffffff)`\ngesture_distance | number | how far is the max for the gesture | `300`\ncancel_key | string | key that cancels the overview without selecting a workspace; comma-separated keys are supported, and `none` disables it | `escape`\ntile_rounding | number | corner radius for workspace tiles | `0`\ntile_rounding_power | number | rounding curve exponent | `2.0`\ntile_rounding_hover | number | hover tile radius; `-1` inherits `tile_rounding` | `-1`\ntile_rounding_focus | number | keyboard-focused tile radius; `-1` inherits `tile_rounding` | `-1`\ntile_rounding_current | number | current tile radius; `-1` inherits `tile_rounding` | `-1`\nborder_width | number | width of current, hover, and keyboard-focus highlight borders; `0` disables them | `0`\nborder_color_current | color | current workspace border color | `rgb(66ccff)`\nborder_color_hover | color | hovered workspace border color | `rgb(aabbcc)`\nborder_color_focus | color | keyboard-focused workspace border color | `rgb(ffcc66)`\nwindow_icon_enable | boolean | overlay each previewed window's application icon | `false`\nwindow_icon_position | string | icon corner within each previewed window: `top-left`, `top-right`, `bottom-left`, `bottom-right`, or `center` | `bottom-right`\nwindow_icon_size | number | icon size | `32`\nwindow_icon_offset_x | number | icon horizontal offset from the selected corner | `6`\nwindow_icon_offset_y | number | icon vertical offset from the selected corner | `6`\nwindow_icon_alpha | float | icon opacity from `0.0` to `1.0` | `1.0`\nwindow_icon_bg_enable | boolean | draw a background behind window icons | `true`\nwindow_icon_bg_color | color | window icon background color | `rgba(00000088)`\nwindow_icon_bg_rounding | number | window icon background corner radius | `8`\nwindow_icon_padding | number | window icon background padding | `4`\nlabel_enable | boolean | show configurable workspace labels | `false`\nlabel_text_mode | string | label content: `token`, `index`, or `id` | `token`\nlabel_token_map | string | comma-separated token overrides for `label_text_mode = token`; empty entries hide that token | empty\nlabel_position | string | `top-left`, `top-right`, `bottom-left`, `bottom-right`, or `center` | `top-left`\nlabel_offset_x | number | label horizontal offset | `6`\nlabel_offset_y | number | label vertical offset | `6`\nselection_label_enable | boolean | show a separate selection-key label on each visible workspace | `false`\nselection_label_token_map | string | comma-separated tokens used by `hyprexpo:kb_select` when selection labels are enabled; empty entries are unselectable | `a,s,d,f,g,q,w,e,r,t,z,x,c,v,b`\nselection_label_position | string | `top-left`, `top-right`, `bottom-left`, `bottom-right`, or `center` | `top-right`\nselection_label_offset_x | number | selection label horizontal offset | `6`\nselection_label_offset_y | number | selection label vertical offset | `6`\nselection_label_color | color | selection label color | `rgb(ffcc66)`\nlabel_show | string | `always`, `hover`, `focus`, `hover+focus`, `current+focus`, or `never` | `always`\nlabel_font_size | number | label font size | `16`\nlabel_font_family | string | Pango font family | `Sans`\nlabel_font_bold | boolean | draw bold label text | `true`\nlabel_font_italic | boolean | draw italic label text | `false`\nlabel_color_default | color | default label color | `rgb(ffffff)`\nlabel_color_hover | color | hover label color | `rgb(eeeeee)`\nlabel_color_focus | color | keyboard-focused label color | `rgb(ffcc66)`\nlabel_color_current | color | current workspace label color | `rgb(66ccff)`\nlabel_bg_enable | boolean | draw a background behind labels | `true`\nlabel_bg_color | color | label background color | `rgba(00000088)`\nlabel_bg_rounding | number | label background corner radius | `8`\nlabel_padding | number | label background padding | `6`\nlabel_pixel_snap | boolean | snap label boxes to integer pixels | `true`\nkeynav_wrap_h | boolean | keyboard navigation wraps horizontally | `true`\nkeynav_wrap_v | boolean | keyboard navigation wraps vertically | `true`\nkeynav_reading_order | boolean | left/right navigation scans row-major order | `false`\nlive_preview_follow_focus | boolean | switch the active workspace as overview focus moves | `false`\n\n### Keywords\n\n| name | description | arguments |\n| -- | -- | -- | \n| hyprexpo-gesture | same as gesture, but for hyprexpo gestures. Supports: `expo`. | Same as gesture |\n\n### Binding\n```bash\n# hyprland.conf\nbind = MODIFIER, KEY, hyprexpo:expo, OPTION\n```\n\nExample:  \n```bash\n# This will toggle HyprExpo when SUPER+g is pressed\nbind = SUPER, g, hyprexpo:expo, toggle\n# This will switch to workspace 1, using the overview animation if it is open\nbind = SUPER, 1, hyprexpo:expo, 1\n```\n\nWhen the overview is already open, pressing a raw number key from `1` through `9`\nselects that workspace directly. Keypad numbers are supported as well.\n\nKeyboard navigation dispatchers are also available:\n\n| dispatcher | argument | description |\n| --- | --- | --- |\n`hyprexpo:kb_focus` | `left`, `right`, `up`, or `down` | move keyboard focus between visible tiles\n`hyprexpo:kb_confirm` | none | select the keyboard-focused tile\n`hyprexpo:kb_select` | token | select by visible token; uses `selection_label_token_map` when selection labels are enabled, otherwise `1-9`, `0`, then `a-z`\n`hyprexpo:kb_selecti` | number | select by 1-based visible index\n\nLua config:\n```lua\nhl.config({\n    plugin = {\n        hyprexpo = {\n            columns = 3,\n            gap_size = 5,\n            gap_size_outer = 0,\n            bg_col = \"rgb(111111)\",\n            workspace_method = \"center current\",\n            skip_empty = false,\n            max_workspace = 0,\n            show_workspace_numbers = false,\n            workspace_number_color = \"rgb(ffffff)\",\n            window_icon_enable = false,\n            window_icon_position = \"bottom-right\",\n            window_icon_size = 32,\n            label_enable = false,\n            label_text_mode = \"id\",\n            label_token_map = \"\",\n            selection_label_enable = false,\n            selection_label_token_map = \"a,s,d,f,g,q,w,e,r,t,z,x,c,v,b\",\n            gesture_distance = 300,\n            cancel_key = \"escape\",\n        },\n    },\n})\n\nhl.bind(\"SUPER + g\", function()\n    hl.plugin.hyprexpo.expo(\"toggle\")\nend)\n```\n\nHere are a list of options you can use:  \n| option | description |\n| --- | --- |\ntoggle | displays if hidden, hide if displayed\nselect | selects the hovered desktop\nbring | brings a window from the hovered desktop to the current desktop\ncancel | hides the overview without selecting a workspace\n1-9 | switches to that workspace, using the overview animation if it is open\noff | hides the overview\ndisable | same as `off`\non | displays the overview\nenable | same as `on`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolonelpanic8%2Fhyprexpo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcolonelpanic8%2Fhyprexpo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcolonelpanic8%2Fhyprexpo/lists"}