MCPcopy Index your code
hub / github.com/aaronjanse/3mux

github.com/aaronjanse/3mux @v1.1.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.1.0 ↗
320 symbols 712 edges 41 files 87 documented · 27%
README

3mux is a terminal multiplexer with out-of-the-box support for search, mouse-controlled scrollback, and i3-like keybindings. Imagine tmux with a smaller learning curve and more user-friendly defaults.

Features

  • batteries included
  • i3-like keybindings
  • session management
  • optionally interactive
  • self-documenting
  • search
  • scrollback
  • mouse support
  • drag to resize panes
  • click to select pane
  • scrollwheel

Key Bindings

Key(s) Description
Alt+Enter

Alt+N | Create a new pane |Alt+Shift+F | Make the selected pane fullscreen. Useful for copying text |Alt+←/↓/↑/→

Alt+h/j/k/l | Select an adjacent pane |Alt+Shift+←/↓/↑/→

Alt+Shift+h/j/k/l | Move the selected pane |Alt+R | Enter resize mode. Resize selected pane with arrow keys or h/j/k/l. Exit using any other key(s) |Alt+/ | Enter search mode. Type query, navigate between results with arrow keys or n/N |Scroll | Move through scrollback |Shift | Many terminal emulators support selecting text while pressing this key

Supported tmux Bindings

Key(s) Description
Ctrl+b " Split horizontally
Ctrl+b % Split vertically
Ctrl+b { Move pane left
Ctrl+b } Move pane right

Supported screen Bindings

Key(s) Description
Ctrl+a | Split horizontally
Ctrl+a S Split vertically
Ctrl+a Tab Cycle forward through panes

Installation Instructions

Binary (recommended)
  1. Download the .tar.gz for your OS from the Releases tab
  2. tar -zxvf YOUR_FILE.tar.gz
  3. Add the now-extracted ./3mux to your $PATH
Using Nix flakes (requires Nix 2.4+)
nix run github:aaronjanse/3mux
Package manager

Packages for 3mux

Building from source
  1. Install Golang
  2. go get github.com/aaronjanse/3mux
  3. Run 3mux to launch the terminal multiplexer

To update 3mux, run go get -u github.com/aaronjanse/3mux

Terminal.app

Warning: Arrow-key-controlled pane management is currently unsupported on Terminal.app. Please use the default vim-like keybindings instead.
Preferences > Profiles > Keyboard > Use Option as Meta Key

iTerm2

Preferences > Profiles > Keys > Option Key > Esc+

Miscellaneous

3mux searches XDG_CONFIG_HOME to find its config. If it cannot, it writes a config to ~/.config/3mux/config.toml upon the first run. Modifiers in shortcuts (e.g. Alt) are case-insensitive.

You can detect if you're running a script inside 3mux by checking if THREEMUX is equal to 1.

Contributing

All help is welcome! You can help the project by filing issues recording what works well, what doesn't work well, and/or a feature you want. Pull Requests would be very much appreciated.

Related Projects

Extension points exported contracts — how you extend this code

Node (Interface)
(no doc) [3 implementers]
wm/tiling.go
Renderer (Interface)
(no doc) [2 implementers]
ecma48/renderer.go
Parsed (Interface)
Parsed could be a simple character or maybe an escape sequence
ecma48/parsed.go
Container (Interface)
(no doc) [1 implementers]
wm/tiling.go
NewPaneFunc (FuncType)
(no doc)
wm/tiling.go

Core symbols most depended-on inside this repo

wrap
called by 77
ecma48/parser.go
HandleCh
called by 22
ecma48/renderer.go
parseSemicolonNumSeq
called by 18
ecma48/parser.go
RedrawWindow
called by 16
vterm/ops.go
GetRenderRect
called by 11
wm/tiling.go
Write
called by 9
render/render.go
refreshRenderRect
called by 9
wm/universe.go
setCursorPos
called by 9
vterm/ops.go

Shape

Method 189
Struct 60
Function 47
TypeAlias 19
Interface 4
FuncType 1

Languages

Go100%

Modules by API surface

ecma48/parsed.go49 symbols
wm/tiling.go32 symbols
fuzz/main.go22 symbols
ecma48/parser.go17 symbols
vterm/ops.go16 symbols
wm/universe.go14 symbols
render/render.go14 symbols
pane/pane.go14 symbols
main.go13 symbols
wm/split.go10 symbols
wm/pane-misc.go8 symbols
pane/search.go8 symbols

Dependencies from manifests, versioned

github.com/BurntSushi/xdgv0.0.0-2013080414113 · 1×
github.com/aaronjanse/ptyv1.1.14 · 1×
github.com/kardianos/osextv0.0.0-2019022217332 · 1×
github.com/mattn/go-runewidthv0.0.9 · 1×
github.com/npat-efault/pollerv2.0.0+incompatible · 1×
github.com/nu7hatch/gouuidv0.0.0-2013122120053 · 1×
golang.org/x/cryptov0.0.0-2020051022350 · 1×
golang.org/x/textv0.3.2 · 1×

For agents

$ claude mcp add 3mux \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact