{"id":15114300,"url":"https://github.com/sei40kr/wez-tmux","last_synced_at":"2026-01-20T12:37:21.692Z","repository":{"id":208731808,"uuid":"721628220","full_name":"sei40kr/wez-tmux","owner":"sei40kr","description":"Port tmux key bindings to WezTerm","archived":false,"fork":false,"pushed_at":"2025-11-02T16:17:24.000Z","size":26,"stargazers_count":28,"open_issues_count":3,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-02T18:12:26.863Z","etag":null,"topics":["wezterm","wezterm-plugin"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sei40kr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-11-21T12:59:29.000Z","updated_at":"2025-11-02T16:17:28.000Z","dependencies_parsed_at":"2023-11-23T02:27:45.617Z","dependency_job_id":"e6240083-99f8-4c49-89ba-4470c2665773","html_url":"https://github.com/sei40kr/wez-tmux","commit_stats":null,"previous_names":["sei40kr/wez-tmux"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sei40kr/wez-tmux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sei40kr%2Fwez-tmux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sei40kr%2Fwez-tmux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sei40kr%2Fwez-tmux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sei40kr%2Fwez-tmux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sei40kr","download_url":"https://codeload.github.com/sei40kr/wez-tmux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sei40kr%2Fwez-tmux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28603392,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T12:01:53.233Z","status":"ssl_error","status_checked_at":"2026-01-20T12:01:46.545Z","response_time":117,"last_error":"SSL_read: 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":["wezterm","wezterm-plugin"],"created_at":"2024-09-26T01:41:11.282Z","updated_at":"2026-01-20T12:37:21.684Z","avatar_url":"https://github.com/sei40kr.png","language":"Lua","funding_links":[],"categories":["Keybinding"],"sub_categories":[],"readme":"# wez-tmux\n\nPort [tmux](https://github.com/tmux/tmux) key bindings to [WezTerm](https://wezterm.org), bringing familiar tmux navigation patterns to modern terminal emulator.\n\n\u003e **Note**: This plugin ports tmux **key bindings only**, not the complete workflow or session management system.\n\n## 🗺️ Concept Mapping: tmux ↔ WezTerm\n\n| tmux Concept   | WezTerm Equivalent | Description                                                         |\n| -------------- | ------------------ | ------------------------------------------------------------------- |\n| **Session**    | **Workspace**      | Isolated environments for different projects/contexts               |\n| **Window**     | **Tab**            | Multiple terminal views within a session/workspace                  |\n| **Pane**       | **Pane**           | Split views within a window/tab                                     |\n| **Prefix key** | **Leader key**     | Modifier key that activates tmux-style commands (default: `Ctrl+b`) |\n| **Copy mode**  | **Copy mode**      | Text selection and navigation mode with enhanced capabilities       |\n\n## ✨ Features\n\n- **Familiar Key Bindings**: All major tmux key combinations supported\n- **Basic Navigation**: tmux-style pane splitting, navigation, and resizing\n- **Copy Mode**: Enhanced text selection with tmux navigation patterns\n- **Customizable**: Easy configuration and leader key customization\n- **Native Integration**: Leverages WezTerm's native capabilities\n\n## 🚀 Installation\n\n### Method 1: Git Clone (Recommended)\n\n```bash\n# Clone into your WezTerm plugins directory\ngit clone https://github.com/sei40kr/wez-tmux.git \"${XDG_CONFIG_HOME:-$HOME/.config}/wezterm/plugins/wez-tmux\"\n```\n\n### Method 2: Manual Installation\n\n1. Download or clone this repository\n2. Place the `plugin` directory in your WezTerm plugins path:\n   ```bash\n   # Typically:\n   cp -r wez-tmux/plugin ~/.config/wezterm/plugins/wez-tmux/\n   ```\n\n## ⚙️ Configuration\n\nAdd to your `wezterm.lua` configuration file:\n\n```lua\nlocal wezterm = require(\"wezterm\")\n\n-- Initialize config with wezterm.config_builder() for forward compatibility\nlocal config = wezterm.config_builder()\n\n-- Configure your leader key (recommended to avoid conflicts)\nconfig.leader = { key = \"a\", mods = \"CTRL\" }  -- Use Ctrl+a instead of default Ctrl+b\n\n-- Apply wez-tmux plugin with optional configuration\nrequire(\"plugins.wez-tmux.plugin\").apply_to_config(config, {\n    -- Optional: Customize tab index base (0-based or 1-based)\n    -- tab_and_split_indices_are_zero_based = true\n})\n\nreturn config\n```\n\n## ⌨️ Comprehensive Key Bindings Reference\n\n### Leader Key Basics\n\n| Key Combination   | Description                        |\n| ----------------- | ---------------------------------- |\n| `leader + leader` | Send the leader key itself         |\n| `leader + [`      | Enter copy mode for text selection |\n\n### Workspace Management (tmux Sessions)\n\n| Key Combination | Description                    |\n| --------------- | ------------------------------ |\n| `leader + $`    | Rename current workspace       |\n| `leader + s`    | Interactive workspace switcher |\n| `leader + (`    | Switch to previous workspace   |\n| `leader + )`    | Switch to next workspace       |\n\n### Tab Operations (tmux Windows)\n\n| Key Combination | Description                           |\n| --------------- | ------------------------------------- |\n| `leader + c`    | Create new tab in current domain      |\n| `leader + \u0026`    | Close current tab (with confirmation) |\n| `leader + p`    | Switch to previous tab                |\n| `leader + n`    | Switch to next tab                    |\n| `leader + l`    | Switch to last active tab             |\n| `leader + 1-9`  | Switch to specific tab by index       |\n\n### Pane Management\n\n#### Splitting \u0026 Navigation\n\n| Key Combination  | Description                    |\n| ---------------- | ------------------------------ |\n| `leader + %`     | Split pane horizontally        |\n| `leader + \"`     | Split pane vertically          |\n| `leader + {`     | Rotate panes counter-clockwise |\n| `leader + }`     | Rotate panes clockwise         |\n| `leader + arrow` | Navigate to pane in direction  |\n| `leader + q`     | Interactive pane selector      |\n\n#### Resizing \u0026 Operations\n\n| Key Combination         | Description                            |\n| ----------------------- | -------------------------------------- |\n| `leader + z`            | Zoom/unzoom current pane               |\n| `leader + !`            | Move pane to new tab                   |\n| `leader + ctrl + arrow` | Resize pane in direction (5 cells)     |\n| `leader + x`            | Close current pane (with confirmation) |\n\n### Copy Mode (Advanced Text Selection)\n\n#### Navigation\n\n| Key Combination | Description                |\n| --------------- | -------------------------- |\n| `h/j/k/l`       | Basic directional movement |\n| `w/b/e`         | Word-based navigation      |\n| `0`             | Beginning of line          |\n| `$`             | End of line content        |\n| `^`             | Start of line content      |\n| `g`             | Top of scrollback          |\n| `G`             | Bottom of scrollback       |\n| `H/M/L`         | Viewport positioning       |\n\n#### Scrolling \u0026 Paging\n\n| Key Combination | Description           |\n| --------------- | --------------------- |\n| `ctrl + b`      | Page up               |\n| `ctrl + f`      | Page down             |\n| `ctrl + u`      | Scroll up half page   |\n| `ctrl + d`      | Scroll down half page |\n\n#### Search \u0026 Selection\n\n| Key Combination | Description             |\n| --------------- | ----------------------- |\n| `/`             | Search forward          |\n| `?`             | Search backward         |\n| `n`             | Next search result      |\n| `N`             | Previous search result  |\n| `v`             | Cell selection mode     |\n| `shift + v`     | Line selection mode     |\n| `ctrl + v`      | Block selection mode    |\n| `y`             | Copy selection and exit |\n| `Escape`        | Clear selection or exit |\n\n## 🛠️ Advanced Configuration\n\n### Custom Leader Key\n\n```lua\n-- Use Ctrl+Space as leader (recommended for minimal conflicts)\nconfig.leader = { key = \"Space\", mods = \"CTRL\" }\n\n-- Or use a letter key with modifier\nconfig.leader = { key = \"a\", mods = \"CTRL\" }      -- Ctrl+a\nconfig.leader = { key = \"Space\", mods = \"ALT\" }   -- Alt+Space\n```\n\n### Zero-based vs One-based Indexing\n\n```lua\nrequire(\"wez-tmux.plugin\").apply_to_config(config, {\n    -- Use 0-based indexing for tabs (leader+0 for first tab)\n    tab_and_split_indices_are_zero_based = true,\n\n    -- Or keep 1-based indexing (default, leader+1 for first tab)\n    tab_and_split_indices_are_zero_based = false,\n})\n```\n\n## 🔧 Troubleshooting\n\n### Common Issues\n\n#### Copy Mode `Ctrl+b` Conflict\n\n**Problem**: `Ctrl+b` doesn't work in copy mode for page up\n\n**Solution**: Use a different leader key than `Ctrl+b`:\n\n```lua\nconfig.leader = { key = \"a\", mods = \"CTRL\" }  -- Use Ctrl+a instead\n```\n\n#### Key Binding Conflicts\n\n**Problem**: Custom key bindings not working\n\n**Solution**: Load wez-tmux after your custom bindings, or use `wezterm.GLOBAL` for advanced customization\n\n#### Plugin Not Found\n\n**Problem**: `require(\"plugins.wez-tmux.plugin\")` fails\n\n**Solution**: Ensure the plugin directory is in your WezTerm plugins path:\n\n```lua\n-- Add this if plugin isn't found automatically\npackage.path = package.path .. \";\" .. wezterm.config_dir .. \"/plugins/wez-tmux/?.lua\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsei40kr%2Fwez-tmux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsei40kr%2Fwez-tmux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsei40kr%2Fwez-tmux/lists"}