GuanhuaYe
codex-tmux-scroll
Shellโœจ New

Mouse-first fullscreen scrolling for Codex CLI, tuned for tmux workflows

Last updated Jul 9, 2026
230
Stars
13
Forks
0
Issues
+39
Stars/day
Attention Score
75
Language breakdown
Shell 100.0%
โ–ธ Files click to expand
README

codex-tmux-scroll

codex-tmux-scroll is a Codex CLI build for people who run Codex inside long tmux sessions.

It changes tmux mouse interaction: the mouse wheel opens a static conversation history view while the input prompt stays pinned at the bottom, mouse drag selection copies text from history, and double-clicking the prompt jumps back to the latest output. Aside from these tmux interaction changes, it behaves like the normal codex command.

Install

Linux x86_64:

curl -fsSL https://raw.githubusercontent.com/GuanhuaYe/codex-tmux-scroll/main/install.sh | bash

After it finishes, use it directly:

codex-tmux-scroll

The installer writes:

  • binary: ~/.local/lib/codex-tmux-scroll/codex
  • wrapper: ~/.local/bin/codex-tmux-scroll
It does not replace your global codex command.

Use Inside tmux

Enable tmux mouse forwarding (You only need to configure this once; new tmux sessions will use it automatically.):

set -g mouse on

Start or attach a tmux session, enter your project, then run codex-tmux-scroll. Usage example:

tmux new -s work
cd /path/to/project
codex-tmux-scroll

All arguments are forwarded to the bundled Codex CLI, so normal Codex launch commands work:

codex-tmux-scroll resume
codex-tmux-scroll --dangerously-bypass-approvals-and-sandbox
codex-tmux-scroll --dangerously-bypass-approvals-and-sandbox resume

What It Does In tmux

  • Mouse wheel scrolls the Codex conversation instead of triggering prompt
history navigation.
  • The scrolled history view is static: new output does not move the content you
are reviewing.
  • A percentage indicator shows the current history position while scrolling.
  • The input prompt remains visible at the bottom while you review history.
  • Scrolling back to the bottom keeps the full history viewport plus the prompt.
  • Double-click the prompt area to jump back to the latest output.
  • Mouse drag selection works in the conversation history: select text with the
left mouse button and release to copy it to the clipboard.
  • Existing local Codex auth, config, AGENTS.md, and project workflows continue
to work.

Upstream Updates

This repository deliberately does not vendor the full Codex source tree. The tmux-specific changes are kept as a patch:

patches/codex-tmux-scroll-v0.139.0.patch

When Codex CLI releases a new version, this project is updated by rebasing that patch onto the new upstream tag, rebuilding the binary, and publishing a new GitHub release.

Build the current release locally:

CODEXUPSTREAMURL=<codex-cli-upstream-git-url> \
./scripts/build-from-source.sh

By default, the build script uses the patch file matching CODEXUPSTREAMREF. For example, rust-v0.139.0 uses:

patches/codex-tmux-scroll-v0.139.0.patch

The build uses the Rust toolchain selected by the upstream source tree. To force a specific toolchain, set CODEXRUSTTOOLCHAIN.

Package a release archive:

CODEXUPSTREAMURL=<codex-cli-upstream-git-url> \
./scripts/package-release.sh

To update this project for a newer upstream Codex version:

  • Choose the new upstream tag, for example rust-v0.140.0.
  • First test whether the current patch still applies:
CODEXUPSTREAMURL=<codex-cli-upstream-git-url> \
CODEXUPSTREAMREF=rust-v0.140.0 \
CODEXTMUXSCROLLPATCHFILE=patches/codex-tmux-scroll-v0.139.0.patch \
./scripts/build-from-source.sh
  • If it builds and the tmux behavior still works, copy the patch forward:
cp patches/codex-tmux-scroll-v0.139.0.patch \
  patches/codex-tmux-scroll-v0.140.0.patch
  • If the patch no longer applies, rebase it on the new upstream tag:
rm -rf worktrees/codex-rust-v0.140.0
git clone --depth 1 --branch rust-v0.140.0 \
  <codex-cli-upstream-git-url> \
  worktrees/codex-rust-v0.140.0
cd worktrees/codex-rust-v0.140.0
git apply --reject ../../patches/codex-tmux-scroll-v0.139.0.patch

Fix any rejected hunks, build and test the patched source, then save the new patch:

cd codex-rs
cargo build -p codex-cli --release
cd ..
git diff --binary -- . ':(exclude)codex-rs/Cargo.lock' > ../../patches/codex-tmux-scroll-v0.140.0.patch
  • Package the new release:
CODEXUPSTREAMURL=<codex-cli-upstream-git-url> \
CODEXUPSTREAMREF=rust-v0.140.0 \
./scripts/package-release.sh

If you already built and tested a binary, package it without rebuilding:

CODEXTMUXSCROLLBINARYPATH=/path/to/target/release/codex \
./scripts/package-release.sh
  • Publish a new GitHub release, for example v0.140.0-tmux.1, with:
dist/codex-tmux-scroll-x86_64-unknown-linux-gnu.tar.gz
dist/codex-tmux-scroll-x86_64-unknown-linux-gnu.tar.gz.sha256
install.sh

Users can update by rerunning the same installer command from the Install section; it downloads the latest release.

Release tags follow:

v<upstream-codex-version>-tmux.<patch-version>

Example:

v0.139.0-tmux.1
v0.140.0-tmux.1
v0.140.0-tmux.2

Status

  • Current base: Codex CLI 0.139.0
  • Current platform: Linux x86_64

License

Apache-2.0. See LICENSE.

Third-party notices are kept in legal/THIRDPARTYNOTICES.md.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท GuanhuaYe/codex-tmux-scroll ยท Updated daily from GitHub