Created
October 13, 2024 22:37
-
-
Save samehkamaleldin/523569b0a2ef16e2fbdb073eb5fa5ae4 to your computer and use it in GitHub Desktop.
TMUX config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# : << '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). | |
# | |
# ------------------------------------------------------------------------------ | |
# /!\ DO NOT EDIT THIS FILE | |
# instead, override your .local customization file copy, see README.md /!\ | |
# ------------------------------------------------------------------------------ | |
# -- general ------------------------------------------------------------------- | |
set -g default-terminal "screen-256color" | |
set-option -sa terminal-overrides ",xterm*:Tc" | |
setw -g xterm-keys on | |
set -s escape-time 10 # faster command sequences | |
set -sg repeat-time 600 # increase repeat timeout | |
set -s focus-events on | |
set -g prefix2 C-a # GNU-Screen compatible prefix | |
bind C-a send-prefix -2 | |
set -q -g status-utf8 on # expect UTF-8 (tmux < 2.2) | |
setw -q -g utf8 on | |
set -g history-limit 5000 # boost history | |
# edit configuration | |
%if #{>=:#{version},3.0} | |
bind e new-window -n "#{TMUX_CONF_LOCAL}" -e EDITOR="$EDITOR" sh -c 'case "${EDITOR:-vim}" in *vim*) ${EDITOR:-vim} -c ":set syntax=tmux" "$TMUX_CONF_LOCAL";; *) $EDITOR "$TMUX_CONF_LOCAL";; esac && "$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} source "$TMUX_CONF" \; display "$TMUX_CONF_LOCAL sourced"' | |
%else | |
set-environment -g EDITOR "$EDITOR" | |
bind e new-window -n "#{TMUX_CONF_LOCAL}" sh -c 'case "${EDITOR:-vim}" in *vim*) ${EDITOR:-vim} -c ":set syntax=tmux" "$TMUX_CONF_LOCAL";; *) $EDITOR "$TMUX_CONF_LOCAL";; esac && "$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} source "$TMUX_CONF" \; display "$TMUX_CONF_LOCAL sourced"' | |
%endif | |
# reload configuration | |
bind r run '"$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} source "$TMUX_CONF"' \; display "#{TMUX_CONF} sourced" | |
# -- display ------------------------------------------------------------------- | |
set -g base-index 1 # start windows numbering at 1 | |
setw -g pane-base-index 1 # make pane numbering consistent with windows | |
setw -g automatic-rename on # rename window to reflect current program | |
set -g renumber-windows on # renumber windows when a window is closed | |
set -g set-titles on # set terminal title | |
set -g display-panes-time 800 # slightly longer pane indicators display time | |
set -g display-time 1000 # slightly longer status messages display time | |
set -g status-interval 10 # redraw status line every 10 seconds | |
# clear both screen and history | |
bind -n C-l send-keys C-l \; run 'sleep 0.2' \; clear-history | |
# activity | |
set -g monitor-activity on | |
set -g visual-activity off | |
# -- navigation ---------------------------------------------------------------- | |
# create session | |
bind C-c new-session | |
# find session | |
bind C-f command-prompt -p find-session 'switch-client -t %%' | |
# session navigation | |
bind BTab switch-client -l # move to last session | |
# split current window horizontally | |
bind - split-window -v | |
# split current window vertically | |
bind _ split-window -h | |
# pane navigation | |
bind -r h select-pane -L # move left | |
bind -r j select-pane -D # move down | |
bind -r k select-pane -U # move up | |
bind -r l select-pane -R # move right | |
bind > swap-pane -D # swap current pane with the next one | |
bind < swap-pane -U # swap current pane with the previous one | |
# maximize current pane | |
bind + run "cut -c3- '#{TMUX_CONF}' | sh -s _maximize_pane '#{session_name}' '#D'" | |
# pane resizing | |
bind -r H resize-pane -L 2 | |
bind -r J resize-pane -D 2 | |
bind -r K resize-pane -U 2 | |
bind -r L resize-pane -R 2 | |
# window navigation | |
unbind n | |
unbind p | |
bind -r C-h previous-window # select previous window | |
bind -r C-l next-window # select next window | |
bind Tab last-window # move to last active window | |
# toggle mouse | |
bind m run "cut -c3- '#{TMUX_CONF}' | sh -s _toggle_mouse" | |
# -- facebook pathpicker ------------------------------------------------------- | |
bind F run "cut -c3- '#{TMUX_CONF}' | sh -s _fpp '#{pane_id}' '#{pane_current_path}'" | |
# -- copy mode ----------------------------------------------------------------- | |
bind Enter copy-mode # enter copy mode | |
bind -T copy-mode-vi v send -X begin-selection | |
bind -T copy-mode-vi C-v send -X rectangle-toggle | |
bind -T copy-mode-vi y send -X copy-selection-and-cancel | |
bind -T copy-mode-vi Escape send -X cancel | |
bind -T copy-mode-vi H send -X start-of-line | |
bind -T copy-mode-vi L send -X end-of-line | |
# copy to X11 clipboard | |
if -b 'command -v xsel > /dev/null 2>&1' 'bind y run -b "\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} save-buffer - | xsel -i -b"' | |
if -b '! command -v xsel > /dev/null 2>&1 && command -v xclip > /dev/null 2>&1' 'bind y run -b "\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} save-buffer - | xclip -i -selection clipboard >/dev/null 2>&1"' | |
# copy to Wayland clipboard | |
if -b '[ "$XDG_SESSION_TYPE" = "wayland" ] && command -v wl-copy > /dev/null 2>&1' 'bind y run -b "\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} save-buffer - | wl-copy"' | |
# copy to macOS clipboard | |
if -b 'command -v pbcopy > /dev/null 2>&1' 'bind y run -b "\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} save-buffer - | pbcopy"' | |
# copy to Windows clipboard | |
if -b 'command -v clip.exe > /dev/null 2>&1' 'bind y run -b "\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} save-buffer - | clip.exe"' | |
if -b '[ -c /dev/clipboard ]' 'bind y run -b "\"\$TMUX_PROGRAM\" \${TMUX_SOCKET:+-S \"\$TMUX_SOCKET\"} save-buffer - > /dev/clipboard"' | |
# -- buffers ------------------------------------------------------------------- | |
bind b list-buffers # list paste buffers | |
bind p paste-buffer -p # paste from the top paste buffer | |
bind P choose-buffer # choose which buffer to paste from | |
# -- 8< ------------------------------------------------------------------------ | |
%if #{==:#{TMUX_PROGRAM},} | |
run 'TMUX_PROGRAM="$(LSOF=$(PATH="$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" command -v lsof); $LSOF -b -w -a -d txt -p #{pid} -Fn 2>/dev/null | perl -n -e "if (s/^n((?:.(?!dylib$|so$))+)$/\1/g && s/(?:\s+\([^\s]+?\))?$//g) { print; exit } } exit 1; {" || readlink "/proc/#{pid}/exe" 2>/dev/null)"; { [ -f "$TMUX_PROGRAM" ] && [ -x "$TMUX_PROGRAM" ]; } || TMUX_PROGRAM="$(command -v tmux || printf tmux)"; "$TMUX_PROGRAM" -S #{socket_path} set-environment -g TMUX_PROGRAM "$TMUX_PROGRAM"' | |
%endif | |
%if #{==:#{TMUX_SOCKET},} | |
run '"$TMUX_PROGRAM" -S #{socket_path} set-environment -g TMUX_SOCKET "#{socket_path}"' | |
%endif | |
%if #{==:#{TMUX_CONF},} | |
run '"$TMUX_PROGRAM" set-environment -g TMUX_CONF $(for conf in "$HOME/.tmux.conf" "$XDG_CONFIG_HOME/tmux/tmux.conf" "$HOME/.config/tmux/tmux.conf"; do [ -f "$conf" ] && printf "%s" "$conf" && break; done)' | |
%endif | |
%if #{==:#{TMUX_CONF_LOCAL},} | |
run '"$TMUX_PROGRAM" set-environment -g TMUX_CONF_LOCAL "$TMUX_CONF.local"' | |
%endif | |
run '"$TMUX_PROGRAM" source "$TMUX_CONF_LOCAL"' | |
run 'cut -c3- "$TMUX_CONF" | sh -s _apply_configuration' | |
# EOF | |
# | |
# # exit the script if any statement returns a non-true return value | |
# set -e | |
# | |
# unset GREP_OPTIONS | |
# export LC_NUMERIC=C | |
# # shellcheck disable=SC3041 | |
# if (set +H 2>/dev/null); then | |
# set +H | |
# fi | |
# | |
# if ! printf '' | sed -E 's///' 2>/dev/null; then | |
# if printf '' | sed -r 's///' 2>/dev/null; then | |
# sed() { | |
# n=$#; while [ "$n" -gt 0 ]; do arg=$1; shift; case $arg in -E*) arg=-r${arg#-E};; esac; set -- "$@" "$arg"; n=$(( n - 1 )); done | |
# command sed "$@" | |
# } | |
# fi | |
# fi | |
# | |
# _uname_s=$(uname -s) | |
# | |
# [ -z "$TMUX" ] && exit 255 | |
# if [ -z "$TMUX_SOCKET" ]; then | |
# TMUX_SOCKET=$(printf '%s' "$TMUX" | cut -d, -f1) | |
# fi | |
# if [ -z "$TMUX_PROGRAM" ]; then | |
# TMUX_PID=$(printf '%s' "$TMUX" | cut -d, -f2) | |
# TMUX_PROGRAM=$(lsof -b -w -a -d txt -p "$TMUX_PID" -Fn 2>/dev/null | perl -n -e "if (s/^n((?:.(?!dylib$|so$))+)$/\1/g) { print; exit } } exit 1; {" || readlink "/proc/$TMUX_PID/exe" 2>/dev/null || printf tmux) | |
# fi | |
# if [ "$TMUX_PROGRAM" = "tmux" ]; then | |
# tmux() { | |
# command tmux ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} "$@" | |
# } | |
# else | |
# tmux() { | |
# "$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} "$@" | |
# } | |
# fi | |
# | |
# _tmux_version=$(tmux -V | awk '{gsub(/[^0-9.]/, "", $2); print ($2+0) * 100}') | |
# | |
# _is_true() { | |
# [ "$1" = "true" ] || [ "$1" = "yes" ] || [ "$1" = "1" ] | |
# } | |
# | |
# _is_enabled() { | |
# [ "$1" = "enabled" ] | |
# } | |
# | |
# _is_disabled() { | |
# [ "$1" = "disabled" ] | |
# } | |
# | |
# _circled() { | |
# circled_digits='⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳' | |
# if [ "$1" -le 20 ] 2>/dev/null; then | |
# i=$(( $1 + 1 )) | |
# eval set -- "$circled_digits" | |
# eval echo "\${$i}" | |
# else | |
# echo "$1" | |
# fi | |
# } | |
# | |
# _decode_unicode_escapes() { | |
# printf '%s' "$*" | perl -CS -pe 's/(\\u([0-9A-Fa-f]{1,4})|\\U([0-9A-Fa-f]{1,8}))/chr(hex($2.$3))/eg' 2>/dev/null | |
# } | |
# | |
# if command -v pkill > /dev/null 2>&1; then | |
# _pkillf() { | |
# pkill -f "$@" || true | |
# } | |
# else | |
# case "$_uname_s" in | |
# *CYGWIN*) | |
# _pkillf() { | |
# while IFS= read -r pid; do | |
# kill "$pid" || true | |
# done << EOF | |
# $(grep -Eao "$@" /proc/*/cmdline | xargs -0 | sed -E -n 's,/proc/([0-9]+)/.+$,\1,pg') | |
# EOF | |
# } | |
# ;; | |
# *) | |
# # shellcheck disable=SC2009 | |
# _pkillf() { | |
# while IFS= read -r pid; do | |
# kill "$pid" || true | |
# done << EOF | |
# $(ps -x -o pid= -o command= | grep -E "$@" | cut -d' ' -f1) | |
# EOF | |
# } | |
# ;; | |
# esac | |
# fi | |
# | |
# _bar() { | |
# bar_palette=$(printf '%s' "$1" | tr ';' ',') | |
# bar_symbol_empty=$2 | |
# bar_symbol_full=$3 | |
# bar_length=$4 | |
# bar_value=$5 | |
# | |
# if [ "$bar_length" = "auto" ]; then | |
# columns=${6:-$(tmux -q display -p '#{client_width}' 2> /dev/null || echo 80)} | |
# if [ "$columns" -ge 160 ]; then | |
# bar_length=12 | |
# elif [ "$columns" -ge 130 ]; then | |
# bar_length=10 | |
# elif [ "$columns" -ge 120 ]; then | |
# bar_length=8 | |
# elif [ "$columns" -ge 100 ]; then | |
# bar_length=6 | |
# else | |
# bar_length=4 | |
# fi | |
# fi | |
# | |
# if echo "$bar_palette" | grep -q -E '^heat|gradient(,[#a-z0-9]{7,9})?$'; then | |
# # shellcheck disable=SC2086 | |
# { set -f; IFS=,; set -- $bar_palette; unset IFS; set +f; } | |
# palette_style=$1 | |
# bg=${2:-none} | |
# [ "$palette_style" = "gradient" ] && \ | |
# palette="196 202 208 214 220 226 190 154 118 82 46" | |
# [ "$palette_style" = "heat" ] && \ | |
# palette="243 245 247 144 143 142 184 214 208 202 196" | |
# | |
# palette=$(echo "$palette" | awk -v n="$bar_length" '{ for (i = 0; i < n; ++i) printf $(1 + (i * NF / n))" " }') | |
# eval set -- "$palette" | |
# | |
# full=$(awk "BEGIN { printf \"%.0f\", ($bar_value) * $bar_length }") | |
# bar="#[bg=$bg]" | |
# # shellcheck disable=SC2046 | |
# [ "$full" -gt 0 ] && \ | |
# bar="$bar$(printf "#[fg=colour%s]$bar_symbol_full" $(echo "$palette" | cut -d' ' -f1-"$full"))" | |
# # shellcheck disable=SC2046 | |
# empty=$((bar_length - full)) | |
# # shellcheck disable=SC2046 | |
# [ "$empty" -gt 0 ] && \ | |
# bar="$bar$(printf "#[fg=colour%s]$bar_symbol_empty" $(echo "$palette" | cut -d' ' -f$((full + 1))-$((full + empty))))" | |
# eval bar="$bar#[fg=colour\${$((full == 0 ? 1 : full))}]" | |
# elif echo "$bar_palette" | grep -q -E '^(([#a-z0-9]{7,9}|none),?){3}$'; then | |
# # shellcheck disable=SC2086 | |
# { set -f; IFS=,; set -- $bar_palette; unset IFS; set +f; } | |
# full_fg=$1 | |
# empty_fg=$2 | |
# bg=$3 | |
# | |
# full=$(awk "BEGIN { printf \"%.0f\", ($bar_value) * $bar_length }") | |
# [ "$bg" != "none" ] && \ | |
# bar="#[bg=$bg]" | |
# #shellcheck disable=SC2046 | |
# [ "$full" -gt 0 ] && \ | |
# bar="$bar#[fg=$full_fg]$(printf "%0.s$bar_symbol_full" $(seq 1 "$full"))" | |
# empty=$((bar_length - full)) | |
# #shellcheck disable=SC2046 | |
# [ "$empty" -gt 0 ] && \ | |
# bar="$bar#[fg=$empty_fg]$(printf "%0.s$bar_symbol_empty" $(seq 1 "$empty"))" && \ | |
# bar="$bar#[fg=$empty_fg]" | |
# fi | |
# | |
# printf '%s' "$bar" | |
# } | |
# | |
# _hbar() { | |
# hbar_palette=$(printf '%s' "$1" | tr ';' ',') | |
# hbar_value=$2 | |
# | |
# if echo "$hbar_palette" | grep -q -E '^heat|gradient(,[#a-z0-9]{7,9})?$'; then | |
# # shellcheck disable=SC2086 | |
# { set -f; IFS=,; set -- $hbar_palette; unset IFS; set +f; } | |
# palette_style=$1 | |
# [ "$palette_style" = "gradient" ] && \ | |
# palette="196 202 208 214 220 226 190 154 118 82 46" | |
# [ "$palette_style" = "heat" ] && \ | |
# palette="233 234 235 237 239 241 243 245 247 144 143 142 184 214 208 202 196" | |
# | |
# palette=$(echo "$palette" | awk -v n=8 '{ for (i = 0; i < n; ++i) printf $(1 + (i * NF / n))" " }') | |
# eval set -- "$palette" | |
# | |
# full=$(awk "BEGIN { printf \"%.0f\", ($hbar_value) * 8 }") | |
# eval hbar_fg="colour\${$((full == 0 ? 1 : full))}" | |
# elif echo "$hbar_palette" | grep -q -E '^([#a-z0-9]{7,9},?){3}$'; then | |
# # shellcheck disable=SC2086 | |
# { set -f; IFS=,; set -- $hbar_palette; unset IFS; set +f; } | |
# | |
# # shellcheck disable=SC2046 | |
# eval $(awk "BEGIN { printf \"hbar_fg=$%d\", (($hbar_value) - 0.001) * $# + 1 }") | |
# fi | |
# | |
# eval set -- "▏ ▎ ▍ ▌ ▋ ▊ ▉ █" | |
# # shellcheck disable=SC2046 | |
# eval $(awk "BEGIN { printf \"hbar_symbol=$%d\", ($hbar_value) * ($# - 1) + 1 }") | |
# hbar="#[bg=none]#[fg=${hbar_fg?}]${hbar_symbol?}" | |
# | |
# printf '%s' "$hbar" | |
# } | |
# | |
# _vbar() { | |
# vbar_palette=$(printf '%s' "$1" | tr ';' ',') | |
# vbar_value=$2 | |
# | |
# if echo "$vbar_palette" | grep -q -E '^heat|gradient(,[#a-z0-9]{7,9})?$'; then | |
# # shellcheck disable=SC2086 | |
# { set -f; IFS=,; set -- $vbar_palette; unset IFS; set +f; } | |
# palette_style=$1 | |
# [ "$palette_style" = "gradient" ] && \ | |
# palette="196 202 208 214 220 226 190 154 118 82 46" | |
# [ "$palette_style" = "heat" ] && \ | |
# palette="233 234 235 237 239 241 243 245 247 144 143 142 184 214 208 202 196" | |
# | |
# palette=$(echo "$palette" | awk -v n=8 '{ for (i = 0; i < n; ++i) printf $(1 + (i * NF / n))" " }') | |
# eval set -- "$palette" | |
# | |
# full=$(awk "BEGIN { printf \"%.0f\", ($vbar_value) * 8 }") | |
# eval vbar_fg="colour\${$((full == 0 ? 1 : full))}" | |
# elif echo "$vbar_palette" | grep -q -E '^([#a-z0-9]{7,9},?){3}$'; then | |
# # shellcheck disable=SC2086 | |
# { set -f; IFS=,; set -- $vbar_palette; unset IFS; set +f; } | |
# | |
# # shellcheck disable=SC2046 | |
# eval $(awk "BEGIN { printf \"vbar_fg=$%d\", (($vbar_value) - 0.001) * $# + 1 }") | |
# fi | |
# | |
# eval set -- "▁ ▂ ▃ ▄ ▅ ▆ ▇ █" | |
# # shellcheck disable=SC2046 | |
# eval $(awk "BEGIN { printf \"vbar_symbol=$%d\", ($vbar_value) * ($# - 1) + 1 }") | |
# vbar="#[bg=none]#[fg=${vbar_fg?}]${vbar_symbol?}" | |
# | |
# printf '%s' "$vbar" | |
# } | |
# | |
# _maximize_pane() { | |
# current_session=${1:-$(tmux display -p '#{session_name}')} | |
# current_pane=${2:-$(tmux display -p '#{pane_id}')} | |
# | |
# dead_panes=$(tmux list-panes -s -t "$current_session" -F '#{pane_dead} #{pane_id} #{pane_start_command}' | grep -E -o '^1 %.+maximized.+$' || true) | |
# restore=$(printf "%s" "$dead_panes" | sed -n -E -e "s/^1 $current_pane .+maximized.+'(%[0-9]+)'\"?$/tmux swap-pane -s \1 -t $current_pane \; kill-pane -t $current_pane/p"\ | |
# -e "s/^1 (%[0-9]+) .+maximized.+'$current_pane'\"?$/tmux swap-pane -s \1 -t $current_pane \; kill-pane -t \1/p") | |
# | |
# if [ -z "$restore" ]; then | |
# [ "$(tmux list-panes -t "$current_session:" | wc -l | sed 's/^ *//g')" -eq 1 ] && tmux display "Can't maximize with only one pane" && return | |
# info=$(tmux new-window -t "$current_session:" -F "#{session_name}:#{window_index}.#{pane_id}" -P "maximized... 2>/dev/null & \"$TMUX_PROGRAM\" ${TMUX_SOCKET:+-S \"$TMUX_SOCKET\"} setw -t \"$current_session:\" remain-on-exit on; printf \"\\033[\$(tput lines);0fPane has been maximized, press <prefix>+ to restore\n\" '$current_pane'") | |
# session_window=${info%.*} | |
# new_pane=${info#*.} | |
# | |
# retry=20 | |
# while [ "$("$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} list-panes -t "$session_window" -F '#{session_name}:#{window_index}.#{pane_id} #{pane_dead}' 2>/dev/null)" != "$info 1" ] && [ "$retry" -ne 0 ]; do | |
# sleep 0.1 | |
# retry=$((retry - 1)) | |
# done | |
# if [ "$retry" -eq 0 ]; then | |
# tmux display 'Unable to maximize pane' | |
# fi | |
# | |
# tmux setw -t "$session_window" remain-on-exit off \; swap-pane -s "$current_pane" -t "$new_pane" | |
# else | |
# $restore || tmux kill-pane | |
# fi | |
# } | |
# | |
# _toggle_mouse() { | |
# old=$(tmux show -gv mouse) | |
# new="" | |
# | |
# if [ "$old" = "on" ]; then | |
# new="off" | |
# else | |
# new="on" | |
# fi | |
# | |
# tmux set -g mouse $new | |
# } | |
# | |
# _battery_info() { | |
# battery_count=0 | |
# battery_charge=0 | |
# case "$_uname_s" in | |
# *Darwin*) | |
# while IFS= read -r line; do | |
# [ -z "$line" ] && continue | |
# percentage=$(printf '%s' "$line" | grep -E -o '[0-9]+%' || echo "0%") | |
# battery_charge=$(awk -v charge="$battery_charge" -v percentage="${percentage%%%}" 'BEGIN { print charge + percentage / 100 }') | |
# battery_count=$((battery_count + 1)) | |
# done << EOF | |
# $(pmset -g batt | grep 'InternalBattery') | |
# EOF | |
# ;; | |
# *Linux*) | |
# while IFS= read -r batpath; do | |
# [ -z "$batpath" ] && continue | |
# grep -i -q device "$batpath/scope" 2> /dev/null && continue | |
# | |
# bat_capacity="$batpath/capacity" | |
# if [ -r "$bat_capacity" ]; then | |
# battery_charge=$(awk -v charge="$battery_charge" -v capacity="$(cat "$bat_capacity")" 'BEGIN { print charge + (capacity > 100 ? 100 : capacity) / 100 }') | |
# else | |
# bat_energy_full="$batpath/energy_full" | |
# bat_energy_now="$batpath/energy_now" | |
# if [ -r "$bat_energy_full" ] && [ -r "$bat_energy_now" ]; then | |
# battery_charge=$(awk -v charge="$battery_charge" -v energy_now="$(cat "$bat_energy_now")" -v energy_full="$(cat "$bat_energy_full")" 'BEGIN { print charge + energy_now / energy_full }') | |
# fi | |
# fi | |
# battery_count=$((battery_count + 1)) | |
# done << EOF | |
# $(find /sys/class/power_supply -maxdepth 1 -iname '*bat*') | |
# EOF | |
# ;; | |
# *CYGWIN*|*MSYS*|*MINGW*) | |
# while IFS= read -r line; do | |
# [ -z "$line" ] && continue | |
# battery_charge=$(printf '%s' "$line" | awk -v charge="$battery_charge" '{ print charge + $2 / 100 }') | |
# battery_count=$((battery_count + 1)) | |
# done << EOF | |
# $(wmic path Win32_Battery get BatteryStatus, EstimatedChargeRemaining 2> /dev/null | tr -d '\r' | tail -n +2 || true) | |
# EOF | |
# ;; | |
# *OpenBSD*) | |
# for batid in 0 1 2; do | |
# sysctl -n "hw.sensors.acpibat$batid.raw0" 2>&1 | grep -q 'not found' && continue | |
# if sysctl -n "hw.sensors.acpibat$batid" | grep -q amphour; then | |
# battery_charge=$(awk -v charge="$battery_charge" -v remaining="$(sysctl -n hw.sensors.acpibat$batid.amphour3 | cut -d' ' -f1)" -v full="$(sysctl -n hw.sensors.acpibat$batid.amphour0 | cut -d' ' -f1)" 'BEGIN { print charge + remaining / full }') | |
# else | |
# battery_charge=$(awk -v charge="$battery_charge" -v remaining="$(sysctl -n hw.sensors.acpibat$batid.watthour3 | cut -d' ' -f1)" -v full="$(sysctl -n hw.sensors.acpibat$batid.watthour0 | cut -d' ' -f1)" 'BEGIN { print charge + remaining / full }') | |
# fi | |
# battery_count=$((battery_count + 1)) | |
# done | |
# ;; | |
# *FreeBSD*) | |
# battery_charge=$(awk -v charge="$(sysctl -n 'hw.acpi.battery.life')" 'BEGIN { print charge / 100 }') | |
# battery_count=1 | |
# ;; | |
# esac | |
# if [ "$battery_count" -ne 0 ]; then | |
# battery_charge=$(awk -v charge="$battery_charge" -v count="$battery_count" 'BEGIN { print charge / count }') | |
# fi | |
# | |
# if [ "$battery_charge" = 0 ]; then | |
# tmux set -ug '@battery_percentage' \;\ | |
# set -ug '@battery_charge' | |
# else | |
# battery_percentage="$(awk "BEGIN { printf \"%.0f%%\", ($battery_charge) * 100 }")" | |
# | |
# tmux set -g '@battery_percentage' "$battery_percentage" \;\ | |
# set -g '@battery_charge' "$battery_charge" | |
# fi | |
# } | |
# | |
# _battery_status() { | |
# battery_status_charging=$1 | |
# battery_status_discharging=$2 | |
# | |
# case "$_uname_s" in | |
# *Darwin*) | |
# while IFS= read -r line; do | |
# [ -z "$line" ] && continue | |
# battery_discharging=$(printf '%s' "$line" | grep -qi "discharging" && echo "true" || echo "false") | |
# done << EOF | |
# $(pmset -g batt | grep 'InternalBattery') | |
# EOF | |
# ;; | |
# *Linux*) | |
# while IFS= read -r batpath; do | |
# [ -z "$batpath" ] && continue | |
# grep -i -q device "$batpath/scope" 2> /dev/null && continue | |
# | |
# battery_discharging=$(grep -qi "discharging" "$batpath/status" && echo "true" || echo "false") | |
# done << EOF | |
# $(find /sys/class/power_supply -maxdepth 1 -iname '*bat*') | |
# EOF | |
# ;; | |
# *CYGWIN*|*MSYS*|*MINGW*) | |
# while IFS= read -r line; do | |
# [ -z "$line" ] && continue | |
# battery_discharging=$(printf '%s' "$line" | awk '{ s = ($1 == 1) ? "true" : "false"; print s }') | |
# done << EOF | |
# $(wmic path Win32_Battery get BatteryStatus, EstimatedChargeRemaining 2> /dev/null | tr -d '\r' | tail -n +2 || true) | |
# EOF | |
# ;; | |
# *OpenBSD*) | |
# for batid in 0 1 2; do | |
# battery_discharging=$(sysctl -n "hw.sensors.acpibat$batid.raw0" | grep -q 1 && echo "true" || echo "false") | |
# done | |
# ;; | |
# *FreeBSD*) | |
# battery_discharging=$(sysctl -n 'hw.acpi.battery.state' | grep -q 1 && echo "true" || echo "false") | |
# ;; | |
# esac | |
# | |
# if [ -z "$battery_discharging" ]; then | |
# tmux set -ug '@battery_status' | |
# return | |
# fi | |
# | |
# if [ "$battery_discharging" = "true" ]; then | |
# battery_status="$battery_status_discharging" | |
# else | |
# battery_status="$battery_status_charging" | |
# fi | |
# | |
# tmux set -g '@battery_status' "$battery_status" | |
# } | |
# | |
# _pane_info() { | |
# pane_pid="$1" | |
# pane_tty="${2##/dev/}" | |
# case "$_uname_s" in | |
# *CYGWIN*) | |
# ps -al | tail -n +2 | awk -v pane_pid="$pane_pid" -v tty="$pane_tty" ' | |
# ((/ssh/ && !/-W/ && !/tsh proxy ssh/ &!/sss_ssh_knownhostsproxy/) || !/ssh/) && !/tee/ && $5 == tty { | |
# user[$1] = $6; if (!child[$2]) child[$2] = $1 | |
# } | |
# END { | |
# pid = pane_pid | |
# while (child[pid]) | |
# pid = child[pid] | |
# | |
# file = "/proc/" pid "/cmdline"; getline command < file; close(file) | |
# gsub(/\0/, " ", command) | |
# "id -un " user[pid] | getline username | |
# print pid":"username":"command | |
# } | |
# ' | |
# ;; | |
# *Linux*) | |
# ps -t "$pane_tty" --sort=lstart -o user=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -o pid= -o ppid= -o command= | awk -v pane_pid="$pane_pid" ' | |
# ((/ssh/ && !/-W/ && !/tsh proxy ssh/ && !/sss_ssh_knownhostsproxy/) || !/ssh/) && !/tee/ { | |
# user[$2] = $1; if (!child[$3]) child[$3] = $2; pid=$2; $1 = $2 = $3 = ""; command[pid] = substr($0,4) | |
# } | |
# END { | |
# pid = pane_pid | |
# while (child[pid]) | |
# pid = child[pid] | |
# | |
# print pid":"user[pid]":"command[pid] | |
# } | |
# ' | |
# ;; | |
# *) | |
# ps -t "/dev/$pane_tty" -o user=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -o pid= -o ppid= -o command= | awk -v pane_pid="$pane_pid" ' | |
# ((/ssh/ && !/-W/ && !/tsh proxy ssh/ && !/sss_ssh_knownhostsproxy/) || !/ssh/) && !/tee/ { | |
# user[$2] = $1; if (!child[$3]) child[$3] = $2; pid=$2; $1 = $2 = $3 = ""; command[pid] = substr($0,4) | |
# } | |
# END { | |
# pid = pane_pid | |
# while (child[pid]) | |
# pid = child[pid] | |
# | |
# print pid":"user[pid]":"command[pid] | |
# } | |
# ' | |
# ;; | |
# esac | |
# } | |
# | |
# _ssh_or_mosh_args() { | |
# case "$1" in | |
# *ssh*) | |
# args=$(printf '%s' "$1" | perl -n -e 'print if s/.*?\bssh[\w_-]*\s*(.*)/\1/') | |
# ;; | |
# *mosh-client*) | |
# args=$(printf '%s' "$1" | sed -E -e 's/.*mosh-client -# (.*)\|.*$/\1/' -e 's/-[^ ]*//g' -e 's/\d:\d//g') | |
# ;; | |
# esac | |
# | |
# printf '%s' "$args" | |
# } | |
# | |
# _username() { | |
# pane_pid=${1:-$(tmux display -p '#{pane_pid}')} | |
# pane_tty=${2:-$(tmux display -p '#{b:pane_tty}')} | |
# ssh_only=$3 | |
# | |
# pane_info=$(_pane_info "$pane_pid" "$pane_tty") | |
# command=${pane_info#*:} | |
# command=${command#*:} | |
# | |
# ssh_or_mosh_args=$(_ssh_or_mosh_args "$command") | |
# if [ -n "$ssh_or_mosh_args" ]; then | |
# # shellcheck disable=SC2086 | |
# username=$(ssh -G $ssh_or_mosh_args 2>/dev/null | awk '/^user / { print $2; exit }') | |
# # shellcheck disable=SC2086 | |
# [ -z "$username" ] && username=$(ssh $ssh_or_mosh_args -T -o ControlPath=none -o ProxyCommand="sh -c 'echo %%username%% %r >&2'" 2>&1 | awk '/^%username% / { print $2; exit }') | |
# # shellcheck disable=SC2086 | |
# [ -z "$username" ] && username=$(ssh $ssh_or_mosh_args -v -T -o ControlPath=none -o ProxyCommand=false -o IdentityFile='%%username%%/%r' 2>&1 | awk '/%username%/ { print substr($4,12); exit }') | |
# else | |
# if ! _is_true "$ssh_only"; then | |
# username=${pane_info#*:} | |
# username=${username%%:*} | |
# fi | |
# fi | |
# | |
# printf '%s\n' "$username" | |
# } | |
# | |
# _hostname() { | |
# pane_pid=${1:-$(tmux display -p '#{pane_pid}')} | |
# pane_tty=${2:-$(tmux display -p '#{b:pane_tty}')} | |
# ssh_only=$3 | |
# full=$4 | |
# h_or_H=$5 | |
# | |
# pane_info=$(_pane_info "$pane_pid" "$pane_tty") | |
# command=${pane_info#*:} | |
# command=${command#*:} | |
# | |
# ssh_or_mosh_args=$(_ssh_or_mosh_args "$command") | |
# if [ -n "$ssh_or_mosh_args" ]; then | |
# # shellcheck disable=SC2086 | |
# hostname=$(ssh -G $ssh_or_mosh_args 2>/dev/null | awk '/^hostname / { print $2; exit }') | |
# # shellcheck disable=SC2086 | |
# [ -z "$hostname" ] && hostname=$(ssh -T -o ControlPath=none -o ProxyCommand="sh -c 'echo %%hostname%% %h >&2'" $ssh_or_mosh_args 2>&1 | awk '/^%hostname% / { print $2; exit }') | |
# | |
# if ! _is_true "$full"; then | |
# case "$hostname" in | |
# *[a-z-].*) | |
# hostname=${hostname%%.*} | |
# ;; | |
# 127.0.0.1) | |
# hostname="localhost" | |
# ;; | |
# esac | |
# fi | |
# else | |
# if ! _is_true "$ssh_only"; then | |
# hostname="$h_or_H" | |
# fi | |
# fi | |
# | |
# printf '%s\n' "$hostname" | |
# } | |
# | |
# _root() { | |
# pane_pid=${1:-$(tmux display -p '#{pane_pid}')} | |
# pane_tty=${2:-$(tmux display -p '#{b:pane_tty}')} | |
# root=$3 | |
# | |
# username=$(_username "$pane_pid" "$pane_tty" false) | |
# | |
# [ "$username" = "root" ] && echo "$root" | |
# } | |
# | |
# _uptime() { | |
# case "$_uname_s" in | |
# *Darwin*|*FreeBSD*) | |
# boot=$(sysctl -n kern.boottime 2>/dev/null | awk -F'[ ,:]+' '{ print $4 }') | |
# now=$(date +%s) | |
# ;; | |
# *Linux*|*CYGWIN*|*MSYS*|*MINGW*) | |
# boot=0 | |
# now=$(cut -d' ' -f1 < /proc/uptime) | |
# ;; | |
# *OpenBSD*) | |
# boot=$(sysctl -n kern.boottime) | |
# now=$(date +%s) | |
# esac | |
# # shellcheck disable=SC1004 | |
# awk -v tmux="$TMUX_PROGRAM ${TMUX_SOCKET:+-S "$TMUX_SOCKET"}" -v boot="$boot" -v now="$now" ' | |
# BEGIN { | |
# uptime = now - boot | |
# y = int(uptime / 31536000) | |
# dy = int(uptime / 86400) % 365 | |
# d = int(uptime / 86400) | |
# h = int(uptime / 3600) % 24 | |
# m = int(uptime / 60) % 60 | |
# s = int(uptime) % 60 | |
# | |
# system(tmux " set -g @uptime_y " y + 0 " \\;" \ | |
# " set -g @uptime_dy " dy + 0 " \\;" \ | |
# " set -g @uptime_d " d + 0 " \\;" \ | |
# " set -g @uptime_h " h + 0 " \\;" \ | |
# " set -g @uptime_m " m + 0 " \\;" \ | |
# " set -g @uptime_s " s + 0) | |
# }' | |
# } | |
# | |
# _loadavg() { | |
# case "$_uname_s" in | |
# *Darwin*|*FreeBSD*) | |
# tmux set -g @loadavg "$(sysctl -n vm.loadavg 2>/dev/null | cut -d' ' -f2)" | |
# ;; | |
# *Linux*|*CYGWIN*) | |
# tmux set -g @loadavg "$(cut -d' ' -f1 < /proc/loadavg)" | |
# ;; | |
# *OpenBSD*) | |
# tmux set -g @loadavg "$(sysctl -n vm.loadavg 2>/dev/null | cut -d' ' -f1)" | |
# ;; | |
# esac | |
# } | |
# | |
# _new_window_ssh() { | |
# pane_pid=${1:-$(tmux display -p '#{pane_pid}')} | |
# pane_tty=${2:-$(tmux display -p '#{b:pane_tty}')} | |
# shift 2 | |
# | |
# pane_info=$(_pane_info "$pane_pid" "$pane_tty") | |
# command=${pane_info#*:} | |
# command=${command#*:} | |
# | |
# case "$command" in | |
# *mosh-client*) | |
# # shellcheck disable=SC2046 | |
# tmux new-window "$@" mosh $(echo "$command" | sed -E -e 's/.*mosh-client -# (.*)\|.*$/\1/') | |
# ;; | |
# *ssh*) | |
# # shellcheck disable=SC2046 | |
# tmux new-window "$@" $(echo "$command" | sed -e 's/;/\\;/g') | |
# ;; | |
# *) | |
# tmux new-window "$@" | |
# esac | |
# } | |
# | |
# _new_window() { | |
# _new_window_ssh "$@" | |
# } | |
# | |
# _split_window_ssh() { | |
# pane_pid=${1:-$(tmux display -p '#{pane_pid}')} | |
# pane_tty=${2:-$(tmux display -p '#{b:pane_tty}')} | |
# shift 2 | |
# | |
# pane_info=$(_pane_info "$pane_pid" "$pane_tty") | |
# command=${pane_info#*:} | |
# command=${command#*:} | |
# | |
# case "$command" in | |
# *mosh-client*) | |
# # shellcheck disable=SC2046 | |
# tmux split-window "$@" mosh $(echo "$command" | sed -E -e 's/.*mosh-client -# (.*)\|.*$/\1/') | |
# ;; | |
# *ssh*) | |
# # shellcheck disable=SC2046 | |
# tmux split-window "$@" $(echo "$command" | sed -e 's/;/\\;/g') | |
# ;; | |
# *) | |
# tmux split-window "$@" | |
# esac | |
# } | |
# | |
# _split_window() { | |
# _split_window_ssh "$@" | |
# } | |
# | |
# _apply_tmux_256color() { | |
# case "$(tmux show -gv default-terminal)" in | |
# tmux-256color|tmux-direct) | |
# return | |
# ;; | |
# esac | |
# | |
# # when tmux-256color is available, use it | |
# # on macOS though, make sure to use /usr/bin/infocmp to probe if it's availalbe system wide | |
# case "$_uname_s" in | |
# *Darwin*) | |
# if /usr/bin/infocmp -x tmux-256color > /dev/null 2>&1; then | |
# tmux set -g default-terminal 'tmux-256color' | |
# fi | |
# ;; | |
# *) | |
# if command infocmp -x tmux-256color > /dev/null 2>&1; then | |
# tmux set -g default-terminal 'tmux-256color' | |
# fi | |
# ;; | |
# esac | |
# } | |
# | |
# _apply_24b() { | |
# tmux_conf_theme_24b_colour=${tmux_conf_theme_24b_colour:-auto} | |
# tmux_conf_24b_colour=${tmux_conf_24b_colour:-$tmux_conf_theme_24b_colour} | |
# if [ "$tmux_conf_24b_colour" = "auto" ]; then | |
# case "$COLORTERM" in | |
# truecolor|24bit) | |
# apply_24b=true | |
# ;; | |
# esac | |
# if [ "$apply_24b" = "" ] && [ "$(tput colors)" = "16777216" ]; then | |
# apply_24b=true | |
# fi | |
# elif _is_true "$tmux_conf_24b_colour"; then | |
# apply_24b=true | |
# fi | |
# if [ "$apply_24b" = "true" ]; then | |
# case "$TERM" in | |
# screen-*|tmux-*) | |
# ;; | |
# *) | |
# tmux set-option -ga terminal-overrides ",*256col*:Tc" | |
# ;; | |
# esac | |
# fi | |
# } | |
# | |
# _apply_bindings() { | |
# cfg=$(mktemp) && trap 'rm -f $cfg*' EXIT | |
# | |
# tmux_conf_preserve_stock_bindings=${tmux_conf_preserve_stock_bindings:-false} | |
# tmux list-keys | grep -vF 'TMUX_CONF_LOCAL' | grep -E 'new-window|split(-|_)window|new-session|copy-selection|copy-pipe' > "$cfg" | |
# if _is_true "$tmux_conf_preserve_stock_bindings"; then | |
# probe_socket="$(dirname "$TMUX_SOCKET")/tmux-stock-bindings-$$" | |
# TMUX_SOCKET="$probe_socket" tmux -f /dev/null list-keys >> "$cfg" | |
# rm -f "%probe_socket" | |
# fi | |
# | |
# # tmux 3.0 doesn't include 02254d1e5c881be95fd2fc37b4c4209640b6b266 and the | |
# # output of list-keys can be truncated | |
# perl -p -i -e "s/'#\{\?window_zoomed_flag,Unzoom,Zoom\}' 'z' \{resize-pane -$/'#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}\"/g" "$cfg" | |
# | |
# tmux_conf_new_window_retain_current_path=${tmux_conf_new_window_retain_current_path:-true} | |
# if ! _is_disabled "$tmux_conf_new_window_retain_current_path"; then | |
# perl -p -i -e " | |
# s/\brun-shell\b\s+(\"|')cut\s+-c3-\s+(.+?)\s+\|\s+sh\s+-s\s+_new_window\s+#\{pane_pid\}\s+#\{b:pane_tty\}([^\n\1]*?)(?:\s+-c\s+((?:\\\\{1,3}\")?|\"?|'?)#\{pane_current_path\}\4)([^\n\1]*?)\1/run-shell \1cut -c3- \2 | sh -s _new_window #\{pane_pid\} #\{b:pane_tty\}\3\5\1/g | |
# ; | |
# s/\brun-shell\b\s+(\"|')cut\s+-c3-\s+.+?\s+\|\s+sh\s+-s\s+_new_window\s+#\{pane_pid\}\s+#\{b:pane_tty\}(\s+.+?)?\1/new-window\2/g | |
# ; | |
# s/\bnew-window\b([^;}\n]*?)(?:\s+-c\s+((?:\\\\\")?|\"?|'?)#\{pane_current_path\}\2)/new-window\1/g" \ | |
# "$cfg" | |
# fi | |
# | |
# perl -p -i -e " | |
# s,\bnew-window\b((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!\bssh\b)[^\s]+))*)?(?:\s+(\bssh\b))((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!\bssh\b)[^\s]+))*)?,run-shell 'cut -c3- \"$TMUX_CONF\" | sh -s _new_window_ssh #\{pane_pid\} #\{b:pane_tty\}\1',g if /\bnew-window\b((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!ssh)[^\s]+))*)?(?:\s+(ssh))((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!ssh)[^\s]+))*)?/"\ | |
# "$cfg" | |
# | |
# tmux_conf_new_window_reconnect_ssh=${tmux_conf_new_window_reconnect_ssh:-false} | |
# if ! _is_disabled "$tmux_conf_new_window_reconnect_ssh" && _is_true "$tmux_conf_new_window_reconnect_ssh"; then | |
# perl -p -i -e "s,\bnew-window\b([^;}\n\"]*),run-shell 'cut -c3- \"$TMUX_CONF\" | sh -s _new_window #\{pane_pid\} #\{b:pane_tty\}\1',g" "$cfg" | |
# fi | |
# | |
# tmux_conf_new_window_retain_current_path=${tmux_conf_new_window_retain_current_path:-false} | |
# if ! _is_disabled "$tmux_conf_new_window_retain_current_path" && _is_true "$tmux_conf_new_window_retain_current_path"; then | |
# perl -p -i -e " | |
# s/\bnew-window\b(?!\s+(?:-|}))/{$&}/g if /\bdisplay-menu\b/ | |
# ; | |
# s/\bnew-window\b/new-window -c '#{pane_current_path}'/g | |
# ; | |
# s/\brun-shell\b\s+'cut\s+-c3-\s+(.+?)\s+\|\s+sh\s+-s\s+_new_window(_ssh)?\s+#\{pane_pid\}\s+#\{b:pane_tty\}([^}\n']*)'/run-shell 'cut -c3- \1 | sh -s _new_window\2 #\{pane_pid\} #\{b:pane_tty\} -c \\\\\"#\{pane_current_path\}\\\\\"\3'/g if /\bdisplay-menu\b/ | |
# ; | |
# s/\brun-shell\b\s+'cut\s+-c3-\s+(.+?)\s+\|\s+sh\s+-s\s+_new_window(_ssh)?\s+#\{pane_pid\}\s+#\{b:pane_tty\}([^}\n']*)'/run-shell 'cut -c3- \1 | sh -s _new_window\2 #\{pane_pid\} #\{b:pane_tty\} -c \"#\{pane_current_path\}\"\3'/g" \ | |
# "$cfg" | |
# fi | |
# | |
# tmux_conf_new_pane_retain_current_path=${tmux_conf_new_pane_retain_current_path:-true} | |
# if ! _is_disabled "$tmux_conf_new_pane_retain_current_path"; then | |
# perl -p -i -e " | |
# s/\brun-shell\b\s+(\"|')cut\s+-c3-\s+(.+?)\s+\|\s+sh\s+-s\s+_split_window\s+#\{pane_pid\}\s+#\{b:pane_tty\}([^\n\1]*?)(?:\s+-c\s+((?:\\\\{1,3}\")?|\"?|'?)#\{pane_current_path\}\4)([^\n\1]*?)\1/run-shell \1cut -c3- \2 | sh -s _split_window #\{pane_pid\} #\{b:pane_tty\}\3\5\1/g | |
# ; | |
# s/\brun-shell\b\s+(\"|')cut\s+-c3-\s+.+?\s+\|\s+sh\s+-s\s+_split_window\s+#\{pane_pid\}\s+#\{b:pane_tty\}(\s+.+?)?\1/split-window\2/g | |
# ; | |
# s/\bsplit-window\b([^;}\n]*?)(?:\s+-c\s+((?:\\\\\")?|\"?|'?)#\{pane_current_path\}\2)/split-window\1/g" \ | |
# "$cfg" | |
# fi | |
# | |
# perl -p -i -e " | |
# s,\bsplit-window\b((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!\bssh\b)[^\s]+))*)?(?:\s+(\bssh\b))((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!\bssh\b)[^\s]+))*)?,run-shell 'cut -c3- \"$TMUX_CONF\" | sh -s _split_window_ssh #\{pane_pid\} #\{b:pane_tty\}\1',g if /\bsplit-window\b((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!ssh)[^\s]+))*)?(?:\s+(ssh))((?:(?:[ \t]+-[bdfhIvP])|(?:[ \t]+-[celtF][ \t]+(?!ssh)[^\s]+))*)?/"\ | |
# "$cfg" | |
# | |
# tmux_conf_new_pane_reconnect_ssh=${tmux_conf_new_pane_reconnect_ssh:-false} | |
# if ! _is_disabled "$tmux_conf_new_pane_reconnect_ssh" && _is_true "$tmux_conf_new_pane_reconnect_ssh"; then | |
# perl -p -i -e "s,\bsplit-window\b([^;}\n\"]*),run-shell 'cut -c3- \"$TMUX_CONF\" | sh -s _split_window #\{pane_pid\} #\{b:pane_tty\}\1',g" "$cfg" | |
# fi | |
# | |
# if ! _is_disabled "$tmux_conf_new_pane_retain_current_path" && _is_true "$tmux_conf_new_pane_retain_current_path"; then | |
# perl -p -i -e " | |
# s/\bsplit-window\b(?!\s+(?:-|}))/{$&}/g if /\bdisplay-menu\b/ | |
# ; | |
# s/\bsplit-window\b/split-window -c '#{pane_current_path}'\1/g | |
# ; | |
# s/\brun-shell\b\s+'cut\s+-c3-\s+(.+?)\s+\|\s+sh\s+-s\s+_split_window(_ssh)?\s+#\{pane_pid\}\s+#\{b:pane_tty\}([^}\n']*)'/run-shell 'cut -c3- \1 | sh -s _split_window\2 #\{pane_pid\} #\{b:pane_tty\} -c \\\\\"#\{pane_current_path\}\\\\\"\3'/g if /\bdisplay-menu\b/ | |
# ; | |
# s/\brun-shell\b\s+'cut\s+-c3-\s+(.+?)\s+\|\s+sh\s+-s\s+_split_window(_ssh)?\s+#\{pane_pid\}\s+#\{b:pane_tty\}([^}\n']*)'/run-shell 'cut -c3- \1 | sh -s _split_window\2 #\{pane_pid\} #\{b:pane_tty\} -c \"#\{pane_current_path\}\"\3'/g" \ | |
# "$cfg" | |
# fi | |
# | |
# tmux_conf_new_session_prompt=${tmux_conf_new_session_prompt:-false} | |
# if ! _is_disabled "$tmux_conf_new_session_prompt" && _is_true "$tmux_conf_new_session_prompt"; then | |
# perl -p -i -e " | |
# s/(?<!command-prompt -p )\b(new-session)\b(?!\s+(?:-|}))/{$&}/g if /\bdisplay-menu\b/ | |
# ; | |
# s/(?<!\bcommand-prompt -p )\bnew-session\b(?! -s)/command-prompt -p new-session \"new-session -s '%%'\"/g" \ | |
# "$cfg" | |
# else | |
# perl -p -i -e "s/\bcommand-prompt\s+-p\s+new-session\s+\"new-session\s+-s\s+'%%'\"/new-session/g" "$cfg" | |
# fi | |
# | |
# tmux_conf_new_session_retain_current_path=${tmux_conf_new_session_retain_current_path:-false} | |
# if ! _is_disabled "$tmux_conf_new_session_retain_current_path" && _is_true "$tmux_conf_new_session_retain_current_path"; then | |
# perl -p -i -e " | |
# s/(?<!\bcommand-prompt -p )\bnew-session\b/new-session -c '#{pane_current_path}'/g" \ | |
# "$cfg" | |
# else | |
# perl -p -i -e " | |
# s/\bnew-session\b([^;}\n]*?)(?:\s+-c\s+((?:\\\\\")?|\"?|'?)#\{pane_current_path\}\2)/new-session\1/g" \ | |
# "$cfg" | |
# fi | |
# | |
# tmux_conf_copy_to_os_clipboard=${tmux_conf_copy_to_os_clipboard:-false} | |
# command -v xsel > /dev/null 2>&1 && command='xsel -i -b' | |
# ! command -v xsel > /dev/null 2>&1 && command -v xclip > /dev/null 2>&1 && command='xclip -i -selection clipboard > \/dev\/null 2>\&1' | |
# [ "$XDG_SESSION_TYPE" = "wayland" ] && command -v wl-copy > /dev/null 2>&1 && command='wl-copy' | |
# command -v pbcopy > /dev/null 2>&1 && command='pbcopy' | |
# command -v clip.exe > /dev/null 2>&1 && command='clip\.exe' | |
# [ -c /dev/clipboard ] && command='cat > \/dev\/clipboard' | |
# | |
# if [ -n "$command" ]; then | |
# if ! _is_disabled "$tmux_conf_copy_to_os_clipboard" && _is_true "$tmux_conf_copy_to_os_clipboard"; then | |
# perl -p -i -e "s/(?!.*?$command)\bcopy-(?:selection|pipe)(-end-of-line|-and-cancel|-end-of-line-and-cancel|-no-clear)?\b/copy-pipe\1 '$command'/g" "$cfg" | |
# else | |
# if [ "$_tmux_version" -ge 320 ]; then | |
# perl -p -i -e "s/\bcopy-pipe(-end-of-line|-and-cancel|end-of-line-and-cancel|-no-clear)?\b\s+(\"|')?$command\2?/copy-pipe\1/g" "$cfg" | |
# else | |
# perl -p -i -e "s/\bcopy-pipe(-end-of-line|-and-cancel|end-of-line-and-cancel|-no-clear)?\b\s+(\"|')?$command\2?/copy-selection\1/g" "$cfg" | |
# fi | |
# fi | |
# fi | |
# | |
# # until tmux >= 3.0, output of tmux list-keys can't be consumed back by tmux source-file without applying some escapings | |
# awk < "$cfg" \ | |
# '{i = $2 == "-T" ? 4 : 5; gsub(/^[;]$/, "\\\\&", $i); gsub(/^[$"#~]$/, "'"'"'&'"'"'", $i); gsub(/^['"'"']$/, "\"&\"", $i); print}' > "$cfg.in" | |
# | |
# # ignore bindings with errors | |
# if ! tmux source-file "$cfg.in"; then | |
# if tmux source-file -v /dev/null 2> /dev/null; then | |
# verbose_flag='-v' | |
# fi | |
# while ! out=$(tmux source-file "${verbose_flag:+$verbose_flag}" "$cfg.in"); do | |
# line=$(printf "%s" "$out" | tail -1 | cut -d':' -f2) | |
# perl -n -i -e "if ($. != $line) { print }" "$cfg.in" | |
# done | |
# fi | |
# | |
# tmux_conf_urlscan_options=${tmux_conf_urlscan_options:---compact --dedupe} | |
# if command -v urlscan > /dev/null 2>&1; then | |
# tmux bind U run "cut -c3- '#{TMUX_CONF}' | sh -s _urlscan '#{pane_id}' $tmux_conf_urlscan_options" | |
# elif command -v urlview > /dev/null 2>&1; then | |
# tmux bind U run "cut -c3- '#{TMUX_CONF}' | sh -s _urlview '#{pane_id}'" | |
# fi | |
# } | |
# | |
# _apply_theme() { | |
# tmux_conf_theme=${tmux_conf_theme:-enabled} | |
# if ! _is_disabled "$tmux_conf_theme"; then | |
# | |
# # -- default theme ------------------------------------------------------- | |
# | |
# tmux_conf_theme_colour_1=${tmux_conf_theme_colour_1:-#080808} # dark gray | |
# tmux_conf_theme_colour_2=${tmux_conf_theme_colour_2:-#303030} # gray | |
# tmux_conf_theme_colour_3=${tmux_conf_theme_colour_3:-#8a8a8a} # light gray | |
# tmux_conf_theme_colour_4=${tmux_conf_theme_colour_4:-#00afff} # light blue | |
# tmux_conf_theme_colour_5=${tmux_conf_theme_colour_5:-#ffff00} # yellow | |
# tmux_conf_theme_colour_6=${tmux_conf_theme_colour_6:-#080808} # dark gray | |
# tmux_conf_theme_colour_7=${tmux_conf_theme_colour_7:-#e4e4e4} # white | |
# tmux_conf_theme_colour_8=${tmux_conf_theme_colour_8:-#080808} # dark gray | |
# tmux_conf_theme_colour_9=${tmux_conf_theme_colour_9:-#ffff00} # yellow | |
# tmux_conf_theme_colour_10=${tmux_conf_theme_colour_10:-#ff00af} # pink | |
# tmux_conf_theme_colour_11=${tmux_conf_theme_colour_11:-#5fff00} # green | |
# tmux_conf_theme_colour_12=${tmux_conf_theme_colour_12:-#8a8a8a} # light gray | |
# tmux_conf_theme_colour_13=${tmux_conf_theme_colour_13:-#e4e4e4} # white | |
# tmux_conf_theme_colour_14=${tmux_conf_theme_colour_14:-#080808} # dark gray | |
# tmux_conf_theme_colour_15=${tmux_conf_theme_colour_15:-#080808} # dark gray | |
# tmux_conf_theme_colour_16=${tmux_conf_theme_colour_16:-#d70000} # red | |
# tmux_conf_theme_colour_17=${tmux_conf_theme_colour_17:-#e4e4e4} # white | |
# | |
# # -- panes --------------------------------------------------------------- | |
# | |
# tmux_conf_theme_window_fg=${tmux_conf_theme_window_fg:-default} | |
# tmux_conf_theme_window_bg=${tmux_conf_theme_window_bg:-default} | |
# tmux_conf_theme_highlight_focused_pane=${tmux_conf_theme_highlight_focused_pane:-false} | |
# tmux_conf_theme_focused_pane_fg=${tmux_conf_theme_focused_pane_fg:-default} | |
# tmux_conf_theme_focused_pane_bg=${tmux_conf_theme_focused_pane_bg:-$tmux_conf_theme_colour_2} | |
# | |
# window_style="fg=$tmux_conf_theme_window_fg,bg=$tmux_conf_theme_window_bg" | |
# if _is_true "$tmux_conf_theme_highlight_focused_pane"; then | |
# window_active_style="fg=$tmux_conf_theme_focused_pane_fg,bg=$tmux_conf_theme_focused_pane_bg" | |
# else | |
# window_active_style="default" | |
# fi | |
# | |
# tmux_conf_theme_pane_border_style=${tmux_conf_theme_pane_border_style:-thin} | |
# tmux_conf_theme_pane_border=${tmux_conf_theme_pane_border:-$tmux_conf_theme_colour_2} | |
# tmux_conf_theme_pane_active_border=${tmux_conf_theme_pane_active_border:-$tmux_conf_theme_colour_4} | |
# tmux_conf_theme_pane_border_fg=${tmux_conf_theme_pane_border_fg:-$tmux_conf_theme_pane_border} | |
# tmux_conf_theme_pane_active_border_fg=${tmux_conf_theme_pane_active_border_fg:-$tmux_conf_theme_pane_active_border} | |
# case "$tmux_conf_theme_pane_border_style" in | |
# fat) | |
# tmux_conf_theme_pane_border_bg=${tmux_conf_theme_pane_border_bg:-$tmux_conf_theme_pane_border_fg} | |
# tmux_conf_theme_pane_active_border_bg=${tmux_conf_theme_pane_active_border_bg:-$tmux_conf_theme_pane_active_border_fg} | |
# ;; | |
# thin|*) | |
# tmux_conf_theme_pane_border_bg=${tmux_conf_theme_pane_border_bg:-default} | |
# tmux_conf_theme_pane_active_border_bg=${tmux_conf_theme_pane_active_border_bg:-default} | |
# ;; | |
# esac | |
# | |
# tmux_conf_theme_pane_indicator=${tmux_conf_theme_pane_indicator:-$tmux_conf_theme_colour_4} | |
# tmux_conf_theme_pane_active_indicator=${tmux_conf_theme_pane_active_indicator:-$tmux_conf_theme_colour_4} | |
# | |
# # -- status line --------------------------------------------------------- | |
# | |
# tmux_conf_theme_left_separator_main=$(_decode_unicode_escapes "${tmux_conf_theme_left_separator_main-}") | |
# tmux_conf_theme_left_separator_sub=$(_decode_unicode_escapes "${tmux_conf_theme_left_separator_sub-|}") | |
# tmux_conf_theme_right_separator_main=$(_decode_unicode_escapes "${tmux_conf_theme_right_separator_main-}") | |
# tmux_conf_theme_right_separator_sub=$(_decode_unicode_escapes "${tmux_conf_theme_right_separator_sub-|}") | |
# | |
# tmux_conf_theme_message_fg=${tmux_conf_theme_message_fg:-$tmux_conf_theme_colour_1} | |
# tmux_conf_theme_message_bg=${tmux_conf_theme_message_bg:-$tmux_conf_theme_colour_5} | |
# tmux_conf_theme_message_attr=${tmux_conf_theme_message_attr:-bold} | |
# | |
# tmux_conf_theme_message_command_fg=${tmux_conf_theme_message_command_fg:-$tmux_conf_theme_colour_5} | |
# tmux_conf_theme_message_command_bg=${tmux_conf_theme_message_command_bg:-$tmux_conf_theme_colour_1} | |
# tmux_conf_theme_message_command_attr=${tmux_conf_theme_message_command_attr:-bold} | |
# | |
# tmux_conf_theme_mode_fg=${tmux_conf_theme_mode_fg:-$tmux_conf_theme_colour_1} | |
# tmux_conf_theme_mode_bg=${tmux_conf_theme_mode_bg:-$tmux_conf_theme_colour_5} | |
# tmux_conf_theme_mode_attr=${tmux_conf_theme_mode_attr:-bold} | |
# | |
# tmux_conf_theme_status_fg=${tmux_conf_theme_status_fg:-$tmux_conf_theme_colour_3} | |
# tmux_conf_theme_status_bg=${tmux_conf_theme_status_bg:-$tmux_conf_theme_colour_1} | |
# tmux_conf_theme_status_attr=${tmux_conf_theme_status_attr:-none} | |
# | |
# tmux_conf_theme_terminal_title=${tmux_conf_theme_terminal_title:-#h ❐ #S ● #I #W} | |
# | |
# tmux_conf_theme_window_status_fg=${tmux_conf_theme_window_status_fg:-$tmux_conf_theme_colour_3} | |
# tmux_conf_theme_window_status_bg=${tmux_conf_theme_window_status_bg:-$tmux_conf_theme_colour_1} | |
# tmux_conf_theme_window_status_attr=${tmux_conf_theme_window_status_attr:-none} | |
# tmux_conf_theme_window_status_format=${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_current_fg=${tmux_conf_theme_window_status_current_fg:-$tmux_conf_theme_colour_1} | |
# tmux_conf_theme_window_status_current_bg=${tmux_conf_theme_window_status_current_bg:-$tmux_conf_theme_colour_4} | |
# tmux_conf_theme_window_status_current_attr=${tmux_conf_theme_window_status_current_attr:-bold} | |
# tmux_conf_theme_window_status_current_format=${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_activity_fg=${tmux_conf_theme_window_status_activity_fg:-default} | |
# tmux_conf_theme_window_status_activity_bg=${tmux_conf_theme_window_status_activity_bg:-default} | |
# tmux_conf_theme_window_status_activity_attr=${tmux_conf_theme_window_status_activity_attr:-underscore} | |
# | |
# tmux_conf_theme_window_status_bell_fg=${tmux_conf_theme_window_status_bell_fg:-$tmux_conf_theme_colour_5} | |
# tmux_conf_theme_window_status_bell_bg=${tmux_conf_theme_window_status_bell_bg:-default} | |
# tmux_conf_theme_window_status_bell_attr=${tmux_conf_theme_window_status_bell_attr:-blink,bold} | |
# | |
# tmux_conf_theme_window_status_last_fg=${tmux_conf_theme_window_status_last_fg:-$tmux_conf_theme_colour_4} | |
# tmux_conf_theme_window_status_last_bg=${tmux_conf_theme_window_status_last_bg:-default} | |
# tmux_conf_theme_window_status_last_attr=${tmux_conf_theme_window_status_last_attr:-none} | |
# | |
# if [ "$tmux_conf_theme_window_status_bg" = "$tmux_conf_theme_status_bg" ] || [ "$tmux_conf_theme_window_status_bg" = "default" ]; then | |
# spacer='' | |
# spacer_current=' ' | |
# else | |
# spacer=' ' | |
# spacer_current=' ' | |
# fi | |
# if [ "$tmux_conf_theme_window_status_last_bg" = "$tmux_conf_theme_status_bg" ] || [ "$tmux_conf_theme_window_status_last_bg" = "default" ] ; then | |
# spacer_last='' | |
# else | |
# spacer_last=' ' | |
# fi | |
# if [ "$tmux_conf_theme_window_status_activity_bg" = "$tmux_conf_theme_status_bg" ] || [ "$tmux_conf_theme_window_status_activity_bg" = "default" ] ; then | |
# spacer_activity='' | |
# spacer_last_activity="$spacer_last" | |
# else | |
# spacer_activity=' ' | |
# spacer_last_activity=' ' | |
# fi | |
# if [ "$tmux_conf_theme_window_status_bell_bg" = "$tmux_conf_theme_status_bg" ] || [ "$tmux_conf_theme_window_status_bell_bg" = "default" ] ; then | |
# spacer_bell='' | |
# spacer_last_bell="$spacer_last" | |
# spacer_activity_bell="$spacer_activity" | |
# spacer_last_activity_bell="$spacer_last_activity" | |
# else | |
# spacer_bell=' ' | |
# spacer_last_bell=' ' | |
# spacer_activity_bell=' ' | |
# spacer_last_activity_bell=' ' | |
# fi | |
# spacer="#{?window_last_flag,#{?window_activity_flag,#{?window_bell_flag,$spacer_last_activity_bell,$spacer_last_activity},#{?window_bell_flag,$spacer_last_bell,$spacer_last}},#{?window_activity_flag,#{?window_bell_flag,$spacer_activity_bell,$spacer_activity},#{?window_bell_flag,$spacer_bell,$spacer}}}" | |
# if [ "$(tmux show -g -v status-justify)" = "right" ]; then | |
# if [ -z "$tmux_conf_theme_right_separator_main" ]; then | |
# window_status_separator=' ' | |
# else | |
# window_status_separator='' | |
# fi | |
# window_status_format="#[fg=$tmux_conf_theme_window_status_bg,bg=$tmux_conf_theme_status_bg,none]#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_bg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_bg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_bg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}$tmux_conf_theme_right_separator_main#[fg=$tmux_conf_theme_window_status_fg,bg=$tmux_conf_theme_window_status_bg,$tmux_conf_theme_window_status_attr]#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_fg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_fg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_fg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}$spacer$(printf '%s' "$tmux_conf_theme_window_status_last_attr" | perl -n -e 'print "#{?window_last_flag,#[none],}" if !/default/ ; s/([a-z]+),?/#{?window_last_flag,#[\1],}/g; print if !/default/')$(printf '%s' "$tmux_conf_theme_window_status_activity_attr" | perl -n -e 'print "#{?window_activity_flag?,#[none],}" if !/default/ ; s/([a-z]+),?/#{?window_activity_flag,#[\1],}/g; print if !/default/')$(printf '%s' "$tmux_conf_theme_window_status_bell_attr" | perl -n -e 'print "#{?window_bell_flag,#[none],}" if !/default/ ; s/([a-z]+),?/#{?window_bell_flag,#[\1],}/g; print if !/default/')$tmux_conf_theme_window_status_format#[none]$spacer#[fg=$tmux_conf_theme_status_bg,bg=$tmux_conf_theme_window_status_bg]#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#[none]$tmux_conf_theme_right_separator_main" | |
# window_status_current_format="#[fg=$tmux_conf_theme_window_status_current_bg,bg=$tmux_conf_theme_status_bg,none]$tmux_conf_theme_right_separator_main#[fg=$tmux_conf_theme_window_status_current_fg,bg=$tmux_conf_theme_window_status_current_bg,$tmux_conf_theme_window_status_current_attr]$spacer_current$tmux_conf_theme_window_status_current_format$spacer_current#[fg=$tmux_conf_theme_status_bg,bg=$tmux_conf_theme_window_status_current_bg,none]$tmux_conf_theme_right_separator_main" | |
# else | |
# if [ -z "$tmux_conf_theme_left_separator_main" ]; then | |
# window_status_separator=' ' | |
# else | |
# window_status_separator='' | |
# fi | |
# window_status_format="#[fg=$tmux_conf_theme_status_bg,bg=$tmux_conf_theme_window_status_bg,none]#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}$tmux_conf_theme_left_separator_main#[fg=$tmux_conf_theme_window_status_fg,bg=$tmux_conf_theme_window_status_bg,$tmux_conf_theme_window_status_attr]#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_fg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_fg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_fg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_bg" | perl -n -e "s/.+/#[bg=$&]/; print if !/default/"),}$spacer$(printf '%s' "$tmux_conf_theme_window_status_last_attr" | perl -n -e 'print "#{?window_last_flag,#[none],}" if !/default/ ; s/([a-z]+),?/#{?window_last_flag,#[\1],}/g; print if !/default/')$(printf '%s' "$tmux_conf_theme_window_status_activity_attr" | perl -n -e 'print "#{?window_activity_flag,#[none],}" if !/default/ ; s/([a-z]+),?/#{?window_activity_flag,#[\1],}/g; print if !/default/')$(printf '%s' "$tmux_conf_theme_window_status_bell_attr" | perl -n -e 'print "#{?window_bell_flag,#[none],}" if /!default/ ; s/([a-z]+),?/#{?window_bell_flag,#[\1],}/g; print if !/default/')$tmux_conf_theme_window_status_format#[none]$spacer#[fg=$tmux_conf_theme_window_status_bg,bg=$tmux_conf_theme_status_bg]#{?window_last_flag,$(printf '%s' "$tmux_conf_theme_window_status_last_bg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_activity_flag,$(printf '%s' "$tmux_conf_theme_window_status_activity_bg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}#{?window_bell_flag,$(printf '%s' "$tmux_conf_theme_window_status_bell_bg" | perl -n -e "s/.+/#[fg=$&]/; print if !/default/"),}$tmux_conf_theme_left_separator_main" | |
# window_status_current_format="#[fg=$tmux_conf_theme_status_bg,bg=$tmux_conf_theme_window_status_current_bg,none]$tmux_conf_theme_left_separator_main#[fg=$tmux_conf_theme_window_status_current_fg,bg=$tmux_conf_theme_window_status_current_bg,$tmux_conf_theme_window_status_current_attr]$spacer_current$tmux_conf_theme_window_status_current_format$spacer_current#[fg=$tmux_conf_theme_window_status_current_bg,bg=$tmux_conf_theme_status_bg]$tmux_conf_theme_left_separator_main" | |
# fi | |
# | |
# # -- indicators | |
# | |
# tmux_conf_theme_pairing=${tmux_conf_theme_pairing:-⚇} # U+2687 | |
# tmux_conf_theme_pairing_fg=${tmux_conf_theme_pairing_fg:-none} | |
# tmux_conf_theme_pairing_bg=${tmux_conf_theme_pairing_bg:-none} | |
# tmux_conf_theme_pairing_attr=${tmux_conf_theme_pairing_attr:-none} | |
# | |
# tmux_conf_theme_prefix=${tmux_conf_theme_prefix:-⌨} # U+2328 | |
# tmux_conf_theme_prefix_fg=${tmux_conf_theme_prefix_fg:-none} | |
# tmux_conf_theme_prefix_bg=${tmux_conf_theme_prefix_bg:-none} | |
# tmux_conf_theme_prefix_attr=${tmux_conf_theme_prefix_attr:-none} | |
# | |
# tmux_conf_theme_mouse=${tmux_conf_theme_mouse:-↗} # U+2197 | |
# tmux_conf_theme_mouse_fg=${tmux_conf_theme_mouse_fg:-none} | |
# tmux_conf_theme_mouse_bg=${tmux_conf_theme_mouse_bg:-none} | |
# tmux_conf_theme_mouse_attr=${tmux_conf_theme_mouse_attr:-none} | |
# | |
# tmux_conf_theme_root=${tmux_conf_theme_root:-!} | |
# tmux_conf_theme_root_fg=${tmux_conf_theme_root_fg:-none} | |
# tmux_conf_theme_root_bg=${tmux_conf_theme_root_bg:-none} | |
# tmux_conf_theme_root_attr=${tmux_conf_theme_root_attr:-bold,blink} | |
# | |
# tmux_conf_theme_synchronized=${tmux_conf_theme_synchronized:-⚏} # U+268F | |
# tmux_conf_theme_synchronized_fg=${tmux_conf_theme_synchronized_fg:-none} | |
# tmux_conf_theme_synchronized_bg=${tmux_conf_theme_synchronized_bg:-none} | |
# tmux_conf_theme_synchronized_attr=${tmux_conf_theme_synchronized_attr:-none} | |
# | |
# # -- status-left style | |
# | |
# tmux_conf_theme_status_left=${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_left_fg=${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_status_left_bg:-$tmux_conf_theme_colour_9,$tmux_conf_theme_colour_10,$tmux_conf_theme_colour_11} | |
# tmux_conf_theme_status_left_attr=${tmux_conf_theme_status_left_attr:-bold,none,none} | |
# | |
# if [ -n "$tmux_conf_theme_status_left" ]; then | |
# status_left=$(echo "$tmux_conf_theme_status_left" | sed \ | |
# -e "s/#{pairing}/#[fg=$tmux_conf_theme_pairing_fg]#[bg=$tmux_conf_theme_pairing_bg]#[$tmux_conf_theme_pairing_attr]#{pairing}#[inherit]/g" \ | |
# -e "s/#{prefix}/#[fg=$tmux_conf_theme_prefix_fg]#[bg=$tmux_conf_theme_prefix_bg]#[$tmux_conf_theme_prefix_attr]#{prefix}#[inherit]/g" \ | |
# -e "s/#{mouse}/#[fg=$tmux_conf_theme_mouse_fg]#[bg=$tmux_conf_theme_mouse_bg]#[$tmux_conf_theme_mouse_attr]#{mouse}#[inherit]/g" \ | |
# -e "s/#{synchronized}/#[fg=$tmux_conf_theme_synchronized_fg]#[bg=$tmux_conf_theme_synchronized_bg]#[$tmux_conf_theme_synchronized_attr]#{synchronized}#[inherit]/g" \ | |
# -e "s/#{root}/#[fg=$tmux_conf_theme_root_fg]#[bg=$tmux_conf_theme_root_bg]#[$tmux_conf_theme_root_attr]#{root}#[inherit]/g") | |
# | |
# status_left=$(printf '%s' "$status_left" | awk \ | |
# -v status_bg="$tmux_conf_theme_status_bg" \ | |
# -v fg_="$tmux_conf_theme_status_left_fg" \ | |
# -v bg_="$tmux_conf_theme_status_left_bg" \ | |
# -v attr_="$tmux_conf_theme_status_left_attr" \ | |
# -v mainsep="$tmux_conf_theme_left_separator_main" \ | |
# -v subsep="$tmux_conf_theme_left_separator_sub" ' | |
# function subsplit(s, l, i, a, r) | |
# { | |
# l = split(s, a, ",") | |
# for (i = 1; i <= l; ++i) | |
# { | |
# o = split(a[i], _, "(") - 1 | |
# c = split(a[i], _, ")") - 1 | |
# open += o - c | |
# o_ = split(a[i], _, "{") - 1 | |
# c_ = split(a[i], _, "}") - 1 | |
# open_ += o_ - c_ | |
# o__ = split(a[i], _, "[") - 1 | |
# c__ = split(a[i], _, "]") - 1 | |
# open__ += o__ - c__ | |
# | |
# if (i == l) | |
# r = sprintf("%s%s", r, a[i]) | |
# else if (open || open_ || open__) | |
# r = sprintf("%s%s,", r, a[i]) | |
# else | |
# r = sprintf("%s%s#[fg=%s,bg=%s,%s]%s", r, a[i], fg[j], bg[j], attr[j], subsep) | |
# } | |
# | |
# gsub(/#\[inherit\]/, sprintf("#[default]#[fg=%s,bg=%s,%s]", fg[j], bg[j], attr[j]), r) | |
# return r | |
# } | |
# BEGIN { | |
# FS = "|" | |
# l1 = split(fg_, fg, ",") | |
# l2 = split(bg_, bg, ",") | |
# l3 = split(attr_, attr, ",") | |
# l = l1 < l2 ? (l1 < l3 ? l1 : l3) : (l2 < l3 ? l2 : l3) | |
# } | |
# { | |
# for (i = j = 1; i <= NF; ++i) | |
# { | |
# if (open || open_ || open__) | |
# printf "|%s", subsplit($i) | |
# else | |
# { | |
# if (i > 1) | |
# printf "#[fg=%s,bg=%s,none]%s#[fg=%s,bg=%s,%s]%s", bg[j_], bg[j], mainsep, fg[j], bg[j], attr[j], subsplit($i) | |
# else | |
# printf "#[fg=%s,bg=%s,%s]%s", fg[j], bg[j], attr[j], subsplit($i) | |
# } | |
# | |
# if (!open && !open_ && !open__) | |
# { | |
# j_ = j | |
# j = j % l + 1 | |
# } | |
# } | |
# printf "#[fg=%s,bg=%s,none]%s", bg[j_], status_bg, mainsep | |
# }') | |
# fi | |
# status_left="$status_left " | |
# | |
# # -- status-right style | |
# | |
# tmux_conf_theme_status_right=${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} '} | |
# tmux_conf_theme_status_right_fg=${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_status_right_bg:-$tmux_conf_theme_colour_15,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_17} | |
# tmux_conf_theme_status_right_attr=${tmux_conf_theme_status_right_attr:-none,none,bold} | |
# | |
# if [ -n "$tmux_conf_theme_status_right" ]; then | |
# status_right=$(echo "$tmux_conf_theme_status_right" | sed \ | |
# -e "s/#{pairing}/#[fg=$tmux_conf_theme_pairing_fg]#[bg=$tmux_conf_theme_pairing_bg]#[$tmux_conf_theme_pairing_attr]#{pairing}#[inherit]/g" \ | |
# -e "s/#{prefix}/#[fg=$tmux_conf_theme_prefix_fg]#[bg=$tmux_conf_theme_prefix_bg]#[$tmux_conf_theme_prefix_attr]#{prefix}#[inherit]/g" \ | |
# -e "s/#{mouse}/#[fg=$tmux_conf_theme_mouse_fg]#[bg=$tmux_conf_theme_mouse_bg]#[$tmux_conf_theme_mouse_attr]#{mouse}#[inherit]/g" \ | |
# -e "s/#{synchronized}/#[fg=$tmux_conf_theme_synchronized_fg]#[bg=$tmux_conf_theme_synchronized_bg]#[$tmux_conf_theme_synchronized_attr]#{synchronized}#[inherit]/g" \ | |
# -e "s/#{root}/#[fg=$tmux_conf_theme_root_fg]#[bg=$tmux_conf_theme_root_bg]#[$tmux_conf_theme_root_attr]#{root}#[inherit]/g") | |
# | |
# status_right=$(printf '%s' "$status_right" | awk \ | |
# -v status_bg="$tmux_conf_theme_status_bg" \ | |
# -v fg_="$tmux_conf_theme_status_right_fg" \ | |
# -v bg_="$tmux_conf_theme_status_right_bg" \ | |
# -v attr_="$tmux_conf_theme_status_right_attr" \ | |
# -v mainsep="$tmux_conf_theme_right_separator_main" \ | |
# -v subsep="$tmux_conf_theme_right_separator_sub" ' | |
# function subsplit(s, l, i, a, r) | |
# { | |
# l = split(s, a, ",") | |
# for (i = 1; i <= l; ++i) | |
# { | |
# o = split(a[i], _, "(") - 1 | |
# c = split(a[i], _, ")") - 1 | |
# open += o - c | |
# o_ = split(a[i], _, "{") - 1 | |
# c_ = split(a[i], _, "}") - 1 | |
# open_ += o_ - c_ | |
# o__ = split(a[i], _, "[") - 1 | |
# c__ = split(a[i], _, "]") - 1 | |
# open__ += o__ - c__ | |
# | |
# if (i == l) | |
# r = sprintf("%s%s", r, a[i]) | |
# else if (open || open_ || open__) | |
# r = sprintf("%s%s,", r, a[i]) | |
# else | |
# r = sprintf("%s%s#[fg=%s,bg=%s,%s]%s", r, a[i], fg[j], bg[j], attr[j], subsep) | |
# } | |
# | |
# gsub(/#\[inherit\]/, sprintf("#[default]#[fg=%s,bg=%s,%s]", fg[j], bg[j], attr[j]), r) | |
# return r | |
# } | |
# BEGIN { | |
# FS = "|" | |
# l1 = split(fg_, fg, ",") | |
# l2 = split(bg_, bg, ",") | |
# l3 = split(attr_, attr, ",") | |
# l = l1 < l2 ? (l1 < l3 ? l1 : l3) : (l2 < l3 ? l2 : l3) | |
# } | |
# { | |
# for (i = j = 1; i <= NF; ++i) | |
# { | |
# if (open_ || open || open__) | |
# printf "|%s", subsplit($i) | |
# else | |
# printf "#[fg=%s,bg=%s,none]%s#[fg=%s,bg=%s,%s]%s", bg[j], (i == 1) ? status_bg : bg[j_], mainsep, fg[j], bg[j], attr[j], subsplit($i) | |
# | |
# if (!open && !open_ && !open__) | |
# { | |
# j_ = j | |
# j = j % l + 1 | |
# } | |
# } | |
# }') | |
# fi | |
# status_right=${status_right-} | |
# | |
# # -- clock --------------------------------------------------------------- | |
# | |
# tmux_conf_theme_clock_colour=${tmux_conf_theme_clock_colour:-$tmux_conf_theme_colour_4} | |
# tmux_conf_theme_clock_style=${tmux_conf_theme_clock_style:-24} | |
# | |
# tmux setw -g window-style "$window_style" \; setw -g window-active-style "$window_active_style" \;\ | |
# setw -g pane-border-style "fg=$tmux_conf_theme_pane_border_fg,bg=$tmux_conf_theme_pane_border_bg" \; set -g pane-active-border-style "fg=$tmux_conf_theme_pane_active_border_fg,bg=$tmux_conf_theme_pane_active_border_bg" \;\ | |
# set -g display-panes-colour "$tmux_conf_theme_pane_indicator" \; set -g display-panes-active-colour "$tmux_conf_theme_pane_active_indicator" \;\ | |
# set -g message-style "fg=$tmux_conf_theme_message_fg,bg=$tmux_conf_theme_message_bg,$tmux_conf_theme_message_attr" \;\ | |
# set -g message-command-style "fg=$tmux_conf_theme_message_command_fg,bg=$tmux_conf_theme_message_command_bg,$tmux_conf_theme_message_command_attr" \;\ | |
# setw -g mode-style "fg=$tmux_conf_theme_mode_fg,bg=$tmux_conf_theme_mode_bg,$tmux_conf_theme_mode_attr" \;\ | |
# set -g status-style "fg=$tmux_conf_theme_status_fg,bg=$tmux_conf_theme_status_bg,$tmux_conf_theme_status_attr" \;\ | |
# set -g status-left-style "fg=$tmux_conf_theme_status_fg,bg=$tmux_conf_theme_status_bg,$tmux_conf_theme_status_attr" \;\ | |
# set -g status-right-style "fg=$tmux_conf_theme_status_fg,bg=$tmux_conf_theme_status_bg,$tmux_conf_theme_status_attr" \;\ | |
# setw -g window-status-style "fg=$tmux_conf_theme_window_status_fg,bg=$tmux_conf_theme_window_status_bg,$tmux_conf_theme_window_status_attr" \;\ | |
# setw -g window-status-current-style "fg=$tmux_conf_theme_window_status_current_fg,bg=$tmux_conf_theme_window_status_current_bg,$tmux_conf_theme_window_status_current_attr" \;\ | |
# setw -g window-status-activity-style "fg=$tmux_conf_theme_window_status_activity_fg,bg=$tmux_conf_theme_window_status_activity_bg,$tmux_conf_theme_window_status_activity_attr" \;\ | |
# setw -g window-status-bell-style "fg=$tmux_conf_theme_window_status_bell_fg,bg=$tmux_conf_theme_window_status_bell_bg,$tmux_conf_theme_window_status_bell_attr" \;\ | |
# setw -g window-status-last-style "fg=$tmux_conf_theme_window_status_last_fg,bg=$tmux_conf_theme_window_status_last_bg,$tmux_conf_theme_window_status_last_attr" \;\ | |
# setw -g window-status-separator "$window_status_separator" \;\ | |
# setw -g clock-mode-colour "$tmux_conf_theme_clock_colour" \;\ | |
# setw -g clock-mode-style "$tmux_conf_theme_clock_style" | |
# fi | |
# | |
# # -- variables ------------------------------------------------------------- | |
# | |
# set_titles_string=$(printf '%s' "${tmux_conf_theme_terminal_title:-$(tmux show -gv set-titles-string)}" | sed \ | |
# -e "s%#{circled_window_index}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#I')%g" \ | |
# -e "s%#{circled_session_name}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#S')%g" \ | |
# -e "s%#{username}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' false '#D')%g" \ | |
# -e "s%#{hostname}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false true '#H' '#D')%g" \ | |
# -e "s%#{username_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' true '#D')%g" \ | |
# -e "s%#{hostname_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true true '#H' '#D')%g") | |
# | |
# window_status_format=$(printf '%s' "${window_status_format:-$(tmux show -gv window-status-format)}" | sed \ | |
# -e "s%#{circled_window_index}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#I')%g" \ | |
# -e "s%#{circled_session_name}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#S')%g" \ | |
# -e "s%#{username}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' false '#D')%g" \ | |
# -e "s%#{hostname}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false true '#H' '#D')%g" \ | |
# -e "s%#{username_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' true '#D')%g" \ | |
# -e "s%#{hostname_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true true '#H' '#D')%g") | |
# | |
# window_status_current_format=$(printf '%s' "${window_status_current_format:-$(tmux show -gv window-status-current-format)}" | sed \ | |
# -e "s%#{circled_window_index}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#I')%g" \ | |
# -e "s%#{circled_session_name}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#S')%g" \ | |
# -e "s%#{username}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' false '#D')%g" \ | |
# -e "s%#{hostname}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false true '#H' '#D')%g" \ | |
# -e "s%#{username_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' true '#D')%g" \ | |
# -e "s%#{hostname_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true true '#H' '#D')%g") | |
# | |
# status_left=$(printf '%s' "${status_left-$(tmux show -gv status-left)}" | sed \ | |
# -e "s/#{pairing}/#{?session_many_attached,$tmux_conf_theme_pairing ,}/g" \ | |
# -e "s/#{prefix}/#{?client_prefix,$tmux_conf_theme_prefix ,$(printf '%s' "$tmux_conf_theme_prefix" | sed -e 's/./ /g') }/g" \ | |
# -e "s/#{mouse}/#{?mouse,$tmux_conf_theme_mouse ,$(printf '%s' "$tmux_conf_theme_mouse" | sed -e 's/./ /g') }/g" \ | |
# -e "s%#{synchronized}%#{?pane_synchronized,$tmux_conf_theme_synchronized ,}%g" \ | |
# -e "s%#{circled_session_name}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#S')%g" \ | |
# -e "s%#{root}%#{?#{==:#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' '#D'),root},$tmux_conf_theme_root,}%g") | |
# | |
# status_right=$(printf '%s' "${status_right-$(tmux show -gv status-right)}" | sed \ | |
# -e "s/#{pairing}/#{?session_many_attached,$tmux_conf_theme_pairing ,}/g" \ | |
# -e "s/#{prefix}/#{?client_prefix,$tmux_conf_theme_prefix ,$(printf '%s' "$tmux_conf_theme_prefix" | sed -e 's/./ /g') }/g" \ | |
# -e "s/#{mouse}/#{?mouse,$tmux_conf_theme_mouse ,$(printf '%s' "$tmux_conf_theme_mouse" | sed -e 's/./ /g') }/g" \ | |
# -e "s%#{synchronized}%#{?pane_synchronized,$tmux_conf_theme_synchronized ,}%g" \ | |
# -e "s%#{circled_session_name}%#(cut -c3- '$TMUX_CONF' | sh -s _circled '#S')%g" \ | |
# -e "s%#{root}%#{?#{==:#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' '#D'),root},$tmux_conf_theme_root,}%g") | |
# | |
# tmux_conf_battery_bar_symbol_full=$(_decode_unicode_escapes "${tmux_conf_battery_bar_symbol_full:-◼}") | |
# tmux_conf_battery_bar_symbol_empty=$(_decode_unicode_escapes "${tmux_conf_battery_bar_symbol_empty:-◻}") | |
# tmux_conf_battery_bar_length=${tmux_conf_battery_bar_length:-auto} | |
# tmux_conf_battery_bar_palette=${tmux_conf_battery_bar_palette:-gradient} | |
# tmux_conf_battery_hbar_palette=${tmux_conf_battery_hbar_palette:-gradient} | |
# tmux_conf_battery_vbar_palette=${tmux_conf_battery_vbar_palette:-gradient} | |
# tmux_conf_battery_status_charging=$(_decode_unicode_escapes "${tmux_conf_battery_status_charging:-↑}") # U+2191 | |
# tmux_conf_battery_status_discharging=$(_decode_unicode_escapes "${tmux_conf_battery_status_discharging:-↓}") # U+2193 | |
# | |
# _pkillf "cut -c3- '$TMUX_CONF' \| sh -s _battery" | |
# _battery_info | |
# if [ "$battery_charge" != 0 ]; then | |
# case "$status_left $status_right" in | |
# *'#{battery_'*|*'#{?battery_'*) | |
# status_left=$(echo "$status_left" | sed -E \ | |
# -e 's%#\{\?battery_bar%#\{?@battery_percentage%g' \ | |
# -e 's%#\{\?battery_hbar%#\{?@battery_percentage%g' \ | |
# -e 's%#\{\?battery_vbar%#\{?@battery_percentage%g' \ | |
# -e "s%#\{battery_bar\}%#(nice cut -c3- '$TMUX_CONF' | sh -s _bar '$(printf '%s' "$tmux_conf_battery_bar_palette" | tr ',' ';')' '$tmux_conf_battery_bar_symbol_empty' '$tmux_conf_battery_bar_symbol_full' '$tmux_conf_battery_bar_length' '#{@battery_charge}' '#{client_width}')%g" \ | |
# -e "s%#\{battery_hbar\}%#(nice cut -c3- '$TMUX_CONF' | sh -s _hbar '$(printf '%s' "$tmux_conf_battery_hbar_palette" | tr ',' ';')' '#{@battery_charge}')%g" \ | |
# -e "s%#\{battery_vbar\}%#(nice cut -c3- '$TMUX_CONF' | sh -s _vbar '$(printf '%s' "$tmux_conf_battery_vbar_palette" | tr ',' ';')' '#{@battery_charge}')%g" \ | |
# -e 's%#\{(\?)?battery_status%#\{\1@battery_status%g' \ | |
# -e 's%#\{(\?)?battery_percentage%#\{\1@battery_percentage%g') | |
# status_right=$(echo "$status_right" | sed -E \ | |
# -e 's%#\{\?battery_bar%#\{?@battery_percentage%g' \ | |
# -e 's%#\{\?battery_hbar%#\{?@battery_percentage%g' \ | |
# -e 's%#\{\?battery_vbar%#\{?@battery_percentage%g' \ | |
# -e "s%#\{battery_bar\}%#(nice cut -c3- '$TMUX_CONF' | sh -s _bar '$(printf '%s' "$tmux_conf_battery_bar_palette" | tr ',' ';')' '$tmux_conf_battery_bar_symbol_empty' '$tmux_conf_battery_bar_symbol_full' '$tmux_conf_battery_bar_length' '#{@battery_charge}' '#{client_width}')%g" \ | |
# -e "s%#\{battery_hbar\}%#(nice cut -c3- '$TMUX_CONF' | sh -s _hbar '$(printf '%s' "$tmux_conf_battery_hbar_palette" | tr ',' ';')' '#{@battery_charge}')%g" \ | |
# -e "s%#\{battery_vbar\}%#(nice cut -c3- '$TMUX_CONF' | sh -s _vbar '$(printf '%s' "$tmux_conf_battery_vbar_palette" | tr ',' ';')' '#{@battery_charge}')%g" \ | |
# -e 's%#\{(\?)?battery_status%#\{\1@battery_status%g' \ | |
# -e 's%#\{(\?)?battery_percentage%#\{\1@battery_percentage%g') | |
# status_right="#(echo; nice cut -c3- '$TMUX_CONF' | sh -s _battery_status '$tmux_conf_battery_status_charging' '$tmux_conf_battery_status_discharging')$status_right" | |
# interval=60 | |
# if [ "$_tmux_version" -ge 320 ]; then | |
# tmux run -b "trap '[ -n \"\$sleep_pid\" ] && kill -9 \"\$sleep_pid\"; exit 0' TERM; while [ x\"\$('$TMUX_PROGRAM' -S '#{socket_path}' display -p '#{l:#{pid}}')\" = x\"#{pid}\" ]; do nice cut -c3- '$TMUX_CONF' | sh -s _battery_info; sleep $interval & sleep_pid=\$!; wait \"\$sleep_pid\"; sleep_pid=; done" | |
# elif [ "$_tmux_version" -ge 280 ]; then | |
# status_right="#(echo; while [ x\"\$('$TMUX_PROGRAM' -S '#{socket_path}' display -p '#{l:#{pid}}')\" = x\"#{pid}\" ]; do nice cut -c3- '$TMUX_CONF' | sh -s _battery_info; sleep $interval; done)$status_right" | |
# elif [ "$_tmux_version" -gt 240 ]; then | |
# status_right="#(echo; while :; do nice cut -c3- '$TMUX_CONF' | sh -s _battery_info; sleep $interval; done)$status_right" | |
# else | |
# status_right="#(nice cut -c3- '$TMUX_CONF' | sh -s _battery_info)$status_right" | |
# fi | |
# ;; | |
# esac | |
# fi | |
# | |
# case "$status_left $status_right" in | |
# *'#{username}'*|*'#{hostname}'*|*'#{hostname_full}'*|*'#{username_ssh}'*|*'#{hostname_ssh}'*|*'#{hostname_full_ssh}'*) | |
# status_left=$(echo "$status_left" | sed \ | |
# -e "s%#{username}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' false '#D')%g" \ | |
# -e "s%#{hostname}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false true '#H' '#D')%g" \ | |
# -e "s%#{username_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' true '#D')%g" \ | |
# -e "s%#{hostname_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true true '#H' '#D')%g") | |
# status_right=$(echo "$status_right" | sed \ | |
# -e "s%#{username}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' false '#D')%g" \ | |
# -e "s%#{hostname}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' false true '#H' '#D')%g" \ | |
# -e "s%#{username_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _username '#{pane_pid}' '#{b:pane_tty}' true '#D')%g" \ | |
# -e "s%#{hostname_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true false '#h' '#D')%g" \ | |
# -e "s%#{hostname_full_ssh}%#(cut -c3- '$TMUX_CONF' | sh -s _hostname '#{pane_pid}' '#{b:pane_tty}' true true '#H' '#D')%g") | |
# ;; | |
# esac | |
# | |
# _pkillf "cut -c3- '$TMUX_CONF' \| sh -s _uptime" | |
# case "$status_left $status_right" in | |
# *'#{uptime_'*|*'#{?uptime_'*) | |
# status_left=$(echo "$status_left" | perl -p -e ' | |
# ; s/#\{(\?)?uptime_y\b/#\{\1\@uptime_y/g | |
# ; s/#\{(\?)?uptime_d\b/#\{\1\@uptime_d/g | |
# ; s/\@uptime_d\b/\@uptime_dy/g if /\@uptime_y\b/ | |
# ; s/#\{(\?)?uptime_h\b/#\{\1\@uptime_h/g | |
# ; s/#\{(\?)?uptime_m\b/#\{\1\@uptime_m/g | |
# ; s/#\{(\?)?uptime_s\b/#\{\1\@uptime_s/g') | |
# status_right=$(echo "$status_right" | perl -p -e ' | |
# ; s/#\{(\?)?uptime_y\b/#\{\1\@uptime_y/g | |
# ; s/#\{(\?)?uptime_d\b/#\{\1\@uptime_d/g | |
# ; s/\@uptime_d\b/\@uptime_dy/g if /\@uptime_y\b/ | |
# ; s/#\{(\?)?uptime_h\b/#\{\1\@uptime_h/g | |
# ; s/#\{(\?)?uptime_m\b/#\{\1\@uptime_m/g | |
# ; s/#\{(\?)?uptime_s\b/#\{\1\@uptime_s/g') | |
# interval=60 | |
# case "$status_left $status_right" in | |
# *'#{@uptime_s}'*) | |
# interval=$(tmux show -gv status-interval) | |
# ;; | |
# esac | |
# if [ "$_tmux_version" -ge 320 ]; then | |
# tmux run -b "trap '[ -n \"\$sleep_pid\" ] && kill -9 \"\$sleep_pid\"; exit 0' TERM; while [ x\"\$('$TMUX_PROGRAM' -S '#{socket_path}' display -p '#{l:#{pid}}')\" = x\"#{pid}\" ]; do nice cut -c3- '$TMUX_CONF' | sh -s _uptime; sleep $interval & sleep_pid=\$!; wait \"\$sleep_pid\"; sleep_pid=; done" | |
# elif [ "$_tmux_version" -ge 280 ]; then | |
# status_right="#(echo; while [ x\"\$('$TMUX_PROGRAM' -S '#{socket_path}' display -p '#{l:#{pid}}')\" = x\"#{pid}\" ]; do nice cut -c3- '$TMUX_CONF' | sh -s _uptime; sleep $interval; done)$status_right" | |
# elif [ "$_tmux_version" -gt 240 ]; then | |
# status_right="#(echo; while :; do nice cut -c3- '$TMUX_CONF' | sh -s _uptime; sleep $interval; done)$status_right" | |
# else | |
# status_right="#(nice cut -c3- '$TMUX_CONF' | sh -s _uptime)$status_right" | |
# fi | |
# ;; | |
# esac | |
# | |
# _pkillf "cut -c3- '$TMUX_CONF' \| sh -s _loadavg" | |
# case "$status_left $status_right" in | |
# *'#{loadavg'*|*'#{?loadavg'*) | |
# status_left=$(echo "$status_left" | sed -E \ | |
# -e 's/#\{(\?)?loadavg/#\{\1@loadavg/g') | |
# status_right=$(echo "$status_right" | sed -E \ | |
# -e 's/#\{(\?)?loadavg/#\{\1@loadavg/g') | |
# interval=$(tmux show -gv status-interval) | |
# if [ "$_tmux_version" -ge 320 ]; then | |
# tmux run -b "trap '[ -n \"\$sleep_pid\" ] && kill -9 \"\$sleep_pid\"; exit 0' TERM; while [ x\"\$('$TMUX_PROGRAM' -S '#{socket_path}' display -p '#{l:#{pid}}')\" = x\"#{pid}\" ]; do nice cut -c3- '$TMUX_CONF' | sh -s _loadavg; sleep $interval & sleep_pid=\$!; wait \"\$sleep_pid\"; sleep_pid=; done" | |
# elif [ "$_tmux_version" -ge 280 ]; then | |
# status_right="#(echo; while [ x\"\$('$TMUX_PROGRAM' -S '#{socket_path}' display -p '#{l:#{pid}}')\" = x\"#{pid}\" ]; do nice cut -c3- '$TMUX_CONF' | sh -s _loadavg; sleep $interval; done)$status_right" | |
# elif [ "$_tmux_version" -gt 240 ]; then | |
# status_right="#(echo; while :; do nice cut -c3- '$TMUX_CONF' | sh -s _loadavg; sleep $interval; done)$status_right" | |
# else | |
# status_right="#(nice cut -c3- '$TMUX_CONF' | sh -s _loadavg)$status_right" | |
# fi | |
# ;; | |
# esac | |
# | |
# # -- custom variables ------------------------------------------------------ | |
# | |
# if [ -f "$TMUX_CONF_LOCAL" ] && [ "$(cut -c3- "$TMUX_CONF_LOCAL" | sh 2>/dev/null -s printf probe)" = "probe" ]; then | |
# replacements=$(perl -n -e 'print if s!^#\s+([^_][^()\s]+)\s*\(\)\s*{\s*(?:#.*)?\n!s%#\\\{\1((?:\\s+(?:[^\{\}]+?|#\\{(?:[^\{\}]+?)\}))*)\\\}%#(cut -c3- \"\\\$TMUX_CONF_LOCAL\" | sh -s \1\\1)%g; !p' "$TMUX_CONF_LOCAL") | |
# status_left=$(echo "$status_left" | perl -p -e "$replacements" || echo "$status_left") | |
# status_right=$(echo "$status_right" | perl -p -e "$replacements" || echo "$status_right") | |
# fi | |
# | |
# # -------------------------------------------------------------------------- | |
# | |
# tmux set -g set-titles-string "$(_decode_unicode_escapes "$set_titles_string")" \;\ | |
# setw -g window-status-format "$(_decode_unicode_escapes "$window_status_format")" \;\ | |
# setw -g window-status-current-format "$(_decode_unicode_escapes "$window_status_current_format")" \;\ | |
# set -g status-left-length 1000 \; set -g status-left "$(_decode_unicode_escapes "$status_left")" \;\ | |
# set -g status-right-length 1000 \; set -g status-right "$(_decode_unicode_escapes "$status_right")" | |
# } | |
# | |
# __apply_plugins() { | |
# TMUX_PLUGIN_MANAGER_PATH="$1" | |
# window_active="$2" | |
# tmux_conf_update_plugins_on_launch="$3" | |
# tmux_conf_update_plugins_on_reload="$4" | |
# tmux_conf_uninstall_plugins_on_reload="$5" | |
# | |
# if [ -z "$TMUX_PLUGIN_MANAGER_PATH" ]; then | |
# return 255 | |
# fi | |
# mkdir -p "$TMUX_PLUGIN_MANAGER_PATH" | |
# | |
# tpm_plugins=$(tmux show -gvq '@tpm_plugins' 2>/dev/null) | |
# if [ -z "$(tmux show -gv '@plugin' 2>/dev/null)" ] && [ -z "$tpm_plugins" ]; then | |
# if _is_true "$tmux_conf_uninstall_plugins_on_reload" && [ -d "$TMUX_PLUGIN_MANAGER_PATH/tpm" ]; then | |
# tmux display 'Uninstalling tpm and plugins...' | |
# tmux set-environment -gu TMUX_PLUGIN_MANAGER_PATH | |
# rm -rf "$TMUX_PLUGIN_MANAGER_PATH" | |
# tmux display 'Done uninstalling tpm and plugins...' | |
# fi | |
# else | |
# if [ "$(command tmux display -p '#{pid} #{version} #{socket_path}')" = "$($TMUX_PROGRAM display -p '#{pid} #{version} #{socket_path}')" ]; then | |
# tpm_plugins=$(cat << EOF | tr ' ' '\n' | awk '/^\s*$/ {next;}; !seen[$0]++ { gsub(/^[ \t]+/,"",$0); gsub(/[ \t]+$/,"",$0); print $0 }' | |
# $tpm_plugins | |
# $(awk '/^[ \t]*set(-option)?.*[ \t]@plugin[ \t]/ { gsub(/'\''/, ""); gsub(/'\"'/, ""); print $NF }' "$TMUX_CONF_LOCAL" 2>/dev/null) | |
# EOF | |
# ) | |
# tmux set-environment -g TMUX_PLUGIN_MANAGER_PATH "$TMUX_PLUGIN_MANAGER_PATH" | |
# tmux set -g '@tpm_plugins' "$tpm_plugins" | |
# | |
# if [ -d "$TMUX_PLUGIN_MANAGER_PATH/tpm" ]; then | |
# [ -z "$(tmux show -gqv '@tpm-install')" ] && tmux set -g '@tpm-install' 'I' | |
# [ -z "$(tmux show -gqv '@tpm-update')" ] && tmux set -g '@tpm-update' 'u' | |
# [ -z "$(tmux show -gqv '@tpm-clean')" ] && tmux set -g '@tpm-clean' 'M-u' | |
# "$TMUX_PLUGIN_MANAGER_PATH/tpm/tpm" || tmux display "One or more tpm plugin(s) failed" | |
# fi | |
# | |
# if git ls-remote -hq https://github.com/gpakosz/.tmux.git master > /dev/null; then | |
# if [ ! -d "$TMUX_PLUGIN_MANAGER_PATH/tpm" ]; then | |
# install_tpm=true | |
# tmux display 'Installing tpm and plugins...' | |
# git clone --depth 1 https://github.com/tmux-plugins/tpm "$TMUX_PLUGIN_MANAGER_PATH/tpm" | |
# elif { [ -z "$window_active" ] && _is_true "$tmux_conf_update_plugins_on_launch"; } || { [ -n "$window_active" ] && _is_true "$tmux_conf_update_plugins_on_reload"; }; then | |
# update_tpm=true | |
# tmux display 'Updating tpm and plugins...' | |
# (cd "$TMUX_PLUGIN_MANAGER_PATH/tpm" && git fetch -q -p && git checkout -q master && git reset -q --hard origin/master) | |
# fi | |
# if [ "$install_tpm" = "true" ] || [ "$update_tpm" = "true" ]; then | |
# perl -0777 -p -i -e 's/git clone(?!\s+--depth\s+1)/git clone --depth 1/g | |
# ;s/(install_plugin(.(?!&))*)\n(\s+)done/\1&\n\3done\n\3wait/g' "$TMUX_PLUGIN_MANAGER_PATH/tpm/scripts/install_plugins.sh" | |
# perl -p -i -e 's/git submodule update --init --recursive(?!\s+--depth\s+1)/git submodule update --init --recursive --depth 1/g' "$TMUX_PLUGIN_MANAGER_PATH/tpm/scripts/update_plugin.sh" | |
# perl -p -i -e 's,\$tmux_file\s+>/dev/null\s+2>\&1,$& || { tmux display "Plugin \$(basename \${plugin_path}) failed" && false; },' "$TMUX_PLUGIN_MANAGER_PATH/tpm/scripts/source_plugins.sh" | |
# fi | |
# if [ "$update_tpm" = "true" ]; then | |
# { | |
# { | |
# printf 'List of discovered tpm plugins: %s\n' "$(printf '%s\n' "$tpm_plugins" | paste -s -d ' ' -)" | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf '%s\n' "Invoking $TMUX_PLUGIN_MANAGER_PATH/tpm/bin/install_plugins" | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# "$TMUX_PLUGIN_MANAGER_PATH/tpm/bin/install_plugins" 2>&1 | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf '%s\n' "Invoking $TMUX_PLUGIN_MANAGER_PATH/tpm/bin/update_plugins all" | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# "$TMUX_PLUGIN_MANAGER_PATH/tpm/bin/update_plugins" all 2>&1 | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf '%s\n' "Invoking $TMUX_PLUGIN_MANAGER_PATH/tpm/bin/clean_plugins all" | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# "$TMUX_PLUGIN_MANAGER_PATH/tpm/bin/clean_plugins" all 2>&1 | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf 'Done.\n' | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf '\n' | |
# } >> "$TMUX_PLUGIN_MANAGER_PATH/tpm_log.txt" | |
# | |
# tmux display 'Done updating tpm and plugins...' | |
# } || tmux display 'Failed updating tpm and plugins...' | |
# elif [ "$install_tpm" = "true" ]; then | |
# { | |
# { | |
# printf 'List of discovered tpm plugins: %s\n' "$(printf '%s\n' "$tpm_plugins" | paste -s -d ' ' -)" | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf '%s\n' "Invoking $TMUX_PLUGIN_MANAGER_PATH/tpm/bin/install_plugins" | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# "$TMUX_PLUGIN_MANAGER_PATH/tpm/bin/install_plugins" 2>&1 | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf 'Done.\n' | perl -MPOSIX=strftime -MTime::HiRes=gettimeofday -pe 'my ($s, $us) = gettimeofday(); printf ("[%s.%03d]\t ", strftime("%Y-%m-%d %H:%M:%S", localtime $s), $us / 1000)' | |
# printf '\n' >> "$TMUX_PLUGIN_MANAGER_PATH/tpm_log.txt" | |
# } >> "$TMUX_PLUGIN_MANAGER_PATH/tpm_log.txt" | |
# | |
# tmux display 'Done installing tpm and plugins...' | |
# | |
# [ -z "$(tmux show -gqv '@tpm-install')" ] && tmux set -g '@tpm-install' 'I' | |
# [ -z "$(tmux show -gqv '@tpm-update')" ] && tmux set -g '@tpm-update' 'u' | |
# [ -z "$(tmux show -gqv '@tpm-clean')" ] && tmux set -g '@tpm-clean' 'M-u' | |
# "$TMUX_PLUGIN_MANAGER_PATH/tpm/tpm" || tmux display "One or more tpm plugin(s) failed" | |
# } || tmux display 'Failed installing tpm and plugins...' | |
# fi | |
# else | |
# tmux display "GitHub doesn't seem to be reachable, skipping installing and/or updating tpm and plugins..." | |
# fi | |
# else | |
# tmux run -b "sleep \$((#{display-time} / 1000)) && '$TMUX_PROGRAM' set display-time 3000 \; display 'Cannot use tpm which assumes a globally installed tmux' \; set -u display-time" | |
# fi | |
# | |
# if [ "$_tmux_version" -gt 260 ]; then | |
# tmux set -gu '@tpm-install' \; set -gu '@tpm-update' \; set -gu '@tpm-clean' \; set -gu '@plugin' \; set -gu '@tpm_plugins' | |
# else | |
# tmux set -g '@tpm-install' '' \; set -g '@tpm-update' '' \; set -g '@tpm-clean' '' \; set -g '@plugin' '' \; set-gu '@tpm_plugins' '' | |
# fi | |
# fi | |
# } | |
# | |
# _apply_plugins() { | |
# tmux_conf_update_plugins_on_launch=${tmux_conf_update_plugins_on_launch:-true} | |
# tmux_conf_update_plugins_on_reload=${tmux_conf_update_plugins_on_reload:-true} | |
# tmux_conf_uninstall_plugins_on_reload=${tmux_conf_uninstall_plugins_on_reload:-true} | |
# | |
# if [ -z "$TMUX_PLUGIN_MANAGER_PATH" ]; then | |
# if [ "$(dirname "$TMUX_CONF")" = "$HOME" ]; then | |
# TMUX_PLUGIN_MANAGER_PATH="$HOME/.tmux/plugins" | |
# else | |
# TMUX_PLUGIN_MANAGER_PATH="$(dirname "$TMUX_CONF")/plugins" | |
# fi | |
# fi | |
# tmux run -b "cut -c3- '$TMUX_CONF' | sh -s __apply_plugins '$TMUX_PLUGIN_MANAGER_PATH' '$window_active' '$tmux_conf_update_plugins_on_launch' '$tmux_conf_update_plugins_on_reload' '$tmux_conf_uninstall_plugins_on_reload'" | |
# } | |
# | |
# _apply_important() { | |
# cfg=$(mktemp) && trap 'rm -f $cfg*' EXIT | |
# | |
# if perl -n -e 'print if /^\s*(?:set|bind|unbind).+?#!important\s*$/' "$TMUX_CONF_LOCAL" 2>/dev/null > "$cfg.local"; then | |
# if ! tmux source-file "$cfg.local"; then | |
# if tmux source-file -v /dev/null 2> /dev/null; then | |
# verbose_flag='-v' | |
# fi | |
# while ! out=$(tmux source-file "${verbose_flag:+$verbose_flag}" "$cfg.local"); do | |
# line=$(printf "%s" "$out" | tail -1 | cut -d':' -f2) | |
# perl -n -i -e "if ($. != $line) { print }" "$cfg.local" | |
# done | |
# fi | |
# fi | |
# } | |
# | |
# _apply_configuration() { | |
# window_active="$(tmux display -p '#{window_active}' 2>/dev/null || true)" | |
# if [ -z "$window_active" ]; then | |
# if ! command -v perl > /dev/null 2>&1; then | |
# tmux run -b 'tmux set display-time 3000 \; display "This configuration requires perl" \; set -u display-time \; run "sleep 3" \; kill-server' | |
# return | |
# fi | |
# if ! perl -MTime::HiRes -e1 > /dev/null 2>&1; then | |
# tmux run -b 'tmux set display-time 3000 \; display "This configuration requires perl Time::HiRes" \; set -u display-time \; run "sleep 3" \; kill-server' | |
# return | |
# fi | |
# if ! command -v sed > /dev/null 2>&1; then | |
# tmux run -b 'tmux set display-time 3000 \; display "This configuration requires sed" \; set -u display-time \; run "sleep 3" \; kill-server' | |
# return | |
# fi | |
# if ! command -v awk > /dev/null 2>&1; then | |
# tmux run -b 'tmux set display-time 3000 \; display "This configuration requires awk" \; set -u display-time \; run "sleep 3" \; kill-server' | |
# return | |
# fi | |
# if [ "$_tmux_version" -lt 260 ]; then | |
# tmux run -b 'tmux set display-time 3000 \; display "This configuration requires tmux 2.6+" \; set -u display-time \; run "sleep 3" \; kill-server' | |
# return | |
# fi | |
# fi | |
# | |
# case "$_uname_s" in | |
# *CYGWIN*|*MSYS*) | |
# # prevent Cygwin and MSYS2 from cd-ing into home directory when evaluating /etc/profile | |
# tmux setenv -g CHERE_INVOKING 1 | |
# ;; | |
# esac | |
# | |
# _apply_tmux_256color | |
# _apply_24b& | |
# _apply_theme& | |
# _apply_bindings& | |
# wait | |
# | |
# _apply_plugins | |
# _apply_important | |
# | |
# # shellcheck disable=SC2046 | |
# tmux setenv -gu tmux_conf_dummy $(printenv | grep -E -o '^tmux_conf_[^=]+' | awk '{printf "; setenv -gu %s", $0}') | |
# } | |
# | |
# _urlview() { | |
# pane_id="$1"; shift | |
# tmux capture-pane -J -S - -E - -b "urlview-$pane_id" -t "$pane_id" | |
# tmux split-window "'$TMUX_PROGRAM' ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} show-buffer -b 'urlview-$pane_id' | urlview || true; '$TMUX_PROGRAM' ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} delete-buffer -b 'urlview-$pane_id'" | |
# } | |
# | |
# _urlscan() { | |
# pane_id="$1"; shift | |
# tmux capture-pane -J -S - -E - -b "urlscan-$pane_id" -t "$pane_id" | |
# tmux split-window "'$TMUX_PROGRAM' ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} show-buffer -b 'urlscan-$pane_id' | urlscan $* || true; '$TMUX_PROGRAM' ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} delete-buffer -b 'urlscan-$pane_id'" | |
# } | |
# | |
# _fpp() { | |
# tmux capture-pane -J -S - -E - -b "fpp-$1" -t "$1" | |
# tmux split-window -c "$2" "'$TMUX_PROGRAM' ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} show-buffer -b 'fpp-$1' | fpp || true; '$TMUX_PROGRAM' ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} delete-buffer -b 'fpp-$1'" | |
# } | |
# | |
# "$@" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# : << 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). | |
set status-position top | |
# -- bindings ------------------------------------------------------------------ | |
# preserve tmux stock bindings, | |
# while adding bindings that don't conflict with these stock bindings | |
# /!\ this disables some of Oh my tmux! bindings described in README.md | |
# - true | |
# - false (default) | |
tmux_conf_preserve_stock_bindings=false | |
# -- 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 | |
# new session retains current path, possible values are: | |
# - true | |
# - false (default) | |
# - disabled (do not modify new-session bindings) | |
tmux_conf_new_session_retain_current_path=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 | |
setw -g mouse on | |
# -- 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 | |
tmux_conf_theme_colour_18="#c4299b" # orchide | |
tmux_conf_theme_colour_19="#007899" # ocean blue | |
tmux_conf_theme_colour_orange="#f58e2f" # ocean blue | |
# 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 <prefix> + 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_19" | |
tmux_conf_theme_message_attr="bold" | |
# status line command style (<prefix> : Escape) | |
tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5" | |
tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_2" | |
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_2" | |
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_2" | |
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_3" | |
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 " | |
tmux_conf_theme_status_right=" #{prefix} 🗓 %d %b 🕗 %R | #{username} | #{hostname} " | |
# status left style | |
tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_13,$tmux_conf_theme_colour_7,$tmux_conf_theme_colour_8" | |
tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_19,$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_2,$tmux_conf_theme_colour_19,$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+1F50C | |
#tmux_conf_battery_status_discharging="🔋" # U+1F50B | |
# clock style (when you hit <prefix> + 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 Linux, this requires xsel, xclip or wl-copy | |
tmux_conf_copy_to_os_clipboard=false | |
# -- urlscan ------------------------------------------------------------------- | |
# options passed to urlscan | |
tmux_conf_urlscan_options="--compact --dedupe" | |
# -- user customizations ------------------------------------------------------- | |
# this is the place to override or undo settings | |
# increase history size | |
#set -g history-limit 10000 | |
# start with mouse mode enabled | |
#set -g mouse on | |
# 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 | |
# 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: <prefix> + I | |
# - uninstalling plugins: <prefix> + Alt + u | |
# - updating plugins: <prefix> + 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' | |
# -- 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 '✘' | |
# } | |
# | |
# wan_ip_v4() { | |
# curl -f -s -m 2 -4 ifconfig.me | |
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval | |
# } | |
# | |
# wan_ip_v6() { | |
# curl -f -s -m 2 -6 ifconfig.me | |
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval | |
# } | |
# | |
# "$@" | |
# # /!\ do not remove the previous line | |
# # do not write below this line |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment