|
|
############################################################################### |
|
|
## Author: Shaun Reed | Contact: shaunrd0@gmail.com | URL: www.shaunreed.com ## |
|
|
## ## |
|
|
## A custom tmux multiplexer config / layout created for Manjaro i3 ## |
|
|
##+ Inspired by vim-powerline: https://github.com/Lokaltog/powerline ## |
|
|
## ## |
|
|
## This config created and tested with Powerline Consolas ## |
|
|
##+ https://github.com/Lokaltog/powerline-fonts ## |
|
|
##+ Some symbols may require Font Awesome 5 Free Solid ## |
|
|
## ## |
|
|
############################################################################### |
|
|
# .tmux.conf |
|
|
# |
|
|
# If symbols or powerline layout fail to appear... |
|
|
#+ Check your terminal emulator font settings include these fonts |
|
|
#+ Check that required fonts are installed |
|
|
# |
|
|
# Note: The use of 256colours in this file allows for portable color definitions between platforms and applications |
|
|
#+ Changing to a different color interpretation may result in some apps displaying colors differently than others |
|
|
#+ Vim plugin 'Colorizer' does not reflect the actual 256colour values |
|
|
#+ See https://jonasjacek.github.io/colors/ for a full list of 256colours |
|
|
|
|
|
# Settings for terminal text selection / copy options |
|
|
# + Source: https://www.seanh.cc/2020/12/27/copy-and-paste-in-tmux/ |
|
|
# + Depends: https://github.com/tmux-plugins/tmux-yank#linux |
|
|
set -g mouse on |
|
|
# These bindings are for X Windows only. If you're using a different |
|
|
# window system you have to replace the `xsel` commands with something |
|
|
# else. See https://github.com/tmux/tmux/wiki/Clipboard#available-tools |
|
|
bind -T copy-mode DoubleClick1Pane select-pane \; send -X select-word \; send -X copy-pipe-no-clear "xsel -i" |
|
|
bind -T copy-mode-vi DoubleClick1Pane select-pane \; send -X select-word \; send -X copy-pipe-no-clear "xsel -i" |
|
|
bind -n DoubleClick1Pane select-pane \; copy-mode -M \; send -X select-word \; send -X copy-pipe-no-clear "xsel -i" |
|
|
bind -T copy-mode TripleClick1Pane select-pane \; send -X select-line \; send -X copy-pipe-no-clear "xsel -i" |
|
|
bind -T copy-mode-vi TripleClick1Pane select-pane \; send -X select-line \; send -X copy-pipe-no-clear "xsel -i" |
|
|
bind -n TripleClick1Pane select-pane \; copy-mode -M \; send -X select-line \; send -X copy-pipe-no-clear "xsel -i" |
|
|
bind -n MouseDown2Pane run "tmux set-buffer -b primary_selection \"$(xsel -o)\"; tmux paste-buffer -b primary_selection; tmux delete-buffer -b primary_selection" |
|
|
|
|
|
set-option -s set-clipboard external |
|
|
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i" |
|
|
|
|
|
# Remap shortcut prefix from 'C-b' to 'C-z' |
|
|
#unbind C-b |
|
|
#set-option -g prefix C-z |
|
|
#bind-key C-z send-prefix |
|
|
set-option -g prefix C-b |
|
|
bind-key C-b send-prefix |
|
|
|
|
|
# Reload tmux.conf in this session |
|
|
bind r source-file ~/.tmux.conf |
|
|
|
|
|
bind h split-window -h |
|
|
bind v split-window -v |
|
|
|
|
|
# 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 |
|
|
|
|
|
# Can't use theme plugin without risk of repo update overwriting data? |
|
|
#source-file "${HOME}/.tmux-themepack/powerline/double/green.tmuxtheme" |
|
|
|
|
|
set-option -g status-position top |
|
|
# Status update interval |
|
|
set -g status-interval 1 |
|
|
# Basic status bar colors |
|
|
set -g status-style fg=colour240,bg=colour233 |
|
|
|
|
|
# Left side of status bar |
|
|
set -g status-left-style bg=colour233,fg=colour243 |
|
|
set -g status-left-length 40 |
|
|
# Note: No bold required, no BG reveal produced by symbol gaps on left side |
|
|
#+ Font: Powerline Consolas |
|
|
set -g status-left "#[fg=colour233,bg=colour100,bold] #S #[fg=colour100,bg=colour240,nobold]#[fg=colour233,bg=colour240] #(whoami) #[fg=colour240,bg=colour235]#[fg=colour240,bg=colour235] #(hostname) #[fg=colour235,bg=colour233]#[fg=colour240,bg=colour233]" |
|
|
|
|
|
# Right side of status bar |
|
|
set -g status-right-style bg=colour233,fg=colour243 |
|
|
set -g status-right-length 100 |
|
|
# Note: Powerline font requires alternate of bold on right side |
|
|
# Corrects gap on right of character that reveals BG color |
|
|
#+ Font: Powerline Consolas |
|
|
set -g status-right "#[fg=colour235,bg=colour233,bold]#[fg=colour240,bg=colour235,nobold] %H:%M:%S #[fg=colour240,bg=colour235,bold]#[fg=colour233,bg=colour240,nobold] %d-%b-%y #[fg=colour100,bg=colour240,bold]#[fg=colour233,bg=colour100,bold] #(cd #{pane_current_path}; basename `git rev-parse --show-toplevel`) " |
|
|
|
|
|
# Set gitmux to appear in center of tmux status bar |
|
|
run 'bash -c "if command -v $HOME/go/bin/gitmux &>/dev/null; then test -f $HOME/.gitmux.conf || $HOME/go/bin/gitmux -printcfg > $HOME/.gitmux.conf; fi"' |
|
|
set -g window-status-current-format "#($HOME/go/bin/gitmux -cfg $HOME/.gitmux.conf \"#{pane_current_path}\")" |
|
|
# Or if you don't want gitmux |
|
|
#set -g window-status-current-format "#[fg=colour255,bg=colour233]#[fg=colour100,nobold] #(whoami)@#H #[fg=colour255,bg=colour233,nobold]" |
|
|
|
|
|
# Current window status |
|
|
set -g window-status-current-style bg=colour233,fg=colour100 |
|
|
# Window with activity status |
|
|
set -g window-status-activity-style bg=colour233,fg=colour245 |
|
|
# Window separator |
|
|
set -g window-status-separator "" |
|
|
# Window status alignment |
|
|
set -g status-justify centre |
|
|
# Pane border |
|
|
set -g pane-border-style bg=default,fg=colour238 |
|
|
# Active pane border |
|
|
set -g pane-active-border-style bg=default,fg=colour100 |
|
|
# Pane number indicator |
|
|
set -g display-panes-colour colour233 |
|
|
set -g display-panes-active-colour colour245 |
|
|
# Clock mode |
|
|
set -g clock-mode-colour colour100 |
|
|
set -g clock-mode-style 24 |
|
|
# Message |
|
|
set -g message-style bg=colour100,fg=black |
|
|
# Command message |
|
|
set -g message-command-style bg=colour233,fg=black |
|
|
set -g default-terminal "screen-256color" |
|
|
# Mode |
|
|
set -g mode-style bg=colour100,fg=colour235 |
|
|
|
|
|
# List of plugins and their settings |
|
|
set -g @plugin 'tmux-plugins/tpm' |
|
|
set -g @plugin 'nhdaly/tmux-better-mouse-mode' |
|
|
set -g @scroll-speed-num-lines-per-scroll 2 |
|
|
set -g @plugin 'tmux-plugins/tpm' |
|
|
set -g @plugin 'tmux-plugins/tmux-yank' |
|
|
set -g @yank_action 'copy-pipe-no-clear' |
|
|
bind -T copy-mode C-c send -X copy-pipe-no-clear "xsel -i --clipboard" |
|
|
bind -T copy-mode-vi C-c send -X copy-pipe-no-clear "xsel -i --clipboard" |
|
|
#set -g @plugin 'tmux-plugins/tmux-sensible' |
|
|
#set -g @plugin 'kristijanhusak/tmux-simple-git-status' |
|
|
# 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 -b '~/.tmux/plugins/tpm/tpm' |
|
|
|
|
|
|