1
0
Fork 0
mirror of synced 2024-05-24 11:10:26 -04:00
tmux-config/.tmux.conf

1737 lines
92 KiB
Plaintext
Raw Permalink Normal View History

# : << '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 /!\
# ------------------------------------------------------------------------------
2012-07-23 04:25:24 -04:00
# -- general -------------------------------------------------------------------
set -g default-terminal "screen-256color"
2012-07-23 04:25:24 -04:00
setw -g xterm-keys on
set -s escape-time 10 # faster command sequences
2014-02-28 05:41:39 -05:00
set -sg repeat-time 600 # increase repeat timeout
2016-07-31 18:57:26 -04:00
set -s focus-events on
2012-07-23 04:25:24 -04:00
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
2014-02-28 05:41:39 -05:00
set -g history-limit 5000 # boost history
2012-07-23 04:25:24 -04:00
# edit configuration
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"'
2012-07-23 04:25:24 -04:00
# reload configuration
bind r run '"$TMUX_PROGRAM" ${TMUX_SOCKET:+-S "$TMUX_SOCKET"} source "$TMUX_CONF"' \; display "#{TMUX_CONF} sourced"
2012-07-23 04:25:24 -04:00
# -- display -------------------------------------------------------------------
set -g base-index 1 # start windows numbering at 1
setw -g pane-base-index 1 # make pane numbering consistent with windows
2012-07-23 04:25:24 -04:00
setw -g automatic-rename on # rename window to reflect current program
set -g renumber-windows on # renumber windows when a window is closed
2012-07-23 04:25:24 -04:00
set -g set-titles on # set terminal title
2012-07-23 04:25:24 -04:00
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
2012-07-23 04:25:24 -04:00
# activity
set -g monitor-activity on
set -g visual-activity off
# -- navigation ----------------------------------------------------------------
# create session
bind C-c new-session
2012-11-14 15:51:43 -05:00
# 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
2012-07-23 04:25:24 -04:00
# 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
2012-07-23 04:25:24 -04:00
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'"
2012-07-23 04:25:24 -04:00
# 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"
2012-07-23 04:25:24 -04:00
2015-07-24 16:25:55 -04:00
# -- facebook pathpicker -------------------------------------------------------
bind F run "cut -c3- '#{TMUX_CONF}' | sh -s _fpp '#{pane_id}' '#{pane_current_path}'"
2015-07-24 16:25:55 -04:00
2012-07-23 04:25:24 -04:00
# -- copy mode -----------------------------------------------------------------
bind Enter copy-mode # enter copy mode
2022-12-26 16:40:08 -05:00
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
2012-07-23 04:25:24 -04:00
# 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
2012-07-23 04:25:24 -04:00
# -- 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
2012-07-23 04:25:24 -04:00
run '"$TMUX_PROGRAM" source "$TMUX_CONF_LOCAL"'
run 'cut -c3- "$TMUX_CONF" | sh -s _apply_configuration'
2012-07-23 04:25:24 -04:00
# EOF
2014-11-18 17:08:57 -05:00
#
2012-07-23 04:25:24 -04:00
# # 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
#
2019-07-28 07:06:15 -04:00
# _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" ]
2012-07-23 04:25:24 -04:00
# }
#
# _circled() {
# circled_digits='⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳'
# if [ "$1" -le 20 ] 2>/dev/null; then
# i=$(( $1 + 1 ))
# eval set -- "$circled_digits"
# eval echo "\${$i}"
2012-07-23 04:25:24 -04:00
# else
# echo "$1"
2012-07-23 04:25:24 -04:00
# 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
# }
#
2020-02-18 15:22:29 -05:00
# 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
2020-02-18 15:22:29 -05:00
# _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"
2012-07-23 04:25:24 -04:00
# else
# $restore || tmux kill-pane
2012-07-23 04:25:24 -04:00
# 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
2019-07-28 07:06:15 -04:00
# 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/}"
2019-07-28 07:06:15 -04:00
# 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]
# }
# '
# ;;
# *)
2023-12-08 10:12:31 -05:00
# 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() {
2019-07-28 07:06:15 -04:00
# case "$_uname_s" in
2020-09-13 08:17:09 -04:00
# *Darwin*|*FreeBSD*)
# boot=$(sysctl -n kern.boottime 2>/dev/null | awk -F'[ ,:]+' '{ print $4 }')