diff --git a/files/tmux/tmux.conf.local b/files/tmux/tmux.conf.local deleted file mode 100644 index f76afb9..0000000 --- a/files/tmux/tmux.conf.local +++ /dev/null @@ -1,456 +0,0 @@ -# : << EOF -# https://github.com/gpakosz/.tmux -# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license, -# without any warranty. -# Copyright 2012— Gregory Pakosz (@gpakosz). - - -# -- session creation ---------------------------------------------------------- - -# prompt for session name when creating a new session, possible values are: -# - true -# - false (default) -# - disabled (do not modify new-session bindings) -tmux_conf_new_session_prompt=false - - -# -- windows & pane creation --------------------------------------------------- - -# new window retains current path, possible values are: -# - true -# - false (default) -# - disabled (do not modify new-window bindings) -tmux_conf_new_window_retain_current_path=false - -# new window tries to reconnect ssh sessions, possible values are: -# - true -# - false (default) -# - disabled (do not modify new-window bindings) -tmux_conf_new_window_reconnect_ssh=false - -# new pane retains current path, possible values are: -# - true (default) -# - false -# - disabled (do not modify split-window bindings) -tmux_conf_new_pane_retain_current_path=true - -# new pane tries to reconnect ssh sessions, possible values are: -# - true -# - false (default) -# - disabled (do not modify split-window bindings) -tmux_conf_new_pane_reconnect_ssh=false - - -# -- display ------------------------------------------------------------------- - -# RGB 24-bit colour support, possible values are: -# - true -# - false -# - auto (default) -# -# automatic detection relies on the COLORTERM environment variable being defined -# to 'truecolor' or '24bit' or '$ tput colors' answering '16777216' -# see https://github.com/termstandard/colors -tmux_conf_24b_colour=auto - - -# -- theming ------------------------------------------------------------------- - -# enable or disable theming: -# - enabled (default) -# - disabled -# when disabled, all tmux_conf_theme_xxx variables are ignored except: -# - tmux_conf_theme_pairing -# - tmux_conf_theme_prefix -# - tmux_conf_theme_mouse -# - tmux_conf_theme_root -# - tmux_conf_theme_synchronized -tmux_conf_theme=enabled - -# default theme -tmux_conf_theme_colour_1="#080808" # dark gray -tmux_conf_theme_colour_2="#303030" # gray -tmux_conf_theme_colour_3="#8a8a8a" # light gray -tmux_conf_theme_colour_4="#00afff" # light blue -tmux_conf_theme_colour_5="#ffff00" # yellow -tmux_conf_theme_colour_6="#080808" # dark gray -tmux_conf_theme_colour_7="#e4e4e4" # white -tmux_conf_theme_colour_8="#080808" # dark gray -tmux_conf_theme_colour_9="#ffff00" # yellow -tmux_conf_theme_colour_10="#ff00af" # pink -tmux_conf_theme_colour_11="#5fff00" # green -tmux_conf_theme_colour_12="#8a8a8a" # light gray -tmux_conf_theme_colour_13="#e4e4e4" # white -tmux_conf_theme_colour_14="#080808" # dark gray -tmux_conf_theme_colour_15="#080808" # dark gray -tmux_conf_theme_colour_16="#d70000" # red -tmux_conf_theme_colour_17="#e4e4e4" # white - -# default theme (ansi) -#tmux_conf_theme_colour_1="colour0" -#tmux_conf_theme_colour_2="colour8" -#tmux_conf_theme_colour_3="colour8" -#tmux_conf_theme_colour_4="colour14" -#tmux_conf_theme_colour_5="colour11" -#tmux_conf_theme_colour_6="colour0" -#tmux_conf_theme_colour_7="colour15" -#tmux_conf_theme_colour_8="colour0" -#tmux_conf_theme_colour_9="colour11" -#tmux_conf_theme_colour_10="colour13" -#tmux_conf_theme_colour_11="colour10" -#tmux_conf_theme_colour_12="colour8" -#tmux_conf_theme_colour_13="colour15" -#tmux_conf_theme_colour_14="colour0" -#tmux_conf_theme_colour_15="colour0" -#tmux_conf_theme_colour_16="colour1" -#tmux_conf_theme_colour_17="colour15" - -# window style -tmux_conf_theme_window_fg="default" -tmux_conf_theme_window_bg="default" - -# highlight focused pane, possible values are: -# - true -# - false (default) -tmux_conf_theme_highlight_focused_pane=false - -# focused pane colours: -tmux_conf_theme_focused_pane_bg="$tmux_conf_theme_colour_2" - -# pane border style, possible values are: -# - thin (default) -# - fat -tmux_conf_theme_pane_border_style=thin - -# pane borders colours: -tmux_conf_theme_pane_border="$tmux_conf_theme_colour_2" -tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4" -%if #{>=:#{version},3.2} -tmux_conf_theme_pane_active_border="#{?pane_in_mode,$tmux_conf_theme_colour_9,#{?synchronize-panes,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_4}}" -%endif - -# pane indicator colours (when you hit + q) -tmux_conf_theme_pane_indicator="$tmux_conf_theme_colour_4" -tmux_conf_theme_pane_active_indicator="$tmux_conf_theme_colour_4" - -# status line style -tmux_conf_theme_message_fg="$tmux_conf_theme_colour_1" -tmux_conf_theme_message_bg="$tmux_conf_theme_colour_5" -tmux_conf_theme_message_attr="bold" - -# status line command style ( : Escape) -tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5" -tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_1" -tmux_conf_theme_message_command_attr="bold" - -# window modes style -tmux_conf_theme_mode_fg="$tmux_conf_theme_colour_1" -tmux_conf_theme_mode_bg="$tmux_conf_theme_colour_5" -tmux_conf_theme_mode_attr="bold" - -# status line style -tmux_conf_theme_status_fg="$tmux_conf_theme_colour_3" -tmux_conf_theme_status_bg="$tmux_conf_theme_colour_1" -tmux_conf_theme_status_attr="none" - -# terminal title -# - built-in variables are: -# - #{circled_window_index} -# - #{circled_session_name} -# - #{hostname} -# - #{hostname_ssh} -# - #{hostname_full} -# - #{hostname_full_ssh} -# - #{username} -# - #{username_ssh} -tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W" - -# window status style -# - built-in variables are: -# - #{circled_window_index} -# - #{circled_session_name} -# - #{hostname} -# - #{hostname_ssh} -# - #{hostname_full} -# - #{hostname_full_ssh} -# - #{username} -# - #{username_ssh} -tmux_conf_theme_window_status_fg="$tmux_conf_theme_colour_3" -tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1" -tmux_conf_theme_window_status_attr="none" -tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" -#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" -#tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}" - -# window current status style -# - built-in variables are: -# - #{circled_window_index} -# - #{circled_session_name} -# - #{hostname} -# - #{hostname_ssh} -# - #{hostname_full} -# - #{hostname_full_ssh} -# - #{username} -# - #{username_ssh} -tmux_conf_theme_window_status_current_fg="$tmux_conf_theme_colour_1" -tmux_conf_theme_window_status_current_bg="$tmux_conf_theme_colour_4" -tmux_conf_theme_window_status_current_attr="bold" -tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" -#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}" -#tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}" - -# window activity status style -tmux_conf_theme_window_status_activity_fg="default" -tmux_conf_theme_window_status_activity_bg="default" -tmux_conf_theme_window_status_activity_attr="underscore" - -# window bell status style -tmux_conf_theme_window_status_bell_fg="$tmux_conf_theme_colour_5" -tmux_conf_theme_window_status_bell_bg="default" -tmux_conf_theme_window_status_bell_attr="blink,bold" - -# window last status style -tmux_conf_theme_window_status_last_fg="$tmux_conf_theme_colour_4" -tmux_conf_theme_window_status_last_bg="$tmux_conf_theme_colour_2" -tmux_conf_theme_window_status_last_attr="none" - -# status left/right sections separators -#tmux_conf_theme_left_separator_main="" -#tmux_conf_theme_left_separator_sub="|" -#tmux_conf_theme_right_separator_main="" -#tmux_conf_theme_right_separator_sub="|" -tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline -tmux_conf_theme_left_separator_sub='\uE0B1' # you only need fonts patched with -tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone -tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md - -# status left/right content: -# - separate main sections with "|" -# - separate subsections with "," -# - built-in variables are: -# - #{battery_bar} -# - #{battery_hbar} -# - #{battery_percentage} -# - #{battery_status} -# - #{battery_vbar} -# - #{circled_session_name} -# - #{hostname_ssh} -# - #{hostname} -# - #{hostname_full} -# - #{hostname_full_ssh} -# - #{loadavg} -# - #{mouse} -# - #{pairing} -# - #{prefix} -# - #{root} -# - #{synchronized} -# - #{uptime_y} -# - #{uptime_d} (modulo 365 when #{uptime_y} is used) -# - #{uptime_h} -# - #{uptime_m} -# - #{uptime_s} -# - #{username} -# - #{username_ssh} -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}#{mouse}#{pairing}#{synchronized}#{?battery_status,#{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} " - -# status left style -tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_6,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8" -tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_9,$tmux_conf_theme_colour_10,$tmux_conf_theme_colour_11" -tmux_conf_theme_status_left_attr="bold,none,none" - -# status right style -tmux_conf_theme_status_right_fg="$tmux_conf_theme_colour_12,$tmux_conf_theme_colour_13,$tmux_conf_theme_colour_14" -tmux_conf_theme_status_right_bg="$tmux_conf_theme_colour_15,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_17" -tmux_conf_theme_status_right_attr="none,none,bold" - -# pairing indicator -tmux_conf_theme_pairing="⚇" # U+2687 -tmux_conf_theme_pairing_fg="none" -tmux_conf_theme_pairing_bg="none" -tmux_conf_theme_pairing_attr="none" - -# 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" - -# mouse indicator -tmux_conf_theme_mouse="↗" # U+2197 -tmux_conf_theme_mouse_fg="none" -tmux_conf_theme_mouse_bg="none" -tmux_conf_theme_mouse_attr="none" - -# root indicator -tmux_conf_theme_root="!" -tmux_conf_theme_root_fg="none" -tmux_conf_theme_root_bg="none" -tmux_conf_theme_root_attr="bold,blink" - -# synchronized indicator -tmux_conf_theme_synchronized="⚏" # U+268F -tmux_conf_theme_synchronized_fg="none" -tmux_conf_theme_synchronized_bg="none" -tmux_conf_theme_synchronized_attr="none" - -# battery bar symbols -tmux_conf_battery_bar_symbol_full="◼" -tmux_conf_battery_bar_symbol_empty="◻" -#tmux_conf_battery_bar_symbol_full="♥" -#tmux_conf_battery_bar_symbol_empty="·" - -# battery bar length (in number of symbols), possible values are: -# - auto -# - a number, e.g. 5 -tmux_conf_battery_bar_length="auto" - -# battery bar palette, possible values are: -# - gradient (default) -# - heat -# - "colour_full_fg,colour_empty_fg,colour_bg" -tmux_conf_battery_bar_palette="gradient" -#tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black - -# battery hbar palette, possible values are: -# - gradient (default) -# - heat -# - "colour_low,colour_half,colour_full" -tmux_conf_battery_hbar_palette="gradient" -#tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green - -# battery vbar palette, possible values are: -# - gradient (default) -# - heat -# - "colour_low,colour_half,colour_full" -tmux_conf_battery_vbar_palette="gradient" -#tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green - -# symbols used to indicate whether battery is charging or discharging -tmux_conf_battery_status_charging="↑" # U+2191 -tmux_conf_battery_status_discharging="↓" # U+2193 -#tmux_conf_battery_status_charging="⚡" # U+26A1 -#tmux_conf_battery_status_charging="🔌" # U+1F50C -#tmux_conf_battery_status_discharging="🔋" # U+1F50B - -# clock style (when you hit + t) -# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right -tmux_conf_theme_clock_colour="$tmux_conf_theme_colour_4" -tmux_conf_theme_clock_style="24" - - -# -- clipboard ----------------------------------------------------------------- - -# in copy mode, copying selection also copies to the OS clipboard -# - true -# - false (default) -# - disabled -# on macOS, this requires installing reattach-to-user-namespace, see README.md -# on Linux, this requires xsel, xclip or wl-copy -tmux_conf_copy_to_os_clipboard=true - - -# -- user customizations ------------------------------------------------------- -# this is the place to override or undo settings - -# increase history size -set -g history-limit 50000 - -# start with mouse mode enabled -set -g mouse on - -# session/pane/window options -bind-key 'S' set-window-option synchronize-panes # Bind key for synchronizing panes - -# force Vi mode -# really you should export VISUAL or EDITOR environment variable, see manual -#set -g status-keys vi -#set -g mode-keys vi - -# replace C-b by C-a instead of using both prefixes -set -gu prefix2 -unbind C-a -unbind C-b -set -g prefix C-a -bind C-a send-prefix - -# if you don't want Oh my tmux! to alter a binding, use #!important -# bind c new-window -c '#{pane_current_path}' #!important - -# Switch to last window, screen style -bind-key a send-prefix -bind-key C-a last-window - -# move status line to top -#set -g status-position top - - -# -- tpm ----------------------------------------------------------------------- - -# while I don't use tpm myself, many people requested official support so here -# is a seamless integration that automatically installs plugins in parallel - -# whenever a plugin introduces a variable to be used in 'status-left' or -# 'status-right', you can use it in 'tmux_conf_theme_status_left' and -# 'tmux_conf_theme_status_right' variables. - -# by default, launching tmux will update tpm and all plugins -# - true (default) -# - false -tmux_conf_update_plugins_on_launch=true - -# by default, reloading the configuration will update tpm and all plugins -# - true (default) -# - false -tmux_conf_update_plugins_on_reload=true - -# by default, reloading the configuration will uninstall tpm and plugins when no -# plugins are enabled -# - true (default) -# - false -tmux_conf_uninstall_plugins_on_reload=true - -# /!\ the tpm bindings differ slightly from upstream: -# - installing plugins: + I -# - uninstalling plugins: + Alt + u -# - updating plugins: + u - -# /!\ do not add set -g @plugin 'tmux-plugins/tpm' -# /!\ do not add run '~/.tmux/plugins/tpm/tpm' - -# to enable a plugin, use the 'set -g @plugin' syntax: -# visit https://github.com/tmux-plugins for available plugins -#set -g @plugin 'tmux-plugins/tmux-copycat' -#set -g @plugin 'tmux-plugins/tmux-cpu' -#set -g @plugin 'tmux-plugins/tmux-resurrect' -#set -g @plugin 'tmux-plugins/tmux-continuum' -#set -g @continuum-restore 'on' -set -g @plugin 'tmux-plugins/tmux-sensible' - - -# -- custom variables ---------------------------------------------------------- - -# to define a custom #{foo} variable, define a POSIX shell function between the -# '# EOF' and the '# "$@"' lines. Please note that the opening brace { character -# must be on the same line as the function name otherwise the parse won't detect -# it. -# -# then, use #{foo} in e.g. the 'tmux_conf_theme_status_left' or the -# 'tmux_conf_theme_status_right' variables. - -# # /!\ do not remove the following line -# EOF -# -# # /!\ do not "uncomment" the functions: the leading "# " characters are needed -# -# weather() { # see https://github.com/chubin/wttr.in#one-line-output -# curl -f -s -m 2 'wttr.in?format=3' || printf '\n' # /!\ make sure curl is installed -# sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval -# } -# -# online() { -# ping -c 1 1.1.1.1 >/dev/null 2>&1 && printf '✔' || printf '✘' -# } -# -# "$@" -# # /!\ do not remove the previous line diff --git a/lib/got_files/tmux.rb b/lib/got_files/tmux.rb deleted file mode 100644 index c881485..0000000 --- a/lib/got_files/tmux.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true - -require "got_files/base" - -module GotFiles - class Tmux < Base - def setup - git("https://github.com/gpakosz/.tmux.git", - "#{ENV['HOME']}/.tmux", - "Oh My Tmux!") - - git("https://github.com/tmux-plugins/tpm", - "#{ENV['HOME']}/.tmux/plugins/tpm", - "Tmux Plugin Manager") - - install_file %w[~/.tmux/.tmux.conf files/tmux/tmux.conf.local] - - run %(tmux source ~/.tmux.conf) if ENV["TMUX"] - end - end -end diff --git a/lib/tasks/tmux.rake b/lib/tasks/tmux.rake deleted file mode 100644 index 2a6ecaf..0000000 --- a/lib/tasks/tmux.rake +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -namespace "setup" do - desc "setup Tmux" - task :tmux do - require "got_files/tmux" - - tmux = GotFiles::Tmux.new - tmux.setup - end -end diff --git a/nix/users/shoekstra/tmux.nix b/nix/users/shoekstra/tmux.nix index c8feab8..f584f0f 100644 --- a/nix/users/shoekstra/tmux.nix +++ b/nix/users/shoekstra/tmux.nix @@ -1,6 +1,19 @@ { pkgs, ... }: -{ +let + tmux-onehalf-theme = pkgs.tmuxPlugins.mkTmuxPlugin { + pluginName = "tmux-onehalf-theme"; + rtpFilePath = "main.tmux"; + version = "master"; + src = pkgs.fetchFromGitHub { + owner = "andersondanilo"; + repo = "tmux-onehalf-theme"; + rev = "1a099d775c948bc1b72c16c05aca5fb2f1bd3c03"; + sha256 = "sha256-ExUJc14niGSNzqX3e1GjxZMv0y4gLmzfoQG0hzRFI5s="; + }; + }; + +in { home.packages = with pkgs; [ reattach-to-user-namespace ]; @@ -17,8 +30,27 @@ extraConfig = '' # Switch to last window, screen style - bind-key a send-prefix - bind-key C-a last-window + bind a send-prefix + bind C-a last-window + + # Split current window and use cwd + unbind % + unbind '"' + bind _ split-window -h -c "#{pane_current_path}" + bind - split-window -v -c "#{pane_current_path}" + + # Window navigation + unbind n + unbind p + bind -r C-h previous-window + bind -r C-l next-window + bind Tab last-window + + # Synchronise panes + bind S set-window-option synchronize-panes + + # Reload config file + bind r source ~/.config/tmux/tmux.conf \; display "tmux config sourced!" # Apply true color set-option -ga terminal-overrides ",xterm-256color:Tc" @@ -35,6 +67,11 @@ sha256 = "sha256-sw9g1Yzmv2fdZFLJSGhx1tatQ+TtjDYNZI5uny0+5Hg="; }; })) + tmuxPlugins.better-mouse-mode + tmuxPlugins.cpu + { + plugin = tmux-onehalf-theme; # This wants to be loaded last + } ]; }; }