From d0654dbc635e41aa9c84935690161d26105f0885 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Thu, 23 Aug 2018 16:15:52 +0200 Subject: [PATCH] Tmux configuration --- files/tmux.conf | 199 +++++++++++++++++++++++++++++++++++++++++++++ tasks/dotfiles.yml | 20 ++++- 2 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 files/tmux.conf diff --git a/files/tmux.conf b/files/tmux.conf new file mode 100644 index 0000000..7f885b1 --- /dev/null +++ b/files/tmux.conf @@ -0,0 +1,199 @@ +set -g default-terminal "screen-256color" + +## Vim user config + +#Prefix is Ctrl-a +unbind C-b +set -g prefix C-space +bind C-space send-prefix + + +# C-space C-space will swap to last used window +bind-key C-space last-window + +#set -sg escape-time 1 +#set -g base-index 1 +#setw -g pane-base-index 1 + +#Mouse works as expected +set -g mouse on +#setw -g mode-mouse on +#set -g mouse-select-pane on +#set -g mouse-resize-pane on +#set -g mouse-select-window on + +set -g monitor-activity on +set -g visual-activity on + +setw -g mode-keys vi +set -g history-limit 10000 + +# y and p as in vim +bind Escape copy-mode +unbind p +bind p paste-buffer +#bind -t vi-copy 'v' begin-selection +#bind -t vi-copy 'y' copy-selection +#bind -t vi-copy 'Space' halfpage-down +#bind -t vi-copy 'Bspace' halfpage-up +bind-key -T copy-mode-vi 'v' send -X begin-selection +bind-key -T copy-mode-vi 'y' send -X copy-selection +bind-key -T copy-mode-vi 'Space' send -X halfpage-down +bind-key -T copy-mode-vi 'Bspace' send -X halfpage-up + +# Remap previous window +bind b previous-window + +# extra commands for interacting with the ICCCM clipboard +bind C-c run "tmux save-buffer - | xclip -i -sel clipboard" +bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer" + +# easy-to-remember split pane commands +bind | split-window -h +bind - split-window -v +unbind '"' +unbind % + +# # moving between panes with vim movement keys +# bind h select-pane -L +# bind j select-pane -D +# bind k select-pane -U +# bind l select-pane -R +# Smart pane switching with awareness of Vim splits. +# See: https://github.com/christoomey/vim-tmux-navigator +is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ + | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" +bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L" +bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D" +bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U" +bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R" +bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l" +bind-key -T copy-mode-vi C-h select-pane -L +bind-key -T copy-mode-vi C-j select-pane -D +bind-key -T copy-mode-vi C-k select-pane -U +bind-key -T copy-mode-vi C-l select-pane -R +bind-key -T copy-mode-vi C-\ select-pane -l + +# moving between windows with vim movement keys +bind -r C-h select-window -t :- +bind -r C-l select-window -t :+ + +# resize panes with vim movement keys +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 + +###################### +### DESIGN CHANGES ### +###################### + +# panes +set -g pane-border-fg black +set -g pane-active-border-fg brightred + +## Status bar design +# status line +# set -g status-utf8 on +set -g status-justify left +set -g status-bg default +set -g status-fg colour12 +set -g status-interval 2 + +# messaging +set -g message-fg black +set -g message-bg yellow +set -g message-command-fg blue +set -g message-command-bg black + +#window mode +setw -g mode-bg colour6 +setw -g mode-fg colour0 + +# window status +setw -g window-status-format " #F#I:#W#F " +setw -g window-status-current-format " #F#I:#W#F " +setw -g window-status-format "#[fg=magenta]#[bg=black] #I #[bg=cyan]#[fg=colour8] #W " +setw -g window-status-current-format "#[bg=brightmagenta]#[fg=colour8] #I #[fg=colour8]#[bg=colour14] #W " +setw -g window-status-current-bg colour0 +setw -g window-status-current-fg colour11 +setw -g window-status-current-attr dim +setw -g window-status-bg green +setw -g window-status-fg black +setw -g window-status-attr reverse + +# Info on left (I don't have a session display for now) +set -g status-left '' + +# loud or quiet? +set-option -g visual-activity off +set-option -g visual-bell off +set-option -g visual-silence off +set-window-option -g monitor-activity off +set-option -g bell-action none + +set -g default-terminal "screen-256color" + +# The modes { +setw -g clock-mode-colour colour135 +setw -g mode-attr bold +setw -g mode-fg colour196 +setw -g mode-bg colour238 + +# } +# The panes { + +set -g pane-border-bg colour235 +set -g pane-border-fg colour238 +set -g pane-active-border-bg colour236 +set -g pane-active-border-fg colour51 + +# } +# The statusbar { + +set -g status-position bottom +set -g status-bg colour234 +set -g status-fg colour137 +set -g status-attr dim +set -g status-left '#[fg=colour81,bg=colour241,bold] #S ' +set -g status-right '#[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour233,bg=colour245,bold] %H:%M:%S ' +set -g status-right-length 50 +set -g status-left-length 20 + +setw -g window-status-current-fg colour81 +setw -g window-status-current-bg colour238 +setw -g window-status-current-attr bold +setw -g window-status-current-format ' #I#[fg=colour250]:#[fg=colour255]#W#[fg=colour50]#F ' + +setw -g window-status-fg colour138 +setw -g window-status-bg colour235 +setw -g window-status-attr none +setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F ' + +setw -g window-status-bell-attr bold +setw -g window-status-bell-fg colour255 +setw -g window-status-bell-bg colour1 + +# } +# The messages { + +set -g message-attr bold +set -g message-fg colour232 +set -g message-bg colour166 + +# } + + +## Plugins +# Supports `github_username/repo` or full git repo URLs +set -g @tpm_plugins 'tmux-plugins/tpm' +set -g @tpm_plugins 'tmux-plugins/tmux-sensible' +# tmux-plugins/tmux-resurrect \ +# tmux-plugins/tmux-continuum \ + +## tmux-continuum: automatic restore +#set -g @continuum-restore 'on' + + +# Keep this line at the very bottom of tmux.conf. +run-shell '~/.tmux/plugins/tpm/tpm' diff --git a/tasks/dotfiles.yml b/tasks/dotfiles.yml index f014783..8edce4c 100644 --- a/tasks/dotfiles.yml +++ b/tasks/dotfiles.yml @@ -1,5 +1,5 @@ --- -- name: urxvt Xdefault +- name: Copy urxvt Xdefault template: src: files/Xdefaults dest: /home/{{ item.username }}/.Xdefaults @@ -22,3 +22,21 @@ become: yes become_user: aur_builder +- name: Clone TPM (tmux plugin manager) + git: + repo: https://github.com/tmux-plugins/tpm + dest: /home/{{ item.username }}/.tmux/plugins/tpm + version: master + accept_hostkey: yes + with_items: {{ me }} + +- name: Copy tmux.conf + template: + src: files/tmux.conf + dest: /home/{{ item.username }}/.tmux.conf + with_items: "{{ me }}" + +- name: Install tmuxinator + - gem: + name: tmuxinator + state: latest