aboutsummaryrefslogtreecommitdiff
path: root/tmux/tmux.conf.m4
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-04-23 02:50:12 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-04-23 02:50:12 +1200
commit374572486f07d375ad11ff9049e42b3bfe406d92 (patch)
treed7c9abfba68f3b5825d871349907fd0e6a0ee169 /tmux/tmux.conf.m4
parent535660daa076ad6b4c5143719b5860f95314b0d1 (diff)
downloaddotfiles-374572486f07d375ad11ff9049e42b3bfe406d92.tar.gz
dotfiles-374572486f07d375ad11ff9049e42b3bfe406d92.zip
Allow specifying color for tmux
Diffstat (limited to 'tmux/tmux.conf.m4')
-rw-r--r--tmux/tmux.conf.m4137
1 files changed, 137 insertions, 0 deletions
diff --git a/tmux/tmux.conf.m4 b/tmux/tmux.conf.m4
new file mode 100644
index 00000000..ac19ebe3
--- /dev/null
+++ b/tmux/tmux.conf.m4
@@ -0,0 +1,137 @@
+# My tmux session is no-display land because I attach to it with all sorts of
+# terminal clients, including PuTTY, so I don't always have X forwarding
+# available and therefore it's not appropriate to set the display
+set-environment -gru DISPLAY
+
+# Force the browser to be Lynx in case we inherited a non-null DISPLAY
+set-environment -g BROWSER 'lynx'
+
+# The only environment variables I want tmux to update for me are SSH_CLIENT
+# and SSH_CONNECTION, both of which are occasionally useful
+set-option -g update-environment 'SSH_CLIENT SSH_CONNECTION'
+
+# Setting this prevents each new pane being a login shell, purely for
+# efficiency reasons; I've not yet encountered a situation where I need tmux to
+# create login shells
+set-option -g default-command "$SHELL"
+
+# All of my terminals are 256 colors, so use the appropriate termcap/terminfo,
+# and unset COLORFGBG and COLORTERM to stop programs getting confused
+set-option -g default-terminal 'screen-256color'
+set-environment -gru COLORFGBG
+set-environment -gru COLORTERM
+
+# Change the prefix to ^A rather than the default of ^B, because I'm a godless
+# GNU Screen refugee, and also I like using ^B in my shell and in Vim more
+unbind-key C-b
+set-option -g prefix C-a
+bind-key a send-prefix
+
+# Repeating the prefix switches to the last window and back, a GNU Screen
+# feature that's hardwired into my brain now
+bind-key C-a last-window
+
+# Quick ways to kill single windows and the whole server
+bind-key '/' confirm-before 'kill-window'
+bind-key '\' confirm-before 'kill-server'
+
+# Slightly more intuitive way to split windows
+bind-key '_' split-window -v
+bind-key '|' split-window -h
+
+# Switch to the last active pane
+bind-key Tab last-pane
+
+# Use the vi mode for tmux interaction behaviour in copy and choice modes
+set-window-option -g mode-keys vi
+
+# Detach with Alt-M, no prefix required
+bind-key -n M-m detach
+
+# Vim-like pane resizing
+bind-key -r '+' resize-pane -U 5
+bind-key -r '-' resize-pane -D 5
+bind-key -r '<' resize-pane -L 5
+bind-key -r '>' resize-pane -R 5
+
+# Vim-like pane switching
+bind-key h select-pane -L
+bind-key j select-pane -D
+bind-key k select-pane -U
+bind-key l select-pane -R
+
+# Vim-like keys for visual mode and yanking therefrom
+bind-key -t vi-copy 'v' begin-selection
+bind-key -t vi-copy 'y' copy-selection
+bind-key -t vi-copy Escape cancel
+
+# Join and break panes
+bind-key J choose-window "join-pane -h -s '%%'"
+bind-key B break-pane -d
+
+# Select only sessions in the choose-tree menu, not the whole tree of sessions
+# and windows, I prefer to drill down
+bind-key s choose-session
+
+# Session title on the left side of the status bar
+set-option -g status-left '[#S] '
+
+# Hostname and the current date on the right side of the status bar
+set-option -g status-right ' [#H] #(date +"%F %T")'
+
+# Update the status bar every second
+set-option -g status-interval 1
+
+# The first window in a session has index 1, rather than 0
+set-option -g base-index 1
+
+# Don't worry about timeouts for key combinations, as I don't use Escape as
+# meta and prefer things to be snappier
+set-option -g escape-time 0
+
+# Keep plenty of history
+set-option -g history-limit 100000
+
+# Don't interfere with my system clipboard
+set-option -g set-clipboard off
+
+# Only force individual windows to the smallest attached terminal size, not
+# whole sessions
+set-window-option -g aggressive-resize on
+
+# If I don't set a title on a window, use the program name for the window title
+set-window-option -g automatic-rename on
+
+# However, don't let terminal escape sequences rename my windows
+set-window-option -g allow-rename off
+
+# Window titles are the window index, a colon, the window or command name, and
+# any activity or alert indicators
+set-window-option -g window-status-format "#I:#W#F"
+
+# Message dialogs are white on blue
+set-option -g message-style "bg=colour18,fg=colour231"
+
+# Window choosers are white on blue
+set-window-option -g mode-style "bg=colour18,fg=colour231"
+
+# Pane borders are always in dark gray
+set-option -g pane-border-style "fg=TMUX_COLOR"
+set-option -g pane-active-border-style "fg=TMUX_COLOR"
+
+# Inactive windows have a slightly grayed-out background and default text
+set-option -g window-style "bg=colour232,fg=colour248"
+set-option -g window-active-style "bg=colour0,fg=colour15"
+
+# The status bar defaults to light gray on dark gray, which applies to the left
+# and right status bar sections described in status-left and status-right above
+set-option -g status-style "bg=TMUX_COLOR,fg=colour248"
+
+# Titles of windows default to black text with no embellishment
+set-window-option -g window-status-style "fg=colour16"
+
+# The title of the active window is in white rather than black
+set-window-option -g window-status-current-style "fg=colour231"
+
+# A window with a bell has a title with a red background until cleared
+set-window-option -g window-status-bell-style "bg=colour9"