• Stars
    star
    1,824
  • Rank 25,325 (Top 0.6 %)
  • Language
    Go
  • License
    MIT License
  • Created over 5 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Terminal multiplexer inspired by i3

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

Using Homebrew
brew update
brew install 3mux
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

More Repositories

1

dns-over-wikipedia

Redirect `.idk` domains using Wikipedia
Rust
1,525
star
2

asciidots

Esolang inspired by ASCII art
Python
1,111
star
3

dotfiles

My dotfiles as a Nix flake
Nix
54
star
4

nix-eval-lsp

Nix language server that evaluates code
Rust
54
star
5

marble-complete

Design a turing-complete marble run with ascii/unicode art
Python
53
star
6

gcat

Like `cat` but for gemini
Python
21
star
7

snippet-manager

The dead-simple snippet manager
CSS
15
star
8

bootstrapOS

[WIP] Bootstrap your own OS: from machine code to web server
HTML
10
star
9

serverless-chat

A serverless javascript chat client for LAN
JavaScript
8
star
10

jay

Journal from the command line with privacy & security
Go
5
star
11

stick-bug-ml

Framework for supervised machine learning systems
Jupyter Notebook
5
star
12

idea-bin

A private place to keep track of your ideas
JavaScript
4
star
13

better-ic-grade-viewer

A better grade viewer for Infinite Campus
Python
4
star
14

digitize

Submission for 2018-10 Digitize Hackathon
JavaScript
4
star
15

gsed

Minimalistic stream text editor written in Go
Go
3
star
16

gemini-language-support

VS Code extension to highlight text/gemini
3
star
17

pogo

My first project using JS: a pogo-stick game
CSS
3
star
18

paste-fixer

vscode extension to remove line numbers from pasted code.
JavaScript
3
star
19

asciidots-demo-backend

Backend for the AsciiDots online demo
Python
3
star
20

fhe-cpu

Fully Homomorphic CPU proof-of-concept
Go
3
star
21

ic-desktop

Desktop client for InfiniteCampus
JavaScript
2
star
22

vscode-nix-lsp

OBSOLETE
TypeScript
2
star
23

upe-lang

Tiny esolang created for Upsilon Pi Epsilon
Rust
2
star
24

floxpkgs

Nix
1
star
25

aaronjanse.github.io

HTML
1
star
26

upa-website

HTML
1
star
27

interlocking-braces

The esolang where code like {(}) is the norm
Python
1
star
28

generator-chisel-hdl

Yeoman generator for Chisel projects
Scala
1
star
29

rust-os

Rust
1
star
30

zbak

Easily create & replicate zfs snapshots
Rust
1
star
31

barcode

Generate our school id barcodes
HTML
1
star
32

2020

HTML
1
star
33

genetic-drift-simulator

An educational, online tool to simulate genetic drift
JavaScript
1
star
34

rpi-os

This does nothing useful so far
C
1
star
35

marble-complete-demo-backend

Backend to MarbleComplete demo
Python
1
star
36

simple-edit

Super simple markdown editor; fork of github.com/jbt/markdown-editor
JavaScript
1
star
37

samsung-gear-totp

Use your Samsung Gear as a 2nd factor
JavaScript
1
star
38

aarch64-to-flowchart

Visualize branching in decompiled aarch64 code
Python
1
star