dotfiles/config/tmux/tmux.conf
2023-02-24 18:41:50 +00:00

150 lines
5.8 KiB
Plaintext

######################################################################
# Tmux Configuration File (~/.tmux.conf) #
######################################################################
# Config for Tmux multiplexer (requires version >= v2.4) #
# Sets preferences, keybindings and configures plugins #
# Tmux needs to be re-sourced or killed for changes to work #
# For docs and more info, see: https://github.com/lissy93/dotfiles #
# #
# Licensed under MIT (C) Alicia Sykes 2022 <https://aliciasykes.com> #
######################################################################
######################################################################
# Basics #
######################################################################
# Set Tmux prefix keys (Ctrl+B or `)
set-option -g prefix C-b
set-option -g prefix2 `
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Allow mouse support
set -g mouse on
# Use wider color pallete
set -g default-terminal screen-256color
# Set bigger history limit
set -g history-limit 20000
# Set Esc delay after prefix
set -sg escape-time 20
# Keep Tmux alive when the initial command is finished
set -g remain-on-exit off
# Sets parent terminal title, same as current Tmux window
set -g set-titles on
set -g set-titles-string "#I:#W"
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
######################################################################
# Navigation #
######################################################################
# Allow Alt+Arrow to switch pains
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
# Split window horizontally (h) / veritcally (v)
bind v split-window -v
bind h split-window -h
# Activity Monitoring (for when something happens in another pain)
set -g monitor-activity on
set -g visual-activity on
######################################################################
# Pop-Up Menus #
######################################################################
# Prefix + Ctrl J shows a session list popup selector with fzf
bind C-j display-popup -E "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^$(tmux display-message -p '#S')\$\" | fzf --reverse | xargs tmux switch-client -t"
# Show htop on Prefix + Ctrl H
bind C-h display-popup -E "htop"
######################################################################
# Status Bar #
######################################################################
set -g status-bg colour0
set -g status-fg colour7
######################################################################
# Plugin Imports and Configurations #
######################################################################
# Set install location for plugins
set-environment -g TMUX_PLUGIN_MANAGER_PATH "${XDG_DATA_HOME}/tmux/plugins"
# Install productivity plugins
set -g @plugin 'tmux-plugins/tmux-sessionist' # Easily manage sessions
set -g @plugin 'tmux-plugins/tmux-continuum' # Contineous saves environment for next time
set -g @plugin 'tmux-plugins/tmux-resurrect' # Restart previous environment on launch
set -g @plugin 'tmux-plugins/tmux-sidebar' # Shows file tree on the left, `tab`
set -g @plugin 'tmux-plugins/tmux-yank' # Save text to system clipboard
set -g @plugin 'tmux-plugins/tmux-open' # Opens highlighted addresses / files: `o`
set -g @plugin 'jaclu/tmux-menus' # Context menus for common tasks: `#`
set -g @plugin 'laktak/extrakto' # Clipboard copy and output completions
# Install status bar plugins
set -g @plugin 'xamut/tmux-weather'
set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'MunifTanjim/tmux-mode-indicator'
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'kristijanhusak/tmux-simple-git-status'
# Set status line content
set -g status-interval 2
set -g status-right-length 180
set -g status-right '#{tmux_mode_indicator} Online: #{online_status} | #{weather} | %a %d/%m/%Y %H:%M | #{battery_icon_status} #{battery_percentage}'
set -g status-left-length 180
set -g status-left "CPU: #{cpu_fg_color}#{cpu_percentage} #{cpu_temp_icon} #{cpu_temp}#{cpu_temp_format}#[default] | MEM: #{ram_fg_color}#{ram_percentage} #[default]| #{simple_git_status}"
# More plugin options
set -g @menus_trigger '#'
set-option -g @tmux-weather-location "London"
set -g @cpu_low_bg_color "#[bg=0]"
set -g @cpu_low_fg_color "#[fg=3]"
set -g @cpu_medium_bg_color "#[bg=0]"
set -g @cpu_medium_fg_color "#[fg=3]"
set -g @cpu_high_bg_color "#[bg=0]"
set -g @cpu_high_fg_color "#[fg=1]"
set -g @cpu_temp_format "%0.1f°"
set -g @cpu_temp_low_icon "❄️"
set -g @cpu_temp_medium_icon "🌡️"
set -g @cpu_temp_high_icon "🔥"
set -g @cpu_temp_low_bg_color "#[bg=0]"
set -g @cpu_temp_low_fg_color "#[fg=20]"
set -g @cpu_temp_medium_bg_color "#[bg=0]"
set -g @cpu_temp_medium_fg_color "#[fg=11]"
set -g @cpu_temp_high_bg_color "#[bg=0]"
set -g @cpu_temp_high_fg_color "#[fg=9]"
set -g @ram_low_bg_color "#[bg=0]"
set -g @ram_low_fg_color "#[fg=2]"
set -g @ram_medium_bg_color "#[bg=0]"
set -g @ram_medium_fg_color "#[fg=3]"
set -g @ram_high_bg_color "#[bg=0]"
set -g @ram_high_fg_color "#[fg=2]"
# Import TPM
run "${XDG_DATA_HOME}/tmux/plugins/tpm/tpm"