Skip to content

Instantly share code, notes, and snippets.

@camwhite
Created May 30, 2019 20:37
Show Gist options
  • Save camwhite/f925caedd7daf71aebf171d42e2b40eb to your computer and use it in GitHub Desktop.
Save camwhite/f925caedd7daf71aebf171d42e2b40eb to your computer and use it in GitHub Desktop.
# | |_ _ __ ___ _ ___ __ #
# | __| '_ ` _ \| | | \ \/ / #
# | |_| | | | | | |_| |> < #
# \__|_| |_| |_|\__,_/_/\_\ #
# 1 0 | VIM | 2:bash 20:04
# [ Reset Prefix ] {{{1
set -g prefix C-a
bind-key a send-prefix # for nested tmux sessions
# }}}
# [ Global Options ] {{{1
set-option -g history-limit 15000 # Longer history
set-option -g default-shell /bin/zsh # Use zsh as default shell
set -s escape-time 1
set -g base-index 1 # Windows start at 1
set -g pane-base-index 1 # Panes start at 1
#set-window-option -g utf8 on
set-window-option -g xterm-keys on # for vim
set-window-option -g mode-keys vi # vi key
set-window-option -g monitor-activity on
#set-option -g status-position top # move status bar to the top
setw -g automatic-rename # Automatically set window title
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
#set -ga terminal-overrides ',xterm-256color:Tc'
#set -g -a terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
# [ Mouse ] {{{2
# use mouse # More on mouse support http://floriancrouzat.net/2010/07/run-tmux-with-mouse-support-in-mac-os-x-terminal-app/
#set -g mode-mouse on
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on
# }}}
# [ Colors ] {{{2
# TODO wtf is this
setw -g mode-bg black
set-option -g default-terminal "screen-256color" #"xterm-256color" # "screen-256color"
# Panes Currently All White
set-option -g pane-active-border-fg white
# set-option -g pane-border-fg white
set-option -g pane-active-border-fg black
set-option -g pane-border-fg black
set-window-option -g clock-mode-colour colour250 # Clock Color
set-window-option -g clock-mode-style 24
# }}}
# }}}
# [ Status Bar ] {{{
#set-option -g status-utf8 on
set-option -g status-interval 5
set-option -g visual-activity on
# Default Window Title Colors
set-option -g status-bg colour233
set-option -g status-fg colour240
# Active Window Title Colors
set-window-option -g window-status-current-fg colour220
set-window-option -g window-status-current-bg colour233
set-window-option -g window-status-current-fg colour246
setw -g window-status-current-attr default
# New Activity Title Colors
set-option -gw window-status-activity-bg colour233
set-option -gw window-status-activity-fg red
# Left Status
set-option -g status-left-length 30
set-option -g status-left-bg colour233
set-option -g status-left-fg colour220
#set-option -g status-left '#S #[fg=colour220]#I #[fg=colour220]#P'
#set-option -g status-left '#[bg=colour178] #[default] '
#set-option -g status-left ''
# Gold Left Status
#set-option -g status-left '#[fg=colour220]#S #[fg=colour220]#I #[fg=colour220]#P'
# Gray Left Status
set-option -g status-left '#[fg=colour240]#S #[fg=colour240]#I #[fg=colour240]#P'
# Window Status
set-option -g status-justify centre
setw -g window-status-current-format "#[fg=colour220]|#[default] #W #[fg=colour220]|#[default]"
#setw -g window-status-current-format "#[fg=black]|#[default] #W #[fg=black]|#[default]"
# Right Status
set-option -g status-right "Live Views: #[fg=colour220]#(curl -H \'Client-ID: wh10iximmj0dh5ku7bgqlg4a28ynn0\' -X GET https://api.twitch.tv/helix/streams\?user_login\=camandcode | json data[0].viewer_count )#[default] | #[fg=colour240]%R #[default]"
# Titles (window number, program name, active (or not)
set-option -g set-titles on
set-option -g set-titles-string '#H:#S.#I.#P #W #T'
# message text
set-option -g message-bg colour233
set-option -g message-fg colour220
# }}}
# [ Unbindings ] {{{1
#unbind [ # copy mode bound to escape key
unbind j
unbind C-b # unbind default leader key
unbind '"' # unbind horizontal split
unbind % # unbind vertical split
# }}}
# [ Bindings ] {{{1
# reload tmux conf
bind-key R source-file ~/.tmux.conf \; display-message "Config reloaded..."
#bind Escape copy-mode
bind-key - split-window -v # split pane horizontally
bind-key \ split-window -h # split pane vertically
# list panes
bind-key Space list-panes
# break-pane
bind-key Enter break-pane
# join-pane [-dhv] [-l size | -p percentage] [-s src-pane]
# [-t:dst-window.dst-pane] (destination window (dot) destination pane
# (alias: joinp)
#
#bind C-j command-prompt "joinp"
#bind C-j command-prompt "join-pane"
#bind-key j command-prompt "join-pane -s '%%'"
#bind-key j command-prompt "joinp -t:0"
#bind-key Space command-prompt "joinp -t:%%" # %% = prompt for window.pane [-V|H] # vert|hor split
# }}}
# [ Windows ] {{{1
bind C-j previous-window
bind C-k next-window
bind-key C-a last-window # C-a C-a for last active window
bind r command-prompt "rename-window %%"
bind s command-prompt "rename-session %%"
# By default, all windows in a session are constrained to the size of the
# smallest client connected to that session,
# even if both clients are looking at different windows.
# It seems that in this particular case, Screen has the better default
# where a window is only constrained in size if a smaller client
# is actively looking at it.
setw -g aggressive-resize on
# }}}
# [ Panes ] {{{1
# [ Navigation ] {{{2
# use the vim motion keys to move between panes
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
# }}}
# [ Resizing ] {{{2
bind-key -r H resize-pane -L 5
bind-key -r J resize-pane -D 5
bind-key -r K resize-pane -U 5
bind-key -r L resize-pane -R 5
bind-key -r Y resize-pane -L 1
bind-key -r W resize-pane -D 1
bind-key -r S resize-pane -U 1
bind-key -r O resize-pane -R 1
# }}}
# [ Swapping ] {{{2
bind-key { swap-pane -U
bind-key } swap-pane -D
# }}}
# [ Layouts ] {{{2
bind o select-layout "active-only"
bind M-- select-layout "even-vertical"
bind M-\ select-layout "even-horizontal"
bind M-r rotate-window
# }}}
# }}}
# [ Extras ] {{{1
# vi movement keys
# set-option -g status-keys vi
# }}}
# vim: set foldmethod=marker
set -g default-shell $SHELL
#set -g default-command "reattach-to-user-namespace -l ${SHELL}"
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# for neovim
set -g @resurrect-strategy-nvim 'session'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment