From 774e2c4d33035f7d897fd2e42d688e2762d26861 Mon Sep 17 00:00:00 2001 From: sandwich Date: Sat, 11 Oct 2025 11:27:33 +0200 Subject: [PATCH] enhance: Conslidate README.md and consistent formatting --- hyprexpo/README.md | 174 ++++++++++++++++++++------------------------- 1 file changed, 78 insertions(+), 96 deletions(-) diff --git a/hyprexpo/README.md b/hyprexpo/README.md index 9dc4a74..b362592 100644 --- a/hyprexpo/README.md +++ b/hyprexpo/README.md @@ -80,21 +80,21 @@ plugin { } ``` -### Configuration +## Configuration -#### Layout & Display +### Layout & Display | key | type | description | default | | --- | --- | --- | --- | | `plugin:hyprexpo:columns` | int | how many desktops per row | `3` | -| `plugin:hyprexpo:gaps_in` | int | inner gaps between tiles (px) | `5` | -| `plugin:hyprexpo:gaps_out` | int | outer margin around the grid (px) | `0` | +| `plugin:hyprexpo:gaps_in` | int | inner spacing between tiles (px) | `5` | +| `plugin:hyprexpo:gaps_out` | int | outer margin around grid (px), animated during open/close | `0` | | `plugin:hyprexpo:bg_col` | color | grid background color | `rgb(111111)` | | `plugin:hyprexpo:workspace_method` | string | placement: `center current` or `first ` | `center current` | -| `plugin:hyprexpo:skip_empty` | bool (int) | skip empty workspaces (`1`) or not (`0`) | `0` | +| `plugin:hyprexpo:skip_empty` | bool (int) | skip empty workspaces using selector `m` (`1`) or show all with `r` (`0`) | `0` | | `plugin:hyprexpo:gesture_distance` | int | swipe distance considered "max" (px) | `200` | -#### Tile Appearance +### Tile Appearance | key | type | description | default | | --- | --- | --- | --- | @@ -102,55 +102,55 @@ plugin { | `plugin:hyprexpo:tile_rounding_power` | float | rounding power (curve exponent) | `2.0` | | `plugin:hyprexpo:tile_rounding_focus` | int | focus tile radius (`-1` = inherit) | `-1` | | `plugin:hyprexpo:tile_rounding_current` | int | current tile radius (`-1` = inherit) | `-1` | -| `plugin:hyprexpo:border_style` | string | `simple` \| `hypr` \| `hyprland` | `simple` | +| `plugin:hyprexpo:border_style` | string | border rendering: `simple` (solid), `hypr` (3-layer), `hyprland` (2-color gradient) | `simple` | | `plugin:hyprexpo:border_width` | int | border thickness (px) | `2` | -| `plugin:hyprexpo:border_color_current` | color | color for current tile border (fallback) | `rgb(66ccff)` | -| `plugin:hyprexpo:border_color_focus` | color | color for focus tile border (fallback) | `rgb(ffcc66)` | -| `plugin:hyprexpo:border_grad_current` | string | hyprland gradient for current, e.g. `rgba(33ccffee) rgba(00ff99ee) 45deg` | empty | -| `plugin:hyprexpo:border_grad_focus` | string | hyprland gradient for focus | empty | +| `plugin:hyprexpo:border_color_current` | color | current tile border color | `rgb(66ccff)` | +| `plugin:hyprexpo:border_color_focus` | color | focused tile border color | `rgb(ffcc66)` | +| `plugin:hyprexpo:border_grad_current` | string | gradient for current tile (hyprland style only), e.g. `rgba(33ccffee) rgba(00ff99ee) 45deg` | empty | +| `plugin:hyprexpo:border_grad_focus` | string | gradient for focused tile (hyprland style only) | empty | -#### Labels +### Workspace Labels | key | type | description | default | | --- | --- | --- | --- | -| `plugin:hyprexpo:label_enable` | bool (int) | enable labels | `1` | -| `plugin:hyprexpo:label_text_mode` | string | `token` | `index` | `id` | `token` | -| `plugin:hyprexpo:label_token_map` | string | override up to 50 tokens (comma‑sep). Empty entries skip | empty | -| `plugin:hyprexpo:label_font_size` | int | base font size (px) | `16` | -| `plugin:hyprexpo:label_position` | string | `top-left` | `top-right` | `bottom-left` | `bottom-right` | `center` | `center` | -| `plugin:hyprexpo:label_offset_x` | int | offset from position anchor (px) | `0` | -| `plugin:hyprexpo:label_offset_y` | int | offset from position anchor (px) | `0` | -| `plugin:hyprexpo:label_show` | string | `always` | `hover` | `focus` | `hover+focus` | `current+focus` | `never` | `always` | -| `plugin:hyprexpo:label_color_default` | color | default label color | `rgb(ffffff)` | -| `plugin:hyprexpo:label_color_hover` | color | hover label color | `rgb(eeeeee)` | -| `plugin:hyprexpo:label_color_focus` | color | focus label color | `rgb(ffcc66)` | -| `plugin:hyprexpo:label_color_current` | color | current label color | `rgb(66ccff)` | +| `plugin:hyprexpo:label_enable` | bool (int) | enable workspace labels | `1` | +| `plugin:hyprexpo:label_text_mode` | string | content: `token` (1,2..9,0,a-z), `index` (visual order), `id` (workspace ID) | `token` | +| `plugin:hyprexpo:label_token_map` | string | override up to 50 tokens (comma-sep), e.g. `1,2,3,,,6` (empty entries skip) | empty | +| `plugin:hyprexpo:label_position` | string | anchor: `top-left` \| `top-right` \| `bottom-left` \| `bottom-right` \| `center` | `center` | +| `plugin:hyprexpo:label_offset_x` | int | horizontal offset from anchor (px) | `0` | +| `plugin:hyprexpo:label_offset_y` | int | vertical offset from anchor (px) | `0` | +| `plugin:hyprexpo:label_show` | string | visibility: `always` \| `hover` \| `focus` \| `hover+focus` \| `current+focus` \| `never` | `always` | +| `plugin:hyprexpo:label_color_default` | color | default state text color | `rgb(ffffff)` | +| `plugin:hyprexpo:label_color_hover` | color | hover state text color | `rgb(eeeeee)` | +| `plugin:hyprexpo:label_color_focus` | color | focus state text color | `rgb(ffcc66)` | +| `plugin:hyprexpo:label_color_current` | color | current workspace text color | `rgb(66ccff)` | | `plugin:hyprexpo:label_scale_hover` | float | scale multiplier on hover | `1.0` | | `plugin:hyprexpo:label_scale_focus` | float | scale multiplier on focus | `1.0` | -| `plugin:hyprexpo:label_bg_enable` | bool (int) | draw background “bubble” | `1` | -| `plugin:hyprexpo:label_bg_shape` | string | `circle` | `square` | `rounded` | `circle` | -| `plugin:hyprexpo:label_bg_rounding` | int | radius for `rounded` shape (px) | `8` | -| `plugin:hyprexpo:label_bg_color` | color | bubble color | `rgba(00000088)` | -| `plugin:hyprexpo:label_padding` | int | bubble padding (px) | `8` | +| `plugin:hyprexpo:label_font_size` | int | base font size (px) | `16` | | `plugin:hyprexpo:label_font_family` | string | Pango font family | `Sans` | -| `plugin:hyprexpo:label_font_bold` | bool (int) | bold | `0` | -| `plugin:hyprexpo:label_font_italic` | bool (int) | italic | `0` | -| `plugin:hyprexpo:label_text_underline` | bool (int) | underline | `0` | -| `plugin:hyprexpo:label_text_strikethrough` | bool (int) | strikethrough | `0` | -| `plugin:hyprexpo:label_pixel_snap` | bool (int) | snap to integer pixels | `1` | +| `plugin:hyprexpo:label_font_bold` | bool (int) | bold text | `0` | +| `plugin:hyprexpo:label_font_italic` | bool (int) | italic text | `0` | +| `plugin:hyprexpo:label_text_underline` | bool (int) | underline text | `0` | +| `plugin:hyprexpo:label_text_strikethrough` | bool (int) | strikethrough text | `0` | +| `plugin:hyprexpo:label_pixel_snap` | bool (int) | snap positions to integer pixels for sharper text | `1` | | `plugin:hyprexpo:label_center_adjust_x` | int | manual center nudge X (px) | `0` | | `plugin:hyprexpo:label_center_adjust_y` | int | manual center nudge Y (px) | `0` | +| `plugin:hyprexpo:label_bg_enable` | bool (int) | draw background bubble behind text | `1` | +| `plugin:hyprexpo:label_bg_shape` | string | bubble shape: `circle` \| `square` \| `rounded` | `circle` | +| `plugin:hyprexpo:label_bg_rounding` | int | radius for `rounded` shape (px) | `8` | +| `plugin:hyprexpo:label_bg_color` | color | bubble background color | `rgba(00000088)` | +| `plugin:hyprexpo:label_padding` | int | bubble padding around text (px) | `8` | -#### Keyboard Navigation +### Keyboard Navigation | key | type | description | default | | --- | --- | --- | --- | -| `plugin:hyprexpo:keynav_enable` | bool (int) | enable keynav + auto submap | `1` | -| `plugin:hyprexpo:keynav_wrap_h` | bool (int) | wrap horizontally | `1` | -| `plugin:hyprexpo:keynav_wrap_v` | bool (int) | wrap vertically | `1` | -| `plugin:hyprexpo:keynav_reading_order` | bool (int) | use row‑major for horizontal moves | `0` | +| `plugin:hyprexpo:keynav_enable` | bool (int) | enable keyboard navigation + auto submap | `1` | +| `plugin:hyprexpo:keynav_wrap_h` | bool (int) | wrap horizontally at row edges | `1` | +| `plugin:hyprexpo:keynav_wrap_v` | bool (int) | wrap vertically at column edges | `1` | +| `plugin:hyprexpo:keynav_reading_order` | bool (int) | row-major horizontal moves (wrap at ends if both h+v wrap enabled) | `0` | -#### Scrolling Overview (Layout-Specific) +### Scrolling Overview (Layout-Specific) When using Hyprland's scrolling layout, HyprExpo automatically switches to a vertical scrolling overview mode. @@ -159,34 +159,51 @@ When using Hyprland's scrolling layout, HyprExpo automatically switches to a ver | `plugin:hyprexpo:scrolling:scroll_moves_up_down` | bool (int) | if enabled, mouse wheel scrolls through workspaces; if disabled, mouse wheel zooms | `1` | | `plugin:hyprexpo:scrolling:default_zoom` | float | default zoom level on overview open (0.1 - 0.9) | `0.5` | -**Note:** Scrolling overview mode does not support keyboard navigation. Mouse/trackpad interaction is the primary input method. +**Note:** Scrolling overview mode does not support keyboard navigation. Mouse/trackpad interaction is the primary input method for this layout. -### Keywords +## Usage -| name | description | arguments | -| -- | -- | -- | -| hyprexpo-gesture | same as gesture, but for hyprexpo gestures. Supports: `expo`. | Same as gesture | +### Dispatchers + +**Main expo dispatcher:** -### Binding ```bash -# hyprland.conf -bind = MODIFIER, KEY, hyprexpo:expo, OPTION +bind = SUPER, g, hyprexpo:expo,