############################################################################### ## 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'