Skip to content

Instantly share code, notes, and snippets.

@esparkman
Last active February 3, 2020 15:16
Show Gist options
  • Save esparkman/bec39dc43d8f47cdafb76456d0ad8874 to your computer and use it in GitHub Desktop.
Save esparkman/bec39dc43d8f47cdafb76456d0ad8874 to your computer and use it in GitHub Desktop.
Tmuxinator config for Listen360 Ecosystem
###########################
## Configuration
############################
#
# use 256 term for pretty colors
set -g default-terminal "screen-256color"
# increase scroll-back history
set -g history-limit 5000
# use vim key bindings
setw -g mode-keys vi
# decrease command delay (increases vim responsiveness)
set -sg escape-time 1
# increase repeat time for repeatable commands
set -g repeat-time 1000
# start window index at 1
set -g base-index 1
# start pane index at 1
setw -g pane-base-index 1
# highlight window when it has new activity
setw -g monitor-activity on
set -g visual-activity on
# re-number windows when one is closed
set -g renumber-windows on
# Fix System Clipboard
set -g default-shell $SHELL
# set -g default-command 'reattach-to-user-namespace -l ${SHELL}'
# Set Window Auto-Rename to off
setw -g automatic-rename off
# enable pbcopy and pbpaste
# https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/blob/master/README.md
# set-option -g default-command "reattach-to-user-namespace -l zsh"
#/Applications/Postgres.app/Contents/Versions/9.4/bin##########################
# Key Bindings
###########################
# tmux prefix
unbind C-b
set -g prefix 'C-\'
# double backslash goes to last window
bind-key 'C-\' last-window
# copy with 'enter' or 'y' and send to mac os clipboard: http://goo.gl/2Bfn8
# unbind -t vi-copy Enter
# bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
# bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
# create 'v' alias for selecting text
# bind-key -t vi-copy v begin-selection
# paste
unbind C-p
bind C-p paste-buffer
# window splitting
unbind %
bind | split-window -h
unbind '"'
bind - split-window -v
# resize panes
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
# create 25% lower split
unbind t
bind t split-window -p 25
# quickly switch panes
unbind ^J
bind ^J select-pane -t :.+
# force a reload of the config file
unbind r
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# act like vim
setw -g mode-keys vi
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind-key -r C-h select-window -t :-
bind-key -r C-l select-window -t :+
# enable mouse support
set -g mouse on
# Status Bar
###########################
# enable UTF-8 support in status bar
#set -g status-utf8 on
# set refresh interval for status bar
#set -g status-interval 30
# center the status bar
#set -g status-justify left
###
# position status bar at top
#set -g status-position top
# show session, window, pane in left status bar
#set -g status-left-length 40
#set -g status-left '#[fg=green]#S#[fg=blue] #I:#P#[default]'
# show hostname, date, time, and battery in right status bar
#set-option -g status-right '#[fg=green]#H#[default] %m/%d/%y %I:%M\
#[fg=red]#(battery discharging)#[default]#(battery charging)'
# configure clock settins
#set -g clock-mode-style 12
###################################
############ STATUS BAR ############
#
set-option -g status on # turn the status bar on
set -g status-interval 1 # set update frequencey (default 15 seconds)
#
## Base color
set-option -g status-bg colour236
set-option -g status-fg colour246
#
## Left side
set -g status-left-length 20
set -g status-left " #[fg=colour34]#S#[fg=colour246] | "
## Right side
set -g status-right-length 31
set -g status-right " #{battery_icon} #{battery_percentage} | #[fg=colour214]%a, %b %d #[fg=colour246]| #[fg=colour34]%l:%M %p #[fg=colour246]| #[fg=colour203]#(battery) #[fg=colour246]"
# set window list colors - red for active and cyan for inactive
set-window-option -g window-status-style fg=colour240
set-window-option -g window-status-style bg=colour235
set-window-option -g window-status-style dim
set-window-option -g window-status-current-style fg=colour246
set-window-option -g window-status-current-style bg=colour237
set-window-option -g window-status-current-style bright
###########################
# Colors
###########################
# color status bar
# set -g status-bg colour235
# set -g status-fg white
# highlight current window
# set-window-option -g window-status-current-fg black
# set-window-option -g window-status-current-bg green
# set color of active pane
# set -g pane-border-fg colour235
# set -g pane-border-bg black
# set -g pane-active-border-fg green
# set -g pane-active-border-bg black
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin '[email protected]/user/plugin'
# set -g @plugin '[email protected]/user/plugin'
set -g @plugin 'tmux-plugins/tmux-battery'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
# /Users/evansparkman/.config/tmuxinator/listen360.yml
name: listen360
root: ~/Listen360/
windows:
- Shell: clear && ls -lah
- DB:
layout: even-horizontal
panes:
- clear && psql l360_development_master
- clear && psql l360_development_data
- Gatekeeper:
root: "~/Listen360/gatekeeper"
layout: even-horizontal
panes:
- clear && git status
- clear && bundle exec rails s
- Listen360:
root: "~/Listen360/listen360"
layout: even-horizontal
panes:
- clear && git status
- clear && ./run_dev_puma.sh
- Legacy Dashboards:
root: "~/Listen360/legacy_dashboards"
layout: even-horizontal
panes:
- clear && git status
- clear && ./run_dev_puma.sh
- Frontend Apps:
root: "~/Listen360"
layout: even-horizontal
panes:
- cd alexandria
- cd sparta && yarn serve
- cd reports && yarn serve
- cd js_api_client
- Dashboards:
root: "~/Listen360/dashboards"
layout: even-horizontal
panes:
- clear && git status
- clear && bundle exec rails s
- Feedback:
root: "~/Listen360/feedback"
layout: even-horizontal
panes:
- clear && git status
- clear && ./run_dev_puma.sh
- Models/ApiClient:
root: "~/Listen360/"
layout: even-horizontal
panes:
- cd models && clear && git status
- cd api_client && clear && git status
# Optional tmux socket
# socket_name: foo
# Runs before everything. Use it to start daemons etc.
# pre: sudo /etc/rc.d/mysqld start
# Project hooks
# Runs on project start, always
# on_project_start: command
# Run on project start, the first time
# on_project_first_start: command
# Run on project start, after the first time
# on_project_restart: command
# Run on project exit ( detaching from tmux session )
# on_project_exit: command
# Run on project stop
# on_project_stop: command
# Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions.
# pre_window: rbenv shell 2.0.0-p247
# Pass command line options to tmux. Useful for specifying a different tmux.conf.
# tmux_options: -f ~/.tmux.mac.conf
# Change the command to call tmux. This can be used by derivatives/wrappers like byobu.
# tmux_command: byobu
# Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used.
# startup_window: editor
# Specifies (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used.
# startup_pane: 1
# Controls whether the tmux session should be attached to automatically. Defaults to true.
# attach: false
# Runs after everything. Use it to attach to tmux with custom options etc.
# post: tmux -CC attach -t listen360
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment