{"id":33324694,"url":"https://github.com/alexekdahl/tmux-compile","last_synced_at":"2026-01-12T14:36:00.450Z","repository":{"id":322639459,"uuid":"1090260172","full_name":"alexekdahl/tmux-compile","owner":"alexekdahl","description":"tmux plugin for running compile commands in a dedicated pane.","archived":false,"fork":false,"pushed_at":"2025-11-22T11:00:00.000Z","size":1261,"stargazers_count":13,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-22T13:05:21.533Z","etag":null,"topics":["tmux","tmux-plugin","tmux-plugins"],"latest_commit_sha":null,"homepage":"","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/alexekdahl.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":"2025-11-05T12:36:22.000Z","updated_at":"2025-11-22T11:00:04.000Z","dependencies_parsed_at":"2025-11-22T13:02:04.191Z","dependency_job_id":null,"html_url":"https://github.com/alexekdahl/tmux-compile","commit_stats":null,"previous_names":["alexekdahl/tmux-compile"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexekdahl/tmux-compile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexekdahl%2Ftmux-compile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexekdahl%2Ftmux-compile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexekdahl%2Ftmux-compile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexekdahl%2Ftmux-compile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexekdahl","download_url":"https://codeload.github.com/alexekdahl/tmux-compile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexekdahl%2Ftmux-compile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28340402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["tmux","tmux-plugin","tmux-plugins"],"created_at":"2025-11-20T06:00:37.628Z","updated_at":"2026-01-12T14:36:00.433Z","avatar_url":"https://github.com/alexekdahl.png","language":"Shell","funding_links":[],"categories":["Plugins"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/tmux-compile.png\" alt=\"tmux-compile logo\" width=\"100%\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003cb\u003eSeamless compilation workflows from inside tmux\u003c/b\u003e\n\u003c/p\u003e\n\n`tmux-compile` is inspired by Emacs’ compile-mode: it runs build commands in a dedicated pane, keeps a history of previous commands and lets you jump straight to errors in your editor. The goal is to simplify repetitive compilation tasks without pulling you out of your terminal or editor.\n\n## Why use tmux-compile?\n\nModern terminal workflows often juggle editors, build scripts and error messages. `tmux-compile` keeps everything together:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/tmux-compile.gif\" alt=\"tmux-compile demo\" width=\"80%\"/\u003e\n\u003c/p\u003e\n\n- **Stay in tmux** – run compilations without spawning external windows or switching panes manually.\n- **Smart error jumping** – if Neovim is running in an adjacent pane, you can jump directly to the file and line reported by your compiler. No more copying file paths.\n- **Minimal friction** – choose your own keybindings and pane height; history is persisted per session or globally.\n- **Inspired by compile-mode** – familiar to users of Emacs, but adapted to the tmux + Neovim workflow.\n\n## Features\n\n- **Dedicated compile pane** – open a separate pane for running arbitrary shell commands.\n- **Persistent history** – saves each compile command you run; optionally one history file per tmux session.\n- **Error parsing and navigation** – detects errors of the form `file:line:col` or `file:line` and opens the file in Neovim.\n- **Configurable** – choose keybindings for triggering, re-running or killing the compile pane; adjust the pane height and history location.\n- **Timestamped, syntax-highlighted output** – makes it easier to follow long build outputs.\n\n## Requirements\n\n- **tmux ≥ 2.0**\n- **Neovim** (only needed for the error navigation feature)\n- **bash**\n\n## Installation\n\n### With tpm\n\nAdd the plugin to your `tmux.conf`:\n\n```tmux\nset -g @plugin 'alexekdahl/tmux-compile'\n```\n\nReload TPM with `\u003cprefix\u003e + I` to fetch and install the plugin.\n\n### Manual installation\n\nClone the repository into your tmux plugin directory and source it:\n\n```bash\ngit clone https://github.com/alexekdahl/tmux-compile ~/.tmux/plugins/tmux-compile\n```\n\nThen add this to your `tmux.conf`:\n\n```tmux\nrun-shell ~/.tmux/plugins/tmux-compile/compile-mode.tmux\n```\n\n## Usage\n\nBy default the plugin defines a few keybindings. You can change them under **Configuration**. In the following table `\u003cprefix\u003e` refers to your tmux prefix key (often `C-b`).\n\n| Action               | Default keybinding |\n|---------------------|--------------------|\n| Run compile command   | `\u003cprefix\u003e C-b`       |\n| Re-run last command | `\u003cprefix\u003e C-r`       |\n| Kill compile pane   | `\u003cprefix\u003e C-k`       |\n| Open file at error  | `Enter` in copy-mode |\n\nWhen you first trigger the compile pane you will be prompted for a shell command. After execution the command is stored in the history so you can re-run it quickly. While viewing the output in copy-mode, pressing **Enter** on a line that looks like `file:line:col` (or `file:line`) opens that file at the specified location in Neovim. Neovim must be running in another pane for this feature to work.\n\n### Command history\n\n`tmux-compile` writes the commands you run to a history file. By default all sessions share a single file, but you can enable per-session history. With session-aware history enabled, each tmux session has its own file named after the session, stored in the directory given by `@compile-mode-history-dir`.\n\n## Configuration\n\nAll options are set in `tmux.conf` using `set -g`. Example:\n\n```tmux\n# Trigger the compile prompt (default: \u003cprefix\u003e b)\nset -g @compile-mode-key \"C-b\"\n\n# Re-run the last compile command (default: \u003cprefix\u003e r)\nset -g @compile-mode-recompile-key \"C-r\"\n\n# Kill the compile pane (default: \u003cprefix\u003e k)\nset -g @compile-mode-kill-key \"C-k\"\n\n# Height of the compile pane (e.g. 25%, 10 for lines)\nset -g @compile-mode-height \"35%\"\n\n# File used to store command history\nset -g @compile-mode-history-file \"$HOME/.compile-history\"\n\n# Enable per-session history (on/off)\nset -g @compile-mode-session-history \"off\"\n\n# Base directory for per-session history files\nset -g @compile-mode-history-dir \"$HOME/.compile-history-dir\"\n\n# Key to open files from compiler errors while in copy-mode\nset -g @compile-mode-open-file-key \"Enter\"\n```\n\n## Error navigation\n\nWhen viewing the compile output in copy-mode, move the cursor to a line containing a compiler error (formatted as `path/to/file:line:col` or `path/to/file:line`) and press the key configured via `@compile-mode-open-file-key`. `tmux-compile` extracts the file path and line number and opens that location in Neovim. Make sure Neovim is running in another tmux pane so it can receive the command.\n\n## Contributing \u0026 development\n\nContributions are welcome! Feel free to open issues or pull requests on GitHub if you find bugs or have ideas for improvements. To hack on the plugin locally, clone the repository and source the script from your `tmux.conf`. There are no external dependencies besides tmux and bash. Keeping your changes simple and well-documented will make it easier to review and merge.\n\n## License\n\n`tmux-compile` is distributed under the MIT License. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexekdahl%2Ftmux-compile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexekdahl%2Ftmux-compile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexekdahl%2Ftmux-compile/lists"}