{"id":49546376,"url":"https://github.com/gufranco/tmux-tiling-revamped","last_synced_at":"2026-05-02T19:39:27.330Z","repository":{"id":345803113,"uuid":"1187396897","full_name":"gufranco/tmux-tiling-revamped","owner":"gufranco","description":"BSP tiling window management for tmux. Dwindle, spiral, grid, main-center, monocle, and deck layouts with auto-reapplication and zero dependencies","archived":false,"fork":false,"pushed_at":"2026-04-01T18:10:19.000Z","size":136,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T05:30:22.980Z","etag":null,"topics":["bash","bsp","bspwm","dwindle","dwm","hyprland","i3","spiral","tiling","tmux","tmux-plugin","tpm","window-management"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gufranco.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-03-20T17:18:15.000Z","updated_at":"2026-04-01T18:10:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gufranco/tmux-tiling-revamped","commit_stats":null,"previous_names":["gufranco/tmux-tiling-revamped"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gufranco/tmux-tiling-revamped","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-tiling-revamped","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-tiling-revamped/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-tiling-revamped/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-tiling-revamped/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gufranco","download_url":"https://codeload.github.com/gufranco/tmux-tiling-revamped/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-tiling-revamped/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32547651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T19:18:06.202Z","status":"ssl_error","status_checked_at":"2026-05-02T19:16:21.335Z","response_time":132,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bash","bsp","bspwm","dwindle","dwm","hyprland","i3","spiral","tiling","tmux","tmux-plugin","tpm","window-management"],"created_at":"2026-05-02T19:39:26.653Z","updated_at":"2026-05-02T19:39:27.324Z","avatar_url":"https://github.com/gufranco.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1\u003etmux-tiling-revamped\u003c/h1\u003e\n\n\u003cstrong\u003eBSP tiling window management for tmux. Eight layouts, seventeen operations, zero dependencies.\u003c/strong\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n[![CI](https://github.com/gufranco/tmux-tiling-revamped/actions/workflows/tests.yml/badge.svg)](https://github.com/gufranco/tmux-tiling-revamped/actions/workflows/tests.yml)\n[![License: MIT](https://img.shields.io/github/license/gufranco/tmux-tiling-revamped?style=flat-square)](LICENSE)\n[![Version](https://img.shields.io/badge/version-2.0.0-blue?style=flat-square)](CHANGELOG.md)\n[![tmux](https://img.shields.io/badge/tmux-3.2%2B-green?style=flat-square)](https://github.com/tmux/tmux)\n[![bash](https://img.shields.io/badge/bash-4.0%2B-blue?style=flat-square)](https://www.gnu.org/software/bash/)\n\n\u003c/div\u003e\n\n---\n\n**8** layouts  ·  **16** BSP orientations  ·  **17** operations  ·  **30+** commands  ·  **528** tests  ·  **zero** dependencies\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### BSP Tiling\n\nDwindle and spiral layouts with 16 orientation variants and configurable first-split ratio. Panes cascade into binary space partitions toward any corner.\n\n\u003c/td\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### Layout Undo\n\nEvery layout change is saved to a per-window history stack. One keystroke reverts to the previous arrangement. Up to 10 levels deep.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### i3-Style Workspaces\n\nAlt+1-9 switches windows. Alt+Shift+1-9 moves panes between windows. International keyboard support via configurable Shift+number mappings.\n\n\u003c/td\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### fzf Layout Picker\n\nInteractive popup with ASCII diagram previews for all 8 layouts. Shows current layout in the header. Configurable popup dimensions.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### Balanced Distribution\n\nMain-center distributes extra panes evenly between left and right columns. All layouts verified balanced at pane counts 1-10 with 48 dedicated tests.\n\n\u003c/td\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### Diagnostics Built In\n\n`doctor` checks your environment. `info` shows current state. `validate` detects stale metadata. `help` prints a complete reference from the terminal.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## Why\n\ntmux has five built-in layouts. None do BSP tiling. Existing plugins each solve a piece but leave gaps.\n\n| Capability | tiling-revamped | tmux-tilish | tmux-tilit |\n|:-----------|:---------------:|:-----------:|:----------:|\n| BSP dwindle + spiral | Yes | No | No |\n| 16 orientation variants | Yes | No | No |\n| Configurable split ratio | Yes | No | No |\n| Layout undo/redo | Yes | No | No |\n| Layout picker (fzf) | Yes | No | No |\n| Balanced main-center | Yes | No | No |\n| Workspace switching | Yes | Yes | Yes |\n| Project launcher | Yes | Yes | No |\n| Pane marks | Yes | No | No |\n| Scratchpads | Yes | No | No |\n| Presets (save/restore) | Yes | No | No |\n| Health check (doctor) | Yes | No | No |\n| tmux-resurrect integration | Yes | No | No |\n| Rotate / flip | Yes | No | No |\n| Auto-reapplication | Yes | Yes | Yes |\n| Vim-aware navigation | Yes | Yes | Yes |\n| International keyboards | Yes | Yes | Yes |\n\n## Architecture\n\n```mermaid\ngraph LR\n    K[Keybinding] --\u003e D[tiling.sh\u003cbr\u003eDispatcher]\n    H[tmux Hook] --\u003e D\n    D --\u003e L[Layouts\u003cbr\u003e8 modules]\n    D --\u003e O[Operations\u003cbr\u003e17 modules]\n    D --\u003e F[Features\u003cbr\u003e7 modules]\n    L --\u003e T[Batched tmux\u003cbr\u003eCommands]\n    O --\u003e T\n    F --\u003e T\n    T --\u003e S[(tmux State\u003cbr\u003eUser Options)]\n    S -.-\u003e|auto-reapply| H\n```\n\nState is stored in tmux user options at window, pane, or global scope. No temp files, no external state.\n\n## Layouts\n\n### Dwindle\n\nBSP cascade toward a corner. Each new pane takes half of the remaining space.\n\n**4 panes**\n\n```\n┌───────────────────┬───────────────────┐\n│                   │                   │\n│                   │         2         │\n│         1         │                   │\n│                   ├─────────┬─────────┤\n│                   │         │         │\n│                   │    3    │    4    │\n└───────────────────┴─────────┴─────────┘\n```\n\n### Spiral\n\nSame BSP algorithm as dwindle, but the spiral trajectory reverses pane ordering at each depth. The frame is identical to dwindle, only the pane numbers differ.\n\n**4 panes**\n\n```\n┌───────────────────┬───────────────────┐\n│                   │                   │\n│                   │         2         │\n│         1         │                   │\n│                   ├─────────┬─────────┤\n│                   │         │         │\n│                   │    4    │    3    │\n└───────────────────┴─────────┴─────────┘\n```\n\n### Grid\n\nEven N x M grid. Uses tmux's built-in tiled layout.\n\n**4 panes**\n\n```\n┌───────────────────┬───────────────────┐\n│                   │                   │\n│         1         │         2         │\n│                   │                   │\n├───────────────────┼───────────────────┤\n│                   │                   │\n│         3         │         4         │\n│                   │                   │\n└───────────────────┴───────────────────┘\n```\n\n### Main-Center\n\nWide center pane with balanced side columns. Extra panes distribute evenly.\n\n**6 panes**\n\n```\n┌─────────┬───────────────────┬─────────┐\n│    2    │                   │    4    │\n├─────────┤                   ├─────────┤\n│    3    │         1         │    5    │\n│         │                   ├─────────┤\n│         │                   │    6    │\n└─────────┴───────────────────┴─────────┘\n```\n\n### Main-Vertical\n\nMaster left, stack right. Master size controlled by `@tiling_revamped_master_ratio`.\n\n**4 panes**\n\n```\n┌───────────────────┬───────────────────┐\n│                   │         2         │\n│                   ├───────────────────┤\n│         1         │         3         │\n│                   ├───────────────────┤\n│                   │         4         │\n│                   │                   │\n└───────────────────┴───────────────────┘\n```\n\n### Main-Horizontal\n\nMaster top, stack bottom. Master size controlled by `@tiling_revamped_master_ratio`.\n\n**4 panes**\n\n```\n┌───────────────────────────────────────┐\n│                                       │\n│                  1                    │\n│                                       │\n├───────────┬───────────┬───────────────┤\n│     2     │     3     │       4       │\n└───────────┴───────────┴───────────────┘\n```\n\n### Monocle\n\nZoom the focused pane to fill the entire window. Press the same key again to toggle zoom off and restore the previous layout.\n\n```\n┌───────────────────────────────────────┐\n│                                       │\n│                                       │\n│                  1                    │\n│              [ZOOMED]                 │\n│                                       │\n│                                       │\n└───────────────────────────────────────┘\n(other panes hidden behind)\n```\n\n### Deck\n\nAll panes at full height, side by side at equal widths.\n\n**4 panes**\n\n```\n┌─────────┬─────────┬─────────┬─────────┐\n│         │         │         │         │\n│         │         │         │         │\n│    1    │    2    │    3    │    4    │\n│         │         │         │         │\n│         │         │         │         │\n└─────────┴─────────┴─────────┴─────────┘\n```\n\n## Quick Start\n\n### Prerequisites\n\n| Tool | Version | Install |\n|:-----|:--------|:--------|\n| tmux | 3.2+ | [github.com/tmux/tmux](https://github.com/tmux/tmux) |\n| bash | 4.0+ | Ships with Linux. macOS: `brew install bash` |\n| TPM | latest | [github.com/tmux-plugins/tpm](https://github.com/tmux-plugins/tpm) |\n| fzf | 0.44.0+ | Optional. Enables layout picker, fuzzy mark/preset selection |\n\n### Install\n\nAdd to `~/.tmux.conf`:\n\n```tmux\nset -g @plugin 'gufranco/tmux-tiling-revamped'\n```\n\nPress `prefix + I` to install via TPM.\n\n### Verify\n\nOpen tmux, create a few panes, then press `prefix + d`. All panes rearrange into a dwindle layout.\n\n## Default Keybindings\n\nAll keybindings use the tmux prefix. Every key is configurable via `@tiling_revamped_key_*` options.\n\n| Key | Action | Command |\n|:----|:-------|:--------|\n| `d` | Apply dwindle layout | `layout dwindle` |\n| `D` | Apply spiral layout | `layout spiral` |\n| `v` | Apply main-vertical layout | `layout main-vertical` |\n| `V` | Apply main-horizontal layout | `layout main-horizontal` |\n| `b` | Balance panes | `balance` |\n| `B` | Equalize panes | `equalize` |\n| `m` | Promote focused pane to master | `promote` |\n| `.` | Rotate layout 90 degrees | `rotate` |\n| `,` | Flip layout horizontally | `flip` |\n| `C-r` | Circulate panes | `circulate` |\n| `C-d` | Smart split along longest axis | `autosplit` |\n| `o` | Cycle to next layout | `cycle` |\n| `+` | Grow master pane | `resize-master grow` |\n| `-` | Shrink master pane | `resize-master shrink` |\n| `S` | Toggle synchronize panes | `sync` |\n| `M` | Mark pane with a name | `mark \u003cname\u003e` |\n| `j` | Jump to marked pane | `jump` |\n| `g` | Toggle scratchpad popup | `scratchpad` |\n| `p` | Open layout picker | `pick` |\n| `u` | Undo last layout change | `undo` |\n\n## Configuration\n\nAll options use the `@tiling_revamped_` prefix.\n\n### Behavior\n\n| Option | Default | Description |\n|:-------|:--------|:------------|\n| `@tiling_revamped_auto_apply` | `1` | Reapply layout when panes are added or removed |\n| `@tiling_revamped_default_layout` | (empty) | Auto-apply this layout on new windows |\n| `@tiling_revamped_default_orientation` | `brvc` | Default BSP orientation for new windows |\n| `@tiling_revamped_focus_resize` | `0` | Expand focused pane toward golden ratio on focus |\n| `@tiling_revamped_focus_ratio` | `62` | Percentage of window for focused pane |\n| `@tiling_revamped_master_ratio` | `60` | Master pane percentage for main-vertical and main-horizontal |\n| `@tiling_revamped_main_center_ratio` | `60` | Width percentage for main-center center pane |\n| `@tiling_revamped_split_ratio` | `50` | First BSP split ratio (20-80). Useful for ultrawide monitors |\n| `@tiling_revamped_resize_step` | `5` | Percentage step for resize-master grow/shrink |\n| `@tiling_revamped_cycle_layouts` | `dwindle spiral grid main-vertical main-horizontal main-center monocle deck` | Layout cycle order |\n| `@tiling_revamped_alt_keys` | `0` | Use Alt keybindings (`M-\u003ckey\u003e`) instead of prefix mode |\n| `@tiling_revamped_navigator` | `0` | Vim-aware navigation. Set to `1` to enable `M-h/j/k/l` with vim detection |\n| `@tiling_revamped_workspaces` | `0` | Enable i3-style Alt+1-9 workspace switching |\n| `@tiling_revamped_shiftnum` | `!@#$%^\u0026*()` | Shift+number characters for international keyboards |\n| `@tiling_revamped_project_dir` | (empty) | Root directory for project launcher |\n| `@tiling_revamped_project_depth` | `1` | Subdirectory depth for project search |\n| `@tiling_revamped_scratch_width` | `80%` | Scratchpad popup width |\n| `@tiling_revamped_scratch_height` | `75%` | Scratchpad popup height |\n| `@tiling_revamped_pick_width` | `60%` | Layout picker popup width |\n| `@tiling_revamped_pick_height` | `40%` | Layout picker popup height |\n| `@tiling_revamped_pick_preview_width` | `60%` | Layout picker preview panel width |\n| `@tiling_revamped_min_pane_width` | `10` | Minimum pane width before layout refuses to apply |\n| `@tiling_revamped_min_pane_height` | `5` | Minimum pane height before layout refuses to apply |\n| `@tiling_revamped_enable_logging` | `0` | Write debug logs to `~/.tmux/tiling-logs/` |\n\n### Custom Keybindings\n\n```tmux\nset -g @tiling_revamped_key_dwindle         \"d\"\nset -g @tiling_revamped_key_spiral          \"D\"\nset -g @tiling_revamped_key_main_vertical   \"v\"\nset -g @tiling_revamped_key_main_horizontal \"V\"\nset -g @tiling_revamped_key_balance         \"b\"\nset -g @tiling_revamped_key_equalize        \"B\"\nset -g @tiling_revamped_key_promote         \"m\"\nset -g @tiling_revamped_key_rotate          \".\"\nset -g @tiling_revamped_key_flip            \",\"\nset -g @tiling_revamped_key_circulate       \"C-r\"\nset -g @tiling_revamped_key_autotile        \"C-d\"\nset -g @tiling_revamped_key_cycle           \"o\"\nset -g @tiling_revamped_key_master_grow     \"+\"\nset -g @tiling_revamped_key_master_shrink   \"-\"\nset -g @tiling_revamped_key_sync            \"S\"\nset -g @tiling_revamped_key_mark            \"M\"\nset -g @tiling_revamped_key_jump            \"j\"\nset -g @tiling_revamped_key_scratchpad      \"g\"\nset -g @tiling_revamped_key_pick_layout     \"p\"\nset -g @tiling_revamped_key_undo            \"u\"\nset -g @tiling_revamped_key_project         \"\"\n\n# Directional swap (disabled by default, set keys to enable)\nset -g @tiling_revamped_key_swap_up    \"\"\nset -g @tiling_revamped_key_swap_down  \"\"\nset -g @tiling_revamped_key_swap_left  \"\"\nset -g @tiling_revamped_key_swap_right \"\"\n```\n\nSet any key to `\"\"` (empty string) to disable that binding entirely.\n\n### Avoiding Key Conflicts in Prefix Mode\n\nSeveral default keys conflict with common tmux bindings.\n\n| Default Key | Conflicts With | Suggested Alternative |\n|:------------|:---------------|:----------------------|\n| `b` (balance) | `prefix + b` lists paste buffers | `=` |\n| `M` (mark) | `prefix + M` is often used for scrollback | `N` |\n| `j` (jump) | `prefix + j` navigates panes down | `G` |\n| `+` (master grow) | `prefix + +` maximizes pane (zoom) | `}` |\n| `-` (master shrink) | `prefix + -` splits vertically | `{` |\n| `S` (sync) | `prefix + S` is commonly bound to sync-panes | `\"\"` (disable) |\n| `.` (rotate) | `prefix + .` moves pane to another window | `R` |\n| `,` (flip) | `prefix + ,` renames window | `F` |\n| `C-r` (circulate) | `prefix + C-r` is not commonly bound | `C-n` |\n| `p` (pick layout) | `prefix + p` is previous-window | `P` |\n\n### Layout Picker\n\nInteractive fzf-based layout picker with ASCII diagram previews.\n\n```\n┌──────────────────────────────────────────────────────────────┐\n│ Select layout:                                               │\n│                        │ Dwindle Layout (4 panes)            │\n│   \u003e dwindle            │ ┌──────────┬──────────┐             │\n│     spiral             │ │          │    2     │             │\n│     grid               │ │    1     ├─────┬────┤             │\n│     main-vertical      │ │          │  3  │ 4  │             │\n│     main-horizontal    │ └──────────┴─────┴────┘             │\n│     main-center        │ BSP cascade toward corner           │\n│     monocle            │                                     │\n│     deck               │                                     │\n│                        │                                     │\n│  Current: dwindle                                            │\n└──────────────────────────────────────────────────────────────┘\n```\n\nThe picker shows ASCII diagrams in a preview panel on the right side. Each layout displays a representative configuration. The current layout is shown in the header.\n\nRequirements: fzf \u003e= 0.44.0.\n\n### Layout Cycling\n\n```\ndwindle --\u003e spiral --\u003e grid\n  ^                     |\n  |    main-vertical \u003c--+\n  |         |\n  |    main-horizontal\n  |         |\n  |    main-center\n  |         |\n  |    monocle\n  |         |\n  +--- deck +\n```\n\n### BSP Orientation Flags\n\nA 4-character string controlling how the BSP tree cascades. Each character is one binary choice.\n\n| Position | Values | Meaning |\n|:---------|:-------|:--------|\n| 1 | `t` / `b` | Top or bottom corner |\n| 2 | `l` / `r` | Left or right corner |\n| 3 | `h` / `v` | Horizontal or vertical first split |\n| 4 | `c` / `s` | Corner (dwindle) or spiral trajectory |\n\nDefault: `brvc` (bottom-right, vertical, corner).\n\n## CLI\n\nThe dispatcher at `src/tiling.sh` accepts direct commands for scripting and custom bindings.\n\n```bash\n# Layouts\n./src/tiling.sh layout dwindle brvc\n./src/tiling.sh layout spiral\n./src/tiling.sh layout grid\n./src/tiling.sh layout main-center\n./src/tiling.sh layout main-vertical\n./src/tiling.sh layout main-horizontal\n./src/tiling.sh layout monocle\n./src/tiling.sh layout deck\n\n# Operations\n./src/tiling.sh balance\n./src/tiling.sh equalize\n./src/tiling.sh rotate 180\n./src/tiling.sh flip v\n./src/tiling.sh promote\n./src/tiling.sh circulate prev\n./src/tiling.sh autosplit\n./src/tiling.sh resize-master grow\n./src/tiling.sh sync\n./src/tiling.sh swap R\n./src/tiling.sh swap-pick\n./src/tiling.sh pick\n./src/tiling.sh cycle next\n./src/tiling.sh undo\n\n# Features\n./src/tiling.sh mark editor\n./src/tiling.sh jump editor\n./src/tiling.sh scratchpad htop\n./src/tiling.sh preset save dev\n./src/tiling.sh preset apply dev\n./src/tiling.sh workspace 3\n./src/tiling.sh move-to-workspace 5\n./src/tiling.sh project\n\n# Diagnostics\n./src/tiling.sh info\n./src/tiling.sh doctor\n./src/tiling.sh validate fix\n./src/tiling.sh restore-layouts\n./src/tiling.sh help\n```\n\n## How It Works\n\nThe core BSP algorithm computes a tmux custom layout string mathematically, then applies it in a single `select-layout` call.\n\n**Step 1: Build.** `_bsp_build()` recursively divides the window into a binary tree. At each depth, the orientation flags determine the split direction. At depth 0, the configurable `split_ratio` controls the first division. The output is a tmux layout string:\n\n```\n200x50,0,0{100x50,0,0,0,100x50,101,0[100x24,101,0,1,100x25,101,25{50x25,101,25,2,49x25,152,25,3}]}\n```\n\n**Step 2: Checksum.** `_layout_checksum()` computes the CRC-16 prefix that tmux requires.\n\n**Step 3: Apply.** `select-layout \u003cchecksum\u003e,\u003clayout_body\u003e` positions all panes in one call. For spiral layouts, `_bsp_fix_pane_order()` swaps panes to the correct BSP depth positions.\n\nState is stored in tmux user options:\n\n| Option | Scope | Purpose |\n|:-------|:------|:--------|\n| `@tiling_revamped_layout` | window | Current layout name |\n| `@tiling_revamped_orientation` | window | BSP orientation flags |\n| `@tiling_revamped_layout_history` | window | Undo stack (pipe-separated) |\n| `@tiling_revamped_applying` | global | Recursion guard |\n| `@tiling_revamped_mark` | pane | Mark name |\n| `@tiling_revamped_marks` | global | Mark index |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eProject structure\u003c/strong\u003e\u003c/summary\u003e\n\n```\ntmux-tiling-revamped.tmux     # TPM entry point: keybindings, hooks, version gates\nsrc/\n  tiling.sh                   # Command dispatcher with help text\n  lib/\n    layouts/\n      dwindle.sh              # BSP dwindle + shared _apply_bsp_layout\n      spiral.sh               # BSP spiral (delegates to dwindle)\n      grid.sh                 # Even grid via tmux tiled\n      main-center.sh          # Balanced center pane with side columns\n      main-vertical.sh        # Master left, stack right\n      main-horizontal.sh      # Master top, stack bottom\n      monocle.sh              # Zoom toggle\n      deck.sh                 # Full-height equal-width cards\n    operations/\n      balance.sh              # Equalize sizes within topology\n      equalize.sh             # Force even distribution\n      rotate.sh               # Rotate orientation 90/180/270\n      flip.sh                 # Mirror horizontally or vertically\n      promote.sh              # Swap focused pane with master\n      circulate.sh            # Shift pane positions\n      autosplit.sh            # Smart split along longest axis\n      focus-resize.sh         # Golden ratio resize on focus\n      resize-master.sh        # Grow or shrink master pane\n      sync.sh                 # Toggle synchronize-panes\n      swap-direction.sh       # Swap with directional neighbor\n      swap-pick.sh            # Swap with fzf-selected pane\n      pick-layout.sh          # fzf layout picker with previews\n      undo-layout.sh          # Layout history and undo\n      validate.sh             # Layout metadata validation\n      info.sh                 # Current state display\n      doctor.sh               # Environment health check\n    features/\n      marks.sh                # Named pane labels with fzf jump\n      scratchpad.sh           # Persistent popup sessions\n      presets.sh              # Save and restore layout configs\n      cycle.sh                # Step through layout list\n      workspaces.sh           # i3-style window switching\n      project-launcher.sh     # fzf project directory opener\n      resurrect.sh            # tmux-resurrect layout restore\n    tmux/\n      tmux-ops.sh             # Get/set tmux options\n      tmux-config.sh          # Option helpers, reapply helper\n    utils/\n      constants.sh            # Option names and defaults\n      error-logger.sh         # Rotating log file\n      has-command.sh           # Command existence check\n      pane-guard.sh           # Minimum pane size checker\n      deprecation.sh          # Option migration warnings\ntest/\n  helpers.bash                # Mock tmux for unit tests\n  tmux_helpers.bash           # Real tmux server for integration tests\n  integration.bats            # 64 end-to-end scenarios\n  balance.bats                # 48 balance invariant tests\n  lib/                        # 40 unit test files mirroring src/lib/\n```\n\n\u003c/details\u003e\n\n## Development\n\n| Command | Description |\n|:--------|:------------|\n| `make test` | Run the full bats suite |\n| `make test-unit` | Run unit tests only |\n| `make lint` | ShellCheck all shell files |\n| `make clean` | Remove temp test artifacts |\n| `bats --recursive test/` | Run all 528 tests recursively |\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgufranco%2Ftmux-tiling-revamped","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgufranco%2Ftmux-tiling-revamped","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgufranco%2Ftmux-tiling-revamped/lists"}