#+TITLE: Tmux config
#+INCLUDE: headers
#+OPTIONS: auto-id:t
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's tmux config" />
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's tmux config" />
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the tmux config file of Phundrak" />
#+PROPERTY: header-args :tangle ~/.tmux.conf.local
#+STARTUP: content

* Table of Contents                                        :TOC_4_gh:noexport:
  :PROPERTIES:
  :CUSTOM_ID: Table_of_Contents-6af11648
  :END:
- [[#presentation][Presentation]]
- [[#windows-and-pane-creation][Windows and pane creation]]
- [[#display][Display]]
  - [[#colors-and-style][Colors and style]]
  - [[#window-status-bar][Window status bar]]
- [[#clipboard][Clipboard]]
- [[#user-customizations][User customizations]]

* Presentation
  :PROPERTIES:
  :CUSTOM_ID: Presentation-0b37c6c0
  :END:
  I don’t really use tmux often, but I certainly do like a nice presentation and
  useful features,  hence this  configuration. This config  file is  inspired by
  gpakosz’s tmux configuration repo you can find [[https://github.com/gpakosz/.tmux][here]].

* Windows and pane creation
  :PROPERTIES:
  :CUSTOM_ID: Windows_and_pane_creation-66275518
  :END:
  Whether if a new *window* will retain the current path. Possible values are:
  - true
  - false (default)
  #+BEGIN_SRC conf-unix
  tmux_conf_new_window_retain_current_path=true
  #+END_SRC

  Whether if a new *pane* should retain the current path. Possible values are:
  - true (default)
  - false
  #+BEGIN_SRC conf-unix
  tmux_conf_new_window_retain_current_path=true
  #+END_SRC

  Whether or  not tmux should attempt  to reconnect to the  current ssh session.
  This is still experimental. Possible values are:
  - true
  - false (default)
  #+BEGIN_SRC conf-unix
  tmux_conf_new_pane_reconnect_ssh=true
  #+END_SRC

  Whether  tmux should  prompt for  new session  name when  creating a  new one.
  Possible values are:
  - true
  - false (default)
  #+BEGIN_SRC conf-unix
  tmux_conf_new_session_prompt=false
  #+END_SRC

* Display
  :PROPERTIES:
  :CUSTOM_ID: Display-d5ae1908
  :END:
  Whether to activate RGB 24-bit color  support (only available in tmux >= 2.2).
  Possible values are:
  - true
  - false (default)
  #+BEGIN_SRC conf-unix
  tmux_conf_theme_24b_colour=false
  #+END_SRC

  These variables are for chosing the window style. I use the default one.
  #+BEGIN_SRC conf-unix
    tmux_conf_theme_window_fg='default'
    tmux_conf_theme_window_bg='default'
  #+END_SRC

  Whether the  focused pane  should be  highlighted (only  available in  tmux >=
  2.1). Possible values are:
  - true
  - false (default)
  #+BEGIN_SRC conf-unix
    tmux_conf_theme_highlight_focused_pane=false
  #+END_SRC

  Set the terminal title. Built-in variables are:
  - =#{circled_window_index}=
  - =#{circled_session_name}=
  - =#{hostname}=
  - =#{hostname_ssh}=
  - =#{username}=
  - =#{username_ssh}=
  #+BEGIN_SRC conf-unix
    tmux_conf_theme_terminal_title='#h ❐ #S ● #I #W'
  #+END_SRC

  These  variables set  the  left/right separators  between  sections. With  the
  current values,  you don’t need to  install Powerline, but only  fonts patched
  with Powerline symbols or the standalone PowerlineSymbols.otf font.
  #+BEGIN_SRC conf-unix
    tmux_conf_theme_left_separator_main='\uE0B0'
    tmux_conf_theme_left_separator_sub='\uE0B1'
    tmux_conf_theme_right_separator_main='\uE0B2'
    tmux_conf_theme_right_separator_sub='\uE0B3'
  #+END_SRC

** Colors and style
   :PROPERTIES:
   :CUSTOM_ID: Display-Colors_and_style-0994a014
   :END:
   Colors displayed in tmux can be chosen thanks to the following variables. Any
   color should be formatted as a hexadecimal RGB value preceded by a pound sign
   =#= (e.g. =#00afff= for  light blue) or =default= to let  our terminal set it
   for us.

   Choose the style of the pane borders. Possible values are:
   - thin (default)
   - fat
   #+BEGIN_SRC conf-unix
   tmux_conf_theme_pane_border_style=thin
   #+END_SRC

   Declare what  the colors of  the focused pane  should be. The  first variable
   specifies the foreground color, the other the background color.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_focused_pane_fg='default'
     tmux_conf_theme_focused_pane_bg='#0087d7'
   #+END_SRC

   Here you  can set  the colors  of the pane  borders.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_pane_border='#444444'
     tmux_conf_theme_pane_active_border='#00afff'
   #+END_SRC

   With these variables, you can set the colors for the pane indicators.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_pane_indicator='#00afff'
     tmux_conf_theme_pane_active_indicator='#00afff'
   #+END_SRC

   These variables set the colors and the style of the status line.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_message_fg='#000000'
     tmux_conf_theme_message_bg='#ffff00'
     tmux_conf_theme_message_attr='bold'
   #+END_SRC

   Same as above for the status line command style.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_message_command_fg='#ffff00'
     tmux_conf_theme_message_command_bg='#000000'
     tmux_conf_theme_message_command_attr='bold'
   #+END_SRC

   These variables set the style of the window modes.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_mode_fg='#000000'
     tmux_conf_theme_mode_bg='#ffff00'
     tmux_conf_theme_mode_attr='bold'
   #+END_SRC

   Set the style of the status line.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_status_fg='#8a8a8a'
     tmux_conf_theme_status_bg='#080808'
     tmux_conf_theme_status_attr='none'
   #+END_SRC

** Window status bar
   :PROPERTIES:
   :CUSTOM_ID: Display-Window_status_bar-dff37ae7
   :END:
   The following variables are to set the window’s status style and format.

   Sets the colors and style of the window status.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_window_status_fg='#8a8a8a'
     tmux_conf_theme_window_status_bg='#080808'
     tmux_conf_theme_window_status_attr='none'
   #+END_SRC

   Sets the format of the window status. Built-in variables are:
   - =#{circled_window_index}=
   - =#{circled_session_name}=
   - =#{hostname}=
   - =#{hostname_ssh}=
   - =#{username}=
   - =#{username_ssh}=
   #+BEGIN_SRC conf-unix
   tmux_conf_theme_window_status_format='#I #W'
   #+END_SRC

   Sets the colors and style of the current window status.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_window_status_current_fg='#000000'
     tmux_conf_theme_window_status_current_bg='#00afff'
     tmux_conf_theme_window_status_current_attr='bold'
   #+END_SRC

   Sets the format of the currentwindow status. Built-in variables are:
   - =#{circled_window_index}=
   - =#{circled_session_name}=
   - =#{hostname}=
   - =#{hostname_ssh}=
   - =#{username}=
   - =#{username_ssh}=
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_window_status_current_format='#I #W'
   #+END_SRC

   Sets the window activity status style.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_window_status_activity_fg='default'
     tmux_conf_theme_window_status_activity_bg='default'
     tmux_conf_theme_window_status_activity_attr='underscore'
   #+END_SRC

   Sets the window bell status style.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_window_status_bell_fg='#ffff00'
     tmux_conf_theme_window_status_bell_bg='default'
     tmux_conf_theme_window_status_bell_attr='blink,bold'
   #+END_SRC

   Sets the window last status style.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_window_status_last_fg='#00afff'
     tmux_conf_theme_window_status_last_bg='default'
     tmux_conf_theme_window_status_last_attr='none'
   #+END_SRC

   Sets the left and right content of the status bar of tmux. Sections should be
   separated with =|=, subsections with =,=. The built-in values are:
   - =#{battery_bar}=
   - =#{battery_hbar}=
   - =#{battery_percentage}=
   - =#{battery_status}=
   - =#{battery_vbar}=
   - =#{circled_session_name}=
   - =#{hostname_ssh}=
   - =#{hostname}=
   - =#{loadavg}=
   - =#{pairing}=
   - =#{prefix}=
   - =#{root}=
   - =#{synchronized}=
   - =#{uptime_y}=
   - =#{uptime_d}= (modulo 365 when =#{uptime_y}= is used)
   - =#{uptime_h}=
   - =#{uptime_m}=
   - =#{uptime_s}=
   - =#{username}=
   - =#{username_ssh}=
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_status_left=' ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} '
     tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #{?battery_status, #{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} '
   #+END_SRC

   Sets the left status style and colors.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_status_left_fg='#000000,#e4e4e4,#e4e4e4'
     tmux_conf_theme_status_left_bg='#ffff00,#ff00af,#00afff'
     tmux_conf_theme_status_left_attr='bold,none,none'
   #+END_SRC

   Sets the right status style and colors.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_status_right_fg='#8a8a8a,#e4e4e4,#000000'
     tmux_conf_theme_status_right_bg='#080808,#d70000,#e4e4e4'
     tmux_conf_theme_status_right_attr='none,none,bold'
   #+END_SRC

   Set the pairing indicator, its style and its attribute.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_pairing='👓 '          # U+1F453
     tmux_conf_theme_pairing_fg='none'
     tmux_conf_theme_pairing_bg='none'
     tmux_conf_theme_pairing_attr='none'
   #+END_SRC

   Set the pairing indicator, its style and its attribute.
   #+BEGIN_SRC conf-unix
     # prefix indicator
     tmux_conf_theme_prefix='⌨ '            # U+2328
     tmux_conf_theme_prefix_fg='none'
     tmux_conf_theme_prefix_bg='none'
     tmux_conf_theme_prefix_attr='none'
   #+END_SRC

   Set the root indicator, its style and its attribute.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_root='!'
     tmux_conf_theme_root_fg='none'
     tmux_conf_theme_root_bg='none'
     tmux_conf_theme_root_attr='bold,blink'
   #+END_SRC

   Set the synchronized indicator, its style and its attribute.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_synchronized='🔒'     # U+1F512
     tmux_conf_theme_synchronized_fg='none'
     tmux_conf_theme_synchronized_bg='none'
     tmux_conf_theme_synchronized_attr='none'
   #+END_SRC

   Set the battery bar symbols.
   #+BEGIN_SRC conf-unix
     tmux_conf_battery_bar_symbol_full='◼'
     tmux_conf_battery_bar_symbol_empty='◻'
   #+END_SRC

   Set the  battery bar length  in terms of  amount of symbols.  Possible values
   are:
   - =auto=
   - an integer number, e.g. 5
   #+BEGIN_SRC conf-unix
     tmux_conf_battery_bar_length='auto'
   #+END_SRC

   Set the battery bar palette. Possible values are:
   - =gradient= (default)
   - =heat=
   - =color_full_fg,color_empty_fg,color_bg= with each  being an hexadecimal RGB
     value preceded by a pound symbol =#=.
   #+BEGIN_SRC conf-unix
     tmux_conf_battery_bar_palette='gradient'
     #tmux_conf_battery_bar_palette='#d70000,#e4e4e4,#000000'
   #+END_SRC

   Set the hbar palette. Possible values are:
   - =gradient= (default)
   - =heat=
   - =color_full_fg,color_empty_fg,color_bg= with each  being an hexadecimal RGB
     value preceded by a pound symbol =#=.
   #+BEGIN_SRC conf-unix
     tmux_conf_battery_hbar_palette='gradient'
   #+END_SRC

   Set the vbar palette. Possible values are:
   - =gradient= (default)
   - =heat=
   - =color_full_fg,color_empty_fg,color_bg= with each  being an hexadecimal RGB
     value preceded by a pound symbol =#=.
   #+BEGIN_SRC conf-unix
     tmux_conf_battery_vbar_palette='gradient'
   #+END_SRC

   Set symbols used to indicate whether the battery is charging or discharging.
   #+BEGIN_SRC conf-unix
     tmux_conf_battery_status_charging='⚡ '    # U+26A1
     tmux_conf_battery_status_discharging='🔋 ' # U+1F50B
     # tmux_conf_battery_status_charging='↑'       # U+2191
     # tmux_conf_battery_status_discharging='↓'    # U+2193
     #tmux_conf_battery_status_charging='🔌 '    # U+1F50C
   #+END_SRC

   Set the clock style. If it is displayed  on the right side of the status bar,
   it   might   be   better   to   use  =%I:%M   %p=   rather   than   =%R=   in
   =tmux_conf_theme_status_right=.
   #+BEGIN_SRC conf-unix
     tmux_conf_theme_clock_colour='#00afff'
     tmux_conf_theme_clock_style='24'
   #+END_SRC

* Clipboard
  :PROPERTIES:
  :CUSTOM_ID: Clipboard-66d0d03a
  :END:
  Whether  if  in  copy mode,  copying  the  selection  also  copies to  the  OS
  clipboard. Possible values are:
  - true
  - false (default)
  #+BEGIN_SRC conf-unix
    tmux_conf_copy_to_os_clipboard=false
  #+END_SRC

* User customizations
  :PROPERTIES:
  :CUSTOM_ID: User_customizations-c913b5d7
  :END:
  Here we can override  or undo some setting from settings  from tmux. First, we
  can increase the history size.
  #+BEGIN_SRC conf-unix
    set -g history-limit 10000
  #+END_SRC

  We can also start with mouse mode enabled. But I don’t.
  #+BEGIN_SRC conf-unix
    #set -g mouse on
  #+END_SRC

  Whether or not Vi mode should be  enabled. But really, we should rather export
  the =VISUAL= or =EDITOR= environment  variables, see the tmux manual. Although
  I don’t, as said in my dotfish, I prefer to use Emacs.
  #+BEGIN_SRC conf-unix
    #set -g status-keys vi
    #set -g mode-keys vi
  #+END_SRC

  Replace =C-b= by =C-a= instead of  using both prefixes. I personally prefer to
  just use =C-b=, hence why the lines are commented.
  #+BEGIN_SRC conf-unix
    # set -gu prefix2
    # unbind C-a
    # unbind C-b
    # set -g prefix C-a
    # bind C-a send-prefix
  #+END_SRC

  Move the status line to the top.
  #+BEGIN_SRC conf-unix
    #set -g status-position top
  #+END_SRC