[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80531":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":13,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":12,"lastSyncTime":25,"discoverSource":26},80531,"tmux.expose","cesarferreira\u002Ftmux.expose","cesarferreira","Mission Control-style tmux session switcher with live terminal previews",null,"Rust",64,2,1,0,3,1.43,"MIT License",false,"main",true,[],"2026-06-12 02:04:03","\u003Cdiv align=\"center\">\n  \u003Ch1>tmux.expose\u003C\u002Fh1>\n\n  \u003Cp>\u003Cstrong>Mission Control-style tmux session switching from a fast terminal UI.\u003C\u002Fstrong>\u003C\u002Fp>\n\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcesarferreira\u002Ftmux.expose\u002Factions\u002Fworkflows\u002Frust-tests.yml\">\u003Cimg alt=\"CI\" src=\"https:\u002F\u002Fgithub.com\u002Fcesarferreira\u002Ftmux.expose\u002Factions\u002Fworkflows\u002Frust-tests.yml\u002Fbadge.svg\">\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fcrates.io\u002Fcrates\u002Ftmux-expose\">\u003Cimg alt=\"Crates.io\" src=\"https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Ftmux-expose\">\u003C\u002Fa>\n    \u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green\">\n  \u003C\u002Fp>\n\n  \u003Cp>\n    \u003Ca href=\"#install\">Install\u003C\u002Fa>\n    &nbsp;·&nbsp;\n    \u003Ca href=\"#quickstart\">Quickstart\u003C\u002Fa>\n    &nbsp;·&nbsp;\n    \u003Ca href=\"#tmux-plugin\">tmux Plugin\u003C\u002Fa>\n    &nbsp;·&nbsp;\n    \u003Ca href=\"#configuration\">Configuration\u003C\u002Fa>\n  \u003C\u002Fp>\n\n  \u003Cbr>\n\n  \u003Cimg src=\"assets\u002Frecording.gif\" width=\"880\" alt=\"tmux.expose in action\">\n\u003C\u002Fdiv>\n\n---\n\n## Why tmux.expose\n\nSwitching tmux sessions with a list works, but it gives you names instead of context. **tmux.expose** shows every session as a live text thumbnail so you can jump to the right workspace visually.\n\n- **See before switching.** Browse sessions in a responsive grid with live pane previews.\n- **Terminal-native.** A small Rust TUI that runs inside your terminal or a tmux popup.\n- **Color-aware previews.** tmux ANSI colors are preserved in thumbnails.\n- **Fast keyboard flow.** Move with arrows or `hjkl`, switch with `Enter`, leave with `q` or `Esc`.\n- **TPM-ready.** Install it as a tmux plugin and launch with `Alt+e`.\n\n## Install\n\nThe shortest path is crates.io:\n\n```bash\ncargo install tmux-expose\n```\n\n## tmux Plugin\n\nInstall with [TPM](https:\u002F\u002Fgithub.com\u002Ftmux-plugins\u002Ftpm):\n\n```tmux\nset -g @plugin 'cesarferreira\u002Ftmux.expose'\n```\n\nReload tmux config, then press `prefix + I` to install plugins.\n\nThe plugin binds `Alt+e` by default:\n\n```tmux\nAlt+e\n```\n\nIt opens:\n\n```bash\ntmux display-popup -w 100% -h 100% -E \"tmux-expose\"\n```\n\nWith the default binding, press `Alt+e` again while tmux.expose is open to close it without switching.\n\n\n## Configuration\n\nCustomize the tmux plugin before the `@plugin` line:\n\n```tmux\nset -g @tmux-expose-key 'E'\nset -g @tmux-expose-key-table 'prefix'\nset -g @tmux-expose-width '100%'\nset -g @tmux-expose-height '100%'\nset -g @tmux-expose-anchor 'center'\nset -g @tmux-expose-style 'bg=colour234'\nset -g @tmux-expose-border-style 'fg=colour245'\nset -g @tmux-expose-command 'tmux-expose --columns 2'\n\nset -g @plugin 'cesarferreira\u002Ftmux.expose'\n```\n\n`@tmux-expose-anchor` accepts `center`, `top`, `bottom`, `left`, or `right`. For example,\nuse `set -g @tmux-expose-anchor 'bottom'` with `set -g @tmux-expose-height '50%'` to show\ntmux.expose in the bottom half of the screen.\n\n`@tmux-expose-style` maps to `display-popup -s`, and `@tmux-expose-border-style` maps to\n`display-popup -S`.\n\n## Custom Example\n\nThis configuration binds tmux.expose to `prefix + s` and opens it as a bottom-anchored popup\nusing 60% of the screen height:\n\n```tmux\nset -g @tmux-expose-key 's'\nset -g @tmux-expose-key-table 'prefix'\nset -g @tmux-expose-width '100%'\nset -g @tmux-expose-height '60%'\nset -g @tmux-expose-anchor 'bottom'\nset -g @tmux-expose-style 'bg=colour234'\nset -g @tmux-expose-border-style 'fg=colour245'\n\nset -g @plugin 'cesarferreira\u002Ftmux.expose'\n```\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fcustom-example.png\" width=\"880\" alt=\"Custom tmux.expose popup example\">\n\u003C\u002Fp>\n\nIt produces a popup equivalent to:\n\n```bash\ntmux display-popup -w 100% -h 60% -y '#{popup_pane_bottom}' -s 'bg=colour234' -S 'fg=colour245' -e TMUX_EXPOSE_TOGGLE_KEY=s -E \"tmux-expose\"\n```\n\n\nUse a direct binding if you do not use TPM:\n\n```tmux\nbind-key -T root M-e display-popup -w 100% -h 100% -e TMUX_EXPOSE_TOGGLE_KEY=M-e -E \"tmux-expose\"\n```\n\n\u003Ca id=\"quickstart\">\u003C\u002Fa>\n## Quickstart\n\nRun the UI directly inside tmux:\n\n```bash\ntmux-expose\n```\n\nOr open it in a tmux popup:\n\n```bash\ntmux display-popup -w 100% -h 100% -E \"tmux-expose\"\n```\n\nBy default, thumbnails are sized into a balanced grid that fits all sessions on screen. Override the layout when you want larger previews or a fixed grid:\n\n```bash\ntmux-expose --thumbnail-width 48\ntmux-expose --columns 2\ntmux-expose --thumbnail-width 48 --columns 2\n```\n\nRefresh interval defaults to 500ms:\n\n```bash\ntmux-expose --refresh-interval 500\n```\n\n## Controls\n\n| Key | Action |\n|---|---|\n| `Type` | Filter sessions by fuzzy name |\n| `Arrow keys` | Move selection |\n| `Mouse click` | Switch to clicked session |\n| `Backspace` | Edit search query |\n| `Esc` while searching | Clear search |\n| `Enter` | Switch to selected session |\n| `Esc` \u002F `Ctrl-C` | Quit without switching |\n\n\u003Ca id=\"tmux-plugin\">\u003C\u002Fa>\n\n\n## macOS Gesture Integration\n\nUse BetterTouchTool, Hammerspoon, Raycast, or another automation tool to trigger:\n\n```bash\ntmux display-popup -w 100% -h 100% -E \"tmux-expose\"\n```\n\nThe app itself is terminal-only and does not depend on macOS-specific APIs.\n\n## Development\n\nBefore opening a PR, run:\n\n```bash\nmake check\n```\n\n## License\n\nMIT &copy; Cesar Ferreira\n","tmux.expose 是一个用于 tmux 会话切换的工具，提供实时终端预览功能。它使用 Rust 编写，能够以 Mission Control 风格展示所有 tmux 会话的实时文本缩略图，使用户在切换会话前可以直观地看到每个会话的内容。该工具支持彩色预览、快速键盘导航，并且可以作为 tmux 插件通过 TPM 安装，方便快捷地集成到现有 tmux 环境中。适用于需要频繁切换 tmux 会话并希望提高工作效率的开发者和系统管理员。","2026-06-11 04:01:06","CREATED_QUERY"]