feat: tmux improvements
Added statusline configuration (colour, left length). Added tpm (tmux plugin manager). Added tmux-sessionizer script and some keybinds for it.
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -16,3 +16,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# explicity ignore zcoredump
 | 
					# explicity ignore zcoredump
 | 
				
			||||||
zsh/.zcomp*
 | 
					zsh/.zcomp*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# explicity ignore tmux plugins
 | 
				
			||||||
 | 
					tmux/plugins
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,9 @@
 | 
				
			|||||||
- install [ggman](https://github.com/tkw1536/ggman)
 | 
					- install [ggman](https://github.com/tkw1536/ggman)
 | 
				
			||||||
- install [pyenv](https://github.com/pyenv/pyenv) to $XDG_DATA_HOME/.pyenv
 | 
					- install [pyenv](https://github.com/pyenv/pyenv) to $XDG_DATA_HOME/.pyenv
 | 
				
			||||||
    - set `PYENV_ROOT` and use [pyenv-installer](https://github.com/pyenv/pyenv-installer)
 | 
					    - set `PYENV_ROOT` and use [pyenv-installer](https://github.com/pyenv/pyenv-installer)
 | 
				
			||||||
    - install [pyenv-default-packages](git clone https://github.com/jawshooah/pyenv-default-packages.git $(pyenv root)/plugins/pyenv-default-packages)
 | 
					    - install [pyenv-default-packages](https://github.com/jawshooah/pyenv-default-packages.git)
 | 
				
			||||||
    - symlink `.pyenv/default-packages` to `$PYENV_ROOT/default-packages`
 | 
					    - symlink `.pyenv/default-packages` to `$PYENV_ROOT/default-packages`
 | 
				
			||||||
- install [neovim](https://neovim.io/)
 | 
					- install [neovim](https://neovim.io/)
 | 
				
			||||||
    - follow `README.md` in [janezicmatej/nvim](https://github.com/janezicmatej/nvim/)
 | 
					    - follow `README.md` in [janezicmatej/nvim](https://github.com/janezicmatej/nvim/)
 | 
				
			||||||
 | 
					- install [tmux](https://github.com/tmux/tmux)
 | 
				
			||||||
 | 
					    - install [tmp](https://github.com/tmux-plugins/tpm) for plugins
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								tmux/tmux-sessionizer
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										26
									
								
								tmux/tmux-sessionizer
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ $# -eq 1 ]]; then
 | 
				
			||||||
 | 
					    selected=$1
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    selected=$(find -L $GGROOT -mindepth 1 -maxdepth 5 -type d -name .git  -prune | xargs -n 1 dirname | fzf)
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -z $selected ]]; then
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					selected_name=$(basename "$selected" | tr . _)
 | 
				
			||||||
 | 
					tmux_running=$(pgrep tmux)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -z $TMUX ]] && [[ -z $tmux_running ]]; then
 | 
				
			||||||
 | 
					    tmux new-session -s $selected_name -c $selected
 | 
				
			||||||
 | 
					    exit 0
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ! tmux has-session -t=$selected_name 2> /dev/null; then
 | 
				
			||||||
 | 
					    tmux new-session -ds $selected_name -c $selected
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tmux switch-client -t $selected_name
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
set -ga terminal-overrides ",xterm-256color:Tc"
 | 
					set -ga terminal-overrides ",xterm-256color:Tc"
 | 
				
			||||||
# set-option -g default-terminal "screen-256color"
 | 
					set-option -g default-terminal "screen-256color"
 | 
				
			||||||
set -s escape-time 0
 | 
					set -s escape-time 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unbind C-b
 | 
					unbind C-b
 | 
				
			||||||
@@ -10,6 +10,9 @@ bind-key C-s send-prefix
 | 
				
			|||||||
bind r source-file "$XDG_CONFIG_HOME/tmux/tmux.conf"
 | 
					bind r source-file "$XDG_CONFIG_HOME/tmux/tmux.conf"
 | 
				
			||||||
set -g base-index 1
 | 
					set -g base-index 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -g status-style 'bg=#45403d fg=#d4be98'
 | 
				
			||||||
 | 
					set -g status-left-length 30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set-window-option -g mode-keys vi
 | 
					set-window-option -g mode-keys vi
 | 
				
			||||||
bind -T copy-mode-vi v send-keys -X begin-selection
 | 
					bind -T copy-mode-vi v send-keys -X begin-selection
 | 
				
			||||||
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'pbcopy'
 | 
					bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'pbcopy'
 | 
				
			||||||
@@ -21,58 +24,11 @@ bind -r j select-pane -D
 | 
				
			|||||||
bind -r h select-pane -L
 | 
					bind -r h select-pane -L
 | 
				
			||||||
bind -r l select-pane -R
 | 
					bind -r l select-pane -R
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bind -r D neww -c "#{pane_current_path}" "nvim TODO.md"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bind -r D neww -c "#{pane_current_path}" "[[ -e TODO.md ]] && nvim TODO.md || nvim ~/.dotfiles/personal/todo.md"
 | 
					bind-key -r f run-shell "tmux neww ~/.config/tmux/tmux-sessionizer"
 | 
				
			||||||
 | 
					bind-key -r R run-shell "tmux neww ~/.config/tmux/tmux-sessionizer $XDG_CONFIG_HOME"
 | 
				
			||||||
 | 
					bind-key -r T run-shell "tmux neww ~/.config/tmux/tmux-sessionizer ~/Desktop/temp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# theme 
 | 
					# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
 | 
				
			||||||
 | 
					run '~/.config/tmux/plugins/tpm/tpm'
 | 
				
			||||||
## COLORSCHEME: gruvbox dark (medium)
 | 
					 | 
				
			||||||
set-option -g status "on"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# default statusbar color
 | 
					 | 
				
			||||||
set-option -g status-style bg=colour237,fg=colour223 # bg=bg1, fg=fg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# default window title colors
 | 
					 | 
				
			||||||
set-window-option -g window-status-style bg=colour214,fg=colour237 # bg=yellow, fg=bg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# default window with an activity alert
 | 
					 | 
				
			||||||
set-window-option -g window-status-activity-style bg=colour237,fg=colour248 # bg=bg1, fg=fg3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# active window title colors
 | 
					 | 
				
			||||||
set-window-option -g window-status-current-style bg=red,fg=colour237 # fg=bg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# pane border
 | 
					 | 
				
			||||||
set-option -g pane-active-border-style fg=colour250 #fg2
 | 
					 | 
				
			||||||
set-option -g pane-border-style fg=colour237 #bg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# message infos
 | 
					 | 
				
			||||||
set-option -g message-style bg=colour239,fg=colour223 # bg=bg2, fg=fg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# writing commands inactive
 | 
					 | 
				
			||||||
set-option -g message-command-style bg=colour239,fg=colour223 # bg=fg3, fg=bg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# pane number display
 | 
					 | 
				
			||||||
set-option -g display-panes-active-colour colour250 #fg2
 | 
					 | 
				
			||||||
set-option -g display-panes-colour colour237 #bg1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# clock
 | 
					 | 
				
			||||||
set-window-option -g clock-mode-colour colour109 #blue
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# bell
 | 
					 | 
				
			||||||
set-window-option -g window-status-bell-style bg=colour167,fg=colour235 # bg=red, fg=bg
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Theme settings mixed with colors (unfortunately, but there is no cleaner way)
 | 
					 | 
				
			||||||
set-option -g status-justify "left"
 | 
					 | 
				
			||||||
set-option -g status-left-style none
 | 
					 | 
				
			||||||
set-option -g status-left-length "80"
 | 
					 | 
				
			||||||
set-option -g status-right-style none
 | 
					 | 
				
			||||||
set-option -g status-right-length "80"
 | 
					 | 
				
			||||||
set-window-option -g window-status-separator ""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set-option -g status-left "#[bg=colour241,fg=colour248] #S #[bg=colour237,fg=colour241,nobold,noitalics,nounderscore]"
 | 
					 | 
				
			||||||
set-option -g status-right "#[bg=colour237,fg=colour239 nobold, nounderscore, noitalics]#[bg=colour239,fg=colour246] %Y-%m-%d  %H:%M #[bg=colour239,fg=colour248,nobold,noitalics,nounderscore]#[bg=colour248,fg=colour237] #h "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set-window-option -g window-status-current-format "#[bg=colour214,fg=colour237,nobold,noitalics,nounderscore]#[bg=colour214,fg=colour239] #I #[bg=colour214,fg=colour239,bold] #W#{?window_zoomed_flag,*Z,} #[bg=colour237,fg=colour214,nobold,noitalics,nounderscore]"
 | 
					 | 
				
			||||||
set-window-option -g window-status-format "#[bg=colour239,fg=colour237,noitalics]#[bg=colour239,fg=colour223] #I #[bg=colour239,fg=colour223] #W #[bg=colour237,fg=colour239,noitalics]"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# vim: set ft=tmux tw=0 nowrap:
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user