Slide 1

Slide 1 text

tmux or how I learned to just compile it locally and not wait for it to get installed on sandbox - TERMINAL MULTIPLEXER Wednesday, December 5, 12

Slide 2

Slide 2 text

what is tmux? Wednesday, December 5, 12

Slide 3

Slide 3 text

what is tmux? tmux is a terminal multiplexer: it enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached. Wednesday, December 5, 12

Slide 4

Slide 4 text

screenshots Wednesday, December 5, 12

Slide 5

Slide 5 text

AWESOME! Wednesday, December 5, 12

Slide 6

Slide 6 text

event better... Wednesday, December 5, 12

Slide 7

Slide 7 text

our goal: doing this Wednesday, December 5, 12

Slide 8

Slide 8 text

tmux vs. screen Wednesday, December 5, 12

Slide 9

Slide 9 text

a consistent, well- documented command interface, with the same syntax whether used interactively, as a key binding, or from the shell Wednesday, December 5, 12

Slide 10

Slide 10 text

in other words sane configuration Wednesday, December 5, 12

Slide 11

Slide 11 text

easily scriptable from the shell Wednesday, December 5, 12

Slide 12

Slide 12 text

tmux can split vertically screen requires a patch Wednesday, December 5, 12

Slide 13

Slide 13 text

tmux bible Wednesday, December 5, 12

Slide 14

Slide 14 text

So, how did I install tmux? Wednesday, December 5, 12

Slide 15

Slide 15 text

libevent $ wget http://sourceforge.net/projects/levent/files/latest/download $ tar xfz libevent-2.0.17-stable.tar.gz $ cd libevent-2.0.17-stable/ $ /configure—prefix=/home/jlotito $ make $ make install Wednesday, December 5, 12

Slide 16

Slide 16 text

tmux $ wget http://sourceforge.net/projects/tmux/files/latest/download $ tar xfz tmux-1.6.tar.gz $ cd tmux-1.6 $ ./configure—prefix=/home/jlotito Wednesday, December 5, 12

Slide 17

Slide 17 text

tmux cont. $ ./configure—prefix=/home/jlotito CPPFLAGS=”-I$HOME/include” LDFLAGS=”-static -L$HOME/include -L$HOME/lib” $ make $ make install $ export PATH=~/bin:$PATH $ tmux -V tmux 1.6 Wednesday, December 5, 12

Slide 18

Slide 18 text

If you have permissions, you can do it. Wednesday, December 5, 12

Slide 19

Slide 19 text

sandbox vim: 7.0 my vim: 7.3 Wednesday, December 5, 12

Slide 20

Slide 20 text

:set rnu Wednesday, December 5, 12

Slide 21

Slide 21 text

Wednesday, December 5, 12

Slide 22

Slide 22 text

but you shouldn’t have to set things up Wednesday, December 5, 12

Slide 23

Slide 23 text

$ cd $ mkdir bin $ cp ~/../jlotito/bin/tmux ~/bin $ export PATH=~/bin:$PATH Wednesday, December 5, 12

Slide 24

Slide 24 text

$ tmux Wednesday, December 5, 12

Slide 25

Slide 25 text

prefix = CTRL + b This is the default prefix It’s run before every command prefix d This means type ‘CTRL + b’ and then type ‘d’. Wednesday, December 5, 12

Slide 26

Slide 26 text

prefix d Detaches from the current tmux session In other words, it exits tmux Wednesday, December 5, 12

Slide 27

Slide 27 text

detach do it Wednesday, December 5, 12

Slide 28

Slide 28 text

$ tmux attach reattaches to the tmux session Wednesday, December 5, 12

Slide 29

Slide 29 text

do it now Wednesday, December 5, 12

Slide 30

Slide 30 text

Multiple sessions You can have them We won’t discuss them today Wednesday, December 5, 12

Slide 31

Slide 31 text

prefix c create a new window (or tab) Wednesday, December 5, 12

Slide 32

Slide 32 text

prefix # ‘prefix 1’ takes you to tab #1 Wednesday, December 5, 12

Slide 33

Slide 33 text

prefix w provides a list of windows available ‘j’ and ‘k’ to scroll the selections Wednesday, December 5, 12

Slide 34

Slide 34 text

prefix % That’s not 5, but ‘%’, which means prefix SHIFT+5 This splits the pane in half Wednesday, December 5, 12

Slide 35

Slide 35 text

prefix x In the lower portion of tmux, you’ll see it ask you: kill pane 2? (y/n) type ‘y’ Wednesday, December 5, 12

Slide 36

Slide 36 text

prefix “ split horizontally Wednesday, December 5, 12

Slide 37

Slide 37 text

prefix o switch between panes Wednesday, December 5, 12

Slide 38

Slide 38 text

prefix CTRL + o move panes around layout Wednesday, December 5, 12

Slide 39

Slide 39 text

PREFIX SPACE change layout of panes Wednesday, December 5, 12

Slide 40

Slide 40 text

Try scrolling in a pane haha Wednesday, December 5, 12

Slide 41

Slide 41 text

prefix [ CTRL u : up a lot CTRL d: down a lot Love alot. j : up a line d : down a line q: quit Wednesday, December 5, 12

Slide 42

Slide 42 text

Configuration $ touch ~/.tmux.conf Wednesday, December 5, 12

Slide 43

Slide 43 text

CTRL + B is awkward # Prefix Config set -g prefix C-a unbind C-b bind C-a send-prefix Wednesday, December 5, 12

Slide 44

Slide 44 text

prefix = CTRL + a Remap CAPS LOCK to CTRL. Wednesday, December 5, 12

Slide 45

Slide 45 text

Make it responsive # Changing the default delay set -sg escape-time 1 Wednesday, December 5, 12

Slide 46

Slide 46 text

Easy config changes # Easy config changes bind r source-file ~/.tmux.conf \; display "Reloaded!" Wednesday, December 5, 12

Slide 47

Slide 47 text

Easy Pane Spitting # Splitting Panes bind \ split-window -h bind - split-window -v Wednesday, December 5, 12

Slide 48

Slide 48 text

Easy Pane Movement # Movement keys, vim style bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R Wednesday, December 5, 12

Slide 49

Slide 49 text

move one pane left prefix h Wednesday, December 5, 12

Slide 50

Slide 50 text

Pane Resizing # Pane resizing, vim style bind H resize-pane -L 5 bind J resize-pane -D 5 bind K resize-pane -U 5 bind L resize-pane -R 5 Wednesday, December 5, 12

Slide 51

Slide 51 text

Try the pane resizing Don’t forget to run this command prefix r Wednesday, December 5, 12

Slide 52

Slide 52 text

Let’s make resizing easier by repeating # Pane resizing, vim style bind -r H resize-pane -L 5 bind -r J resize-pane -D 5 bind -r K resize-pane -U 5 bind -r L resize-pane -R 5 Wednesday, December 5, 12

Slide 53

Slide 53 text

resize prefix L -r You can hold it down, and it will keep moving Wednesday, December 5, 12

Slide 54

Slide 54 text

Start at 1 # Windows and panes index renumbering set -g base-index 1 setw -g pane-base-index 1 Wednesday, December 5, 12

Slide 55

Slide 55 text

Basic UI # Colors set -g status-fg white set -g status-bg black Wednesday, December 5, 12

Slide 56

Slide 56 text

Window movement # Window Movement bind -r C-h select-window -t :- bind -r C-l select-window -t :+ Wednesday, December 5, 12

Slide 57

Slide 57 text

or... prefix w Wednesday, December 5, 12

Slide 58

Slide 58 text

or... prefix # #: 0-9 Wednesday, December 5, 12

Slide 59

Slide 59 text

timtowtdi • is Wednesday, December 5, 12

Slide 60

Slide 60 text

tmux & screen notes http://www.dayid.org/os/notes/tm.html Wednesday, December 5, 12

Slide 61

Slide 61 text

book http://pragprog.com/book/bhtmux/tmux Wednesday, December 5, 12

Slide 62

Slide 62 text

web http://tmux.sourceforge.net/ Wednesday, December 5, 12

Slide 63

Slide 63 text

we were using tmux 1.6 latest is tmux 1.7 Wednesday, December 5, 12

Slide 64

Slide 64 text

new in 1.7 tmux configuration files now support line-continuation with a "\" at the end of a line. * New option status-position to move the status line to the top or bottom of the screen. * Enforce history-limit option when clearing the screen. * Give each window a unique id, like panes but prefixed with @. * Add pane id to each pane in layout description (while still accepting the old form). * Provide defined ways to set the various default-path possibilities: ~ for home directory, . for server start directory, - for session start directory and empty for the pane's working directory (the default). All can also be used as part of a relative path (eg -/foo). Also provide -c flags to neww and splitw to override default-path setting. * Add -l flag to send-keys to send input literally (without translating key names). * Allow a single option to be specified to show-options to show just that option. * New command "move-pane" (like join-pane but allows the same window). * join-pane and move-pane commands learn "-b" option to place the pane to the left or above. * Support for bracketed-paste mode. * Allow send-keys command to accept hex values. * Add locking around "start-server" to avoid race-conditions. * break-pane learns -P/-F arguments for display formatting. * set-option learns "-q" to make it quiet, and not print out anything. * copy mode learns "wrap-search" option. * Add a simple form of output rate limiting by counting the number of certain C0 sequences (linefeeds, backspaces, carriage returns) and if it exceeds a threshold (current default 250/millisecond), start to redraw the pane every 100 milliseconds instead of making each change as it comes. Two configuration options - c0-change-trigger and c0-change-interval. * find-window learns new flags: "-C", "-N", "-T" to match against either or all of a window's content, name, or title. Defaults to all three options if none specified. * find-window automatically selects the appropriate pane for the found matches. * show-environment can now accept one option to show that environment value. * Exit mouse mode when end-of-screen reached when scrolling with the mouse wheel. * select-layout learns -u and -U for layout history stacks. * kill-window, detach-client, kill-session all learn "-a" option for killing all but the current thing specified. * move-window learns "-r" option to renumber window sequentially in a session. * New session option "renumber-windows" to automatically renumber windows in a session when a window is closed. (see "move-window -r"). * Only enter copy-mode on scroll up. * choose-* and list-* commands all use "-F" for format specifiers. * When spawning external commands, the value from the "default-shell" option is now used, rather than assuming /bin/sh. * New choose-tree command to render window/sessions as a tree for selection. * display-message learns new format options. * For linked-windows across sessions, all flags for that window are now cleared across sessions. * Lots and lots of bug fixes, fixing memory-leaks, etc. * Various manpage improvements. Wednesday, December 5, 12

Slide 65

Slide 65 text

fin. Wednesday, December 5, 12