{"id":51095617,"url":"https://github.com/gufranco/tmux-sensible-revamped","last_synced_at":"2026-06-24T06:02:15.917Z","repository":{"id":366272273,"uuid":"1275596311","full_name":"gufranco/tmux-sensible-revamped","owner":"gufranco","description":"Sensible tmux defaults normalized across every tmux version (1.9+), OS, and terminal. Truecolor, OSC52 clipboard, undercurl, bug fixes. Non-destructive, 95%+ tested","archived":false,"fork":false,"pushed_at":"2026-06-21T03:49:01.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-21T05:05:12.843Z","etag":null,"topics":["bash","clipboard","configuration","dotfiles","osc52","sensible-defaults","shell","terminal","tmux","tmux-plugin","tmux-sensible","tpm","truecolor"],"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-06-20T22:46:57.000Z","updated_at":"2026-06-21T03:49:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gufranco/tmux-sensible-revamped","commit_stats":null,"previous_names":["gufranco/tmux-sensible-revamped"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gufranco/tmux-sensible-revamped","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-sensible-revamped","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-sensible-revamped/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-sensible-revamped/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-sensible-revamped/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gufranco","download_url":"https://codeload.github.com/gufranco/tmux-sensible-revamped/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gufranco%2Ftmux-sensible-revamped/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34719307,"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-24T02:00:07.484Z","response_time":106,"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":["bash","clipboard","configuration","dotfiles","osc52","sensible-defaults","shell","terminal","tmux","tmux-plugin","tmux-sensible","tpm","truecolor"],"created_at":"2026-06-24T06:02:14.877Z","updated_at":"2026-06-24T06:02:15.876Z","avatar_url":"https://github.com/gufranco.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1\u003etmux-sensible-revamped\u003c/h1\u003e\n\n**Sensible tmux defaults that normalize behavior across every tmux version, OS, and terminal, without clobbering your config.**\n\n[![Tests](https://github.com/gufranco/tmux-sensible-revamped/actions/workflows/tests.yml/badge.svg)](https://github.com/gufranco/tmux-sensible-revamped/actions/workflows/tests.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n\u003c/div\u003e\n\n**30+** normalized settings · **tmux 1.9 to 3.5** · **Linux, macOS, WSL** · **63** tests · **95%+** coverage\n\nOne config that behaves the same regardless of the tmux version, the operating system, the terminal emulator, and what is running inside the pane. Every option is gated to the tmux versions that support it, so the same plugin runs cleanly on every tmux TPM supports, from 1.9 up. Truecolor, the system clipboard, undercurl, and extended keys are enabled per detected capability, and several long-standing terminal bugs are worked around. Your own explicit settings always win.\n\nBuilt from [tmux-plugin-template](https://github.com/gufranco/tmux-plugin-template).\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eVersion-aware\u003c/strong\u003e\u003cbr\u003eEach option is applied only on the tmux versions that support it, so nothing errors from 1.9 to 3.5.\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eTerminal-aware\u003c/strong\u003e\u003cbr\u003eTruecolor, OSC 52 clipboard, undercurl, and CSI u keys are enabled per detected capability, with per-emulator fixes.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eClipboard everywhere\u003c/strong\u003e\u003cbr\u003eCopy lands in the system clipboard on Wayland, X11, macOS, and WSL, and over SSH through OSC 52.\u003c/td\u003e\n\u003ctd\u003e\u003cstrong\u003eNon-destructive\u003c/strong\u003e\u003cbr\u003ePreference options are set only when you have not changed them, so explicit configuration is never overwritten.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## What it normalizes\n\nOptions above your tmux version are skipped silently. The minimum is tmux 1.9, the floor TPM supports.\n\n| Area | Settings | Min tmux |\n|------|----------|----------|\n| Latency and focus | `escape-time 10` (kills the vim ESC delay), `focus-events on` | 1.9 |\n| Color | `default-terminal tmux-256color` with a `screen-256color` fallback, truecolor via `terminal-features ,*:RGB` or the legacy `Tc` override | 3.2 for features, any for the override |\n| Underlines | undercurl and colored underline overrides (`Smulx`, `Setulc`) | 3.0 |\n| Clipboard and capabilities | `set-clipboard on`, `allow-passthrough on`, and the `clipboard`, cursor color, cursor style, focus, and title terminal features | on any, 3.2, 3.3 |\n| Extended keys | `extended-keys on` on terminals that support CSI u, the `extkeys` feature, `extended-keys-format csi-u` | 3.2, 3.5 for the format |\n| Scrollback and status | `history-limit 50000`, `display-time 4000`, `status-interval 5`, `repeat-time 1000` | any |\n| Window and pane | `base-index 1`, `pane-base-index 1`, `renumber-windows on`, `automatic-rename on`, `aggressive-resize on` for normal clients, off under iTerm2 control mode | 1.6 and 1.7 where noted |\n| Copy mode | `mode-keys` from `$EDITOR`, system-clipboard yank and mouse-drag bindings for vi and emacs keys | any |\n\nIt also carries over every default binding from upstream tmux-sensible, each set only when the key is still free: `prefix + R` reloads the config resolving the path in XDG order, the prefix letter switches to the last window, `C-p` and `C-n` move between windows, and `send-prefix` is wired when the prefix is not `C-b`. The macOS `reattach-to-user-namespace` wrapper is installed only when that legacy helper is present.\n\n## Install\n\nWith [TPM](https://github.com/tmux-plugins/tpm), add to `~/.tmux.conf`:\n\n```tmux\nset -g @plugin 'gufranco/tmux-sensible-revamped'\n```\n\nThen press `prefix + I` to install. Place it early so your own settings, sourced later, take precedence.\n\nManual install:\n\n```bash\ngit clone https://github.com/gufranco/tmux-sensible-revamped ~/.tmux/plugins/tmux-sensible-revamped\nrun-shell ~/.tmux/plugins/tmux-sensible-revamped/sensible-revamped.tmux\n```\n\n## Behavior notes\n\n- **Your config wins.** Scrollback, display time, status interval, repeat time, base index, and the terminal type are applied only when still at the tmux default, so a value you set yourself is left alone.\n- **Nothing noisy is forced.** It does not touch activity monitoring, the title format, or the mouse, so your own choices there are never overridden.\n- **Mouse stays off.** Enabling the mouse breaks terminal-native selection for many users, so this plugin does not touch it.\n- **Prefix is untouched.** It keeps `C-b`, matching upstream tmux-sensible.\n- **Clipboard order.** The copy command is chosen by environment: Wayland `wl-copy`, WSL `clip.exe`, macOS `pbcopy`, X11 `xclip` then `xsel`. With none available it relies on `set-clipboard on` and OSC 52, which also carries the clipboard back over SSH.\n\n## Known bugs it works around\n\n| Symptom | Fix |\n|---------|-----|\n| vim or neovim lag when leaving insert mode | `escape-time 10` |\n| Truecolor not working inside tmux | `default-terminal tmux-256color` plus the `RGB` capability, not a non-256 terminal type |\n| Italics rendering as reverse video | `tmux-256color` instead of `screen-256color` |\n| Clipboard not propagating over SSH | `set-clipboard on` and the OSC 52 `clipboard` feature |\n| iTerm2 native integration breaking on resize | `aggressive-resize` is off only under iTerm2 control mode (a client-attached hook on tmux 3.0+), on everywhere else |\n| Apple Terminal.app | left at 256 colors, since it has neither truecolor nor OSC 52 |\n\n## Compatibility\n\nWorks on every tmux version TPM supports, 1.9 and up, on Linux (x86_64 and arm64), macOS (Intel and Apple Silicon), and WSL. Capabilities such as truecolor, OSC 52 clipboard, undercurl, and extended keys also depend on the outer terminal supporting them. iTerm2, Alacritty, Kitty, WezTerm, Ghostty, Konsole, Windows Terminal, and recent xterm support the full set; GNOME Terminal lacks OSC 52; Apple Terminal.app lacks truecolor and OSC 52.\n\n## Development\n\n```bash\nmake test    # bats suite\nmake lint    # shellcheck\nmake coverage  # kcov line coverage on Linux\n```\n\nThe decision logic lives in [`src/lib/sensible/sensible.sh`](src/lib/sensible/sensible.sh) as pure, seam-backed helpers, and the applier in [`src/sensible.sh`](src/sensible.sh) runs under a dry-run mode so the full version matrix is validated without a live tmux.\n\n## License\n\n[MIT](LICENSE), copyright Gustavo Franco.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgufranco%2Ftmux-sensible-revamped","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgufranco%2Ftmux-sensible-revamped","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgufranco%2Ftmux-sensible-revamped/lists"}