dotfiles/.tmux.conf

179 lines
6.3 KiB
Plaintext

#---------------------------------------------------------------
# file: ~/.tmux/conf
# vim:fenc=utf-8:nu:ai:si:et:ts=4:sw=4:fdm=indent:fdn=1:ft=conf:
##############################
# _
# | |_ _ __ ___ _ ___ __
# | __| '_ ` _ \| | | \ \/ /
# | |_| | | | | | |_| |> <
# \__|_| |_| |_|\__,_/_/\_\
#
#############################
# Tmuxline theme-file
#source-file ~/.config/nvim/nord
# use vim motion keys while in copy mode
setw -g mode-keys vi
############################################################################
# Reset Prefix
############################################################################
set -g prefix C-a
bind-key a send-prefix # for nested tmux sessions
############################################################################
# Global options
############################################################################
# large history
set-option -g history-limit 10000
# colors
set -g default-terminal "st-256color" #"xterm-256color" # "screen-256color"
# basic settings
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
# Automatically set window title
setw -g automatic-rename
# use mouse # More on mouse support http://floriancrouzat.net/2010/07/run-tmux-with-mouse-support-in-mac-os-x-terminal-app/
set -g mouse on
set -g history-limit 30000
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
# vi movement keys
set-option -g status-keys vi
############################################################################
# Status Bar
############################################################################
set -g status-left-length 70
#set -g status-left '#[fg=black,bg=cyan] #(~/.config/Scripts/showip) #[fg=black,bg=blue,nobold,noitalics,nounderscore] '
set -g status-interval 1
set-option -g status-position top
# 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'
#set-option -g status-justify centre
#set -g status-right '#{prefix_highlight} | %a %Y-%m-%d %H:%M'
###########################################################################
#Tmuxline
###########################################################################
############################################################################
# Unbindings
############################################################################
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
############################################################################
# reload tmux conf
bind-key r source-file ~/.tmux.conf \; display-message "Config reloaded..."
bind Escape copy-mode
# new split in current pane (horizontal / vertical)
bind-key c split-window -v # split pane horizontally
bind-key v 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
# switch panes using Alt-arrow without prefix
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
############################################################################
# windows
############################################################################
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 A command-prompt "rename-window %%"
# 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
set -g set-clipboard on
############################################################################
# panes
############################################################################
# Navigation ---------------------------------------------------------------
# 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 ---------------------------------------------------------------
bind-key C-h resize-pane -L
bind-key C-j resize-pane -D
bind-key C-k resize-pane -U
bind-key C-l resize-pane -R
############################################################################
# layouts
############################################################################
bind o select-layout "active-only"
bind M-- select-layout "even-vertical"
bind M-| select-layout "even-horizontal"
bind M-r rotate-window
# focus on first window
# select-window -t 0
###########################################################################
# List of plugins
###########################################################################
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin "arcticicestudio/nord-tmux"
##########################################################################
# Plugins settings
##########################################################################
set -g @resurrect-capture-pane-contents 'on'
set -g @resurrect-processes ':all:'
set -g @continuum-restore 'on'
set -g @continuum-save-interval '10'
# for neovim
set -g @resurrect-strategy-nvim 'session'
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'