Sync changes from franck
[misc.git] / .tmux.conf
1 # Ganneffs tmux config
2 # the colors in here DO NEED a 256 colors terminal. I am using
3 # the rxvt from package rxvt-unicode-256color
4
5 # Screen like Ctrl-a for prefix
6 unbind C-b
7 set -g prefix ^A
8 # And pass it through when pressing twice
9 bind a send-prefix
10
11 # Allow ^A^c to create a new window, not just ^Ac
12 bind ^c new-window -c "#{pane_current_path}"
13 bind c new-window -c "#{pane_current_path}"
14
15 # last active window
16 bind-key C-a last-window
17
18 # Bind function keys.
19 # -n means - no need to press ^A first.
20 bind-key -n C-F1 select-window -t 1
21 bind-key -n C-F2 select-window -t 2
22 bind-key -n C-F3 select-window -t 3
23 bind-key -n C-F4 select-window -t 4
24 bind-key -n C-F5 select-window -t 5
25 bind-key -n C-F6 select-window -t 6
26 bind-key -n C-F7 select-window -t 7
27 bind-key -n C-F8 select-window -t 8
28 bind-key -n C-F9 select-window -t 9
29 bind-key -n C-F10 select-window -t 10
30 bind-key -n C-F11 select-window -t 11
31 bind-key -n C-F12 select-window -t 12
32
33 # And let Meta-number switch to the pane with that number
34 # This drops the M-1 .. M-5 keys to switch the layout,
35 # i just cycle through that with C-a space when I switch them.
36 bind-key M-1 select-pane -t 1
37 bind-key M-2 select-pane -t 2
38 bind-key M-3 select-pane -t 3
39 bind-key M-4 select-pane -t 4
40 bind-key M-5 select-pane -t 5
41 bind-key M-6 select-pane -t 6
42 bind-key M-7 select-pane -t 7
43 bind-key M-8 select-pane -t 8
44 bind-key M-9 select-pane -t 9
45 bind-key M-0 select-pane -t 10
46
47 # vi* style pane movement
48 bind-key h select-pane -L
49 bind-key C-h select-pane -L
50 bind-key j select-pane -D
51 bind-key C-j select-pane -D
52 #bind-key k select-pane -U
53 #bind-key C-k select-pane -U
54 bind-key l select-pane -R
55 bind-key C-l select-pane -R
56
57 bind-key -r "<" swap-window -t -1
58 bind-key -r ">" swap-window -t +1
59
60 bind-key -r H resize-pane -L 5
61 bind-key -r J resize-pane -D 5
62 bind-key -r K resize-pane -U 5
63 bind-key -r L resize-pane -R 5
64
65 bind-key "|" split-window -h -c "#{pane_current_path}"
66 bind-key "-" split-window -v -c "#{pane_current_path}"
67
68 # Toggle activity monitoring
69 bind-key m setw monitor-activity
70
71 # Force a window width/height. Good for stupid things like ilo.
72 bind-key C-w setw force-width 80
73 bind-key C-u setw force-width 0
74 bind-key C-i setw force-height 0
75 bind-key C-h setw force-height 24
76
77 # In "multi-screen" mode, synchronized panes that is, toggle synced input
78 bind-key C-s setw synchronize-panes
79
80 # | and - for pane splitting
81 unbind-key % # Remove default binding since we’re replacing
82 bind-key | split-window -h
83 # of course this looses "delete buffer"
84 bind-key - split-window -v
85
86 # open ssh to somewhere.
87 bind-key S command-prompt -p "SSH Target: " "new-window -n %1 'exec ssh %1'"
88
89 # reload the config
90 bind-key R source-file ~/.tmux.conf \; display-message "tmux.conf reloaded!"
91
92 # confirm before killing a window or the server
93 bind-key k confirm kill-window
94 #bind-key K confirm kill-server
95
96 # open a man page in new window
97 bind-key / command-prompt "split-window 'exec man %%'"
98
99 # Pipe any output in the active pane into a file
100 bind-key C-p pipe-pane -o 'cat >>~/tmuxoutput.#I-#P'
101
102 # Less ugly key for the copy mode
103 bind-key Escape copy-mode -u
104
105 # Start window numbering at 1
106 set -g base-index 1
107 # Like base-index, but set the starting index for pane numbers.
108 set-window-option -g pane-base-index 1
109
110 # No delay in command sequences
111 set -s escape-time 0
112
113 # Rather than constraining window size to the maximum size of any client 
114 # connected to the *session*, constrain window size to the maximum size of any 
115 # client connected to *that window*. Much more reasonable.
116 setw -g aggressive-resize on
117
118 # Activity monitoring
119 #setw -g monitor-activity on
120 #set -g visual-activity on
121
122 # Some default options
123
124 # Show or hide the status line.
125 set -g status on
126 # Update the status bar every interval seconds.  By default, updates
127 # will occur every 15 seconds.  A setting of zero disables redrawing at
128 # interval.
129 set -g status-interval 1
130
131 #### COLOUR (Solarized 256)
132
133 # default statusbar colors
134 set-option -g status-bg colour235 #base02
135 set-option -g status-fg colour136 #yellow
136 set-option -g status-attr default
137
138 # default window title colors
139 set-window-option -g window-status-fg colour244 #base0
140 set-window-option -g window-status-bg default
141 #set-window-option -g window-status-attr dim
142
143 # active window title colors
144 set-window-option -g window-status-current-fg colour166 #orange
145 set-window-option -g window-status-current-bg default
146 #set-window-option -g window-status-current-attr bright
147
148 # pane border
149 set-option -g pane-border-fg colour235 #base02
150 set-option -g pane-active-border-fg colour240 #base01
151
152 # message text
153 set-option -g message-bg colour235 #base02
154 set-option -g message-fg colour166 #orange
155
156 # pane number display
157 set-option -g display-panes-active-colour colour33 #blue
158 set-option -g display-panes-colour colour166 #orange
159
160 # clock
161 set-window-option -g clock-mode-colour colour64 #green
162
163 # Display string to the left of the status bar.  string will be passed
164 # through strftime(3) before being used.  By default, the session name
165 # is shown. string may contain any of the following special character
166 # sequences:
167 #
168 #       Character pair    Replaced with
169 #       #(shell-command)  First line of the command's
170 #                         output
171 #       #[attributes]     Colour or attribute change
172 #       #H                Hostname of local host
173 #       #h                Hostname of local host without
174 #                         the domain name
175 #       #F                Current window flag
176 #       #I                Current window index
177 #       #P                Current pane index
178 #       #S                Session name
179 #       #T                Current window title
180 #       #W                Current window name
181 #       ##                A literal `#'
182 #
183 # The #(shell-command) form executes `shell-command' and
184 # inserts the first line of its output.  Note that shell
185 # commands are only executed once at the interval specified
186 # by the status-interval option: if the status line is
187 # redrawn in the meantime, the previous result is used.
188 # Shell commands are executed with the tmux global
189 # environment set.
190 #
191 # The window title (#T) is the title set by the program
192 # running within the window using the OSC title setting
193 # sequence, for example:
194 #
195 #       $ printf '\033]2;My Title\033\\'
196 #
197 # When a window is first created, its title is the
198 # hostname.
199 #
200 # #[attributes] allows a comma-separated list of attributes
201 # to be specified, these may be `fg=colour' to set the
202 # foreground colour, `bg=colour' to set the background
203 # colour, the name of one of the attributes (listed under
204 # the message-attr option) to turn an attribute on, or an
205 # attribute prefixed with `no' to turn one off, for example
206 # nobright.  Examples are:
207 #
208 #       #(sysctl vm.loadavg)
209 #       #[fg=yellow,bold]#(apm -l)%%#[default] [#S]
210 #
211 # Where appropriate, special character sequences may be
212 # prefixed with a number to specify the maximum length, for
213 # example `#24T'.
214 #
215 # By default, UTF-8 in string is not interpreted, to enable
216 # UTF-8, use the status-utf8 option.
217 #set -g status-left ""
218 #set -g status-right "#(uptime|awk '{print $11}')"
219
220 #set -g status-right "#[fg=green,bold]%H:%M:%S" # %d-%b-%y
221 set -g status-left '#[fg=colour14,bold]%d-%m-%y %H:%M:%S'
222 set -g status-left-length 42
223 set -g status-right '#[fg=colour143,bold]#(cut -d " " -f 1-4 /proc/loadavg)#[default] #[default] #[fg=green,bold]#H#[default]'
224 set -g status-right-length 52
225
226 # Enable utf8
227 set -g utf8 on
228
229 # Instruct tmux to treat top-bit-set characters in the status-left and
230 # status-right strings as UTF-8; notably, this is important for wide
231 # characters.  This option defaults to off.
232 set -g status-utf8 on
233
234 set-window-option -g window-status-format '#P###I:#W#F'
235 set-window-option -g window-status-current-format '#P###I:#W#F'
236
237 # Monitor for activity in the window.  Windows with activity are
238 # highlighted in the status line.
239 #set-window-option -g monitor-activity on
240
241 # Set the amount of time for which status line messages and other on-screen
242 # indicators are displayed.  time is in milliseconds.
243 set -g display-time 3000
244
245 # We like zsh
246 set -g default-command zsh
247
248 # Set the number of error or information messages to save in the message
249 # log for each client.  The default is 20.
250 set -g message-limit 100
251
252 # If on, ring the terminal bell when an activity, content or silence alert occurs.
253 set -g bell-on-alert on
254 # listen for activity on all windows
255 set -g bell-action any
256
257 # Set the maximum number of lines held in window history.
258 # This setting applies only to new windows - existing window
259 # histories are not resized and retain the limit at the point
260 # they were created.
261 set -g history-limit 100000
262
263 # If on, tmux captures the mouse and allows panes to be resized by
264 # dragging on their borders.
265 # Kills selection, so turned off.
266 set -g mouse-resize-pane off