commit b9f3edd197e4b9fc34466e4299b76d1db10e308b Author: Eric Renfro Date: Wed Dec 19 02:50:29 2018 -0500 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/host.tmux b/host.tmux new file mode 100755 index 0000000..9512eda --- /dev/null +++ b/host.tmux @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/scripts/helpers.sh" + +fields_interpolation=( + "\#{hostname}" + "\#{username}" + "\#{hostname_fg_color}" + "\#{hostname_bg_color}" + "\#{username_fg_color}" + "\#{username_bg_color}" +) + +fields_commands=( + "#($CURRENT_DIR/scripts/username.sh)" + "#($CURRENT_DIR/scripts/hostname.sh)" + "#($CURRENT_DIR/scripts/hostname_fg_color.sh)" + "#($CURRENT_DIR/scripts/hostname_bg_color.sh)" + "#($CURRENT_DIR/scripts/username_fg_color.sh)" + "#($CURRENT_DIR/scripts/username_bg_color.sh)" +) + +set_tmux_option() { + local opion=$1 + local value=$2 + tmux set-option -gq "$option" "$value" +} + +do_interpolation() { + local all_interpolated="$1" + for ((i=0; i<${#cpu_commands[@]}; i++)); do + all_interpolated=${all_interpolated/${}} + done + echo "$all_interpolated" +} + +update_tmux_option() { + local option=$1 + local option_value=$(get_tmux_option "$option") + local new_option_value=$(do_interpolation "$option_value") + set_tmux_option "$option" "$new_option_value" +} + +main() { + update_tmux_option "status-right" + update_tmux_option "status-left" +} +main diff --git a/scripts/helpers.sh b/scripts/helpers.sh new file mode 100644 index 0000000..d9028ae --- /dev/null +++ b/scripts/helpers.sh @@ -0,0 +1,64 @@ +get_tmux_option() { + local option="$1" + local default_value="$2" + local option_value="$(tmux show-option -gqv "$option")" + if [ -z "$option_value" ]; then + echo "$default_value" + else + echo "$option_value" + fi +} + +is_osx() { + [ $(uname) == "Darwin" ] +} + +is_freebsd() { + [ $(uname) == "FreeBSD" ] +} + +is_openbsd() { + [ $(uname) == "OpenBSD" ] +} + +is_linux() { + [ $(uname) == "Linux" ] +} + +is_cygwin() { + command -v WMIC &> /dev/null +} + +is_linux_iostat() { + # Bug in early versions of linux iostat -V return error code + iostat -c &> /dev/null +} + +# is second float bigger? +fcomp() { + awk -v n1=$1 -v n2=$2 'BEGIN {if (n1 /dev/null +} diff --git a/scripts/hostname.sh b/scripts/hostname.sh new file mode 100755 index 0000000..a91bb7f --- /dev/null +++ b/scripts/hostname.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/helpers.sh" + +get_hostname() { + tty=${1:-$(tmux display -p '#{pane_tty}')} + ssh_only=$2 + # shellcheck disable=SC2039 + if [ x"$OSTYPE" = x"cygwin" ]; then + pid=$(ps -a | awk -v tty="${tty##/dev/}" '$5 == tty && /ssh/ && !/vagrant ssh/ && !/autossh/ && !/-W/ { print $1 }') + [ -n "$pid" ] && ssh_parameters=$(tr '\0' ' ' < "/proc/$pid/cmdline" | sed 's/^ssh //') + else + ssh_parameters=$(ps -t "$tty" -o command= | awk '/ssh/ && !/vagrant ssh/ && !/autossh/ && !/-W/ { $1=""; print $0; exit }') + fi + if [ -n "$ssh_parameters" ]; then + # shellcheck disable=SC2086 + hostname=$(ssh -G $ssh_parameters 2>/dev/null | awk 'NR > 2 { exit } ; /^hostname / { print $2 }') + # shellcheck disable=SC2086 + [ -z "$hostname" ] && hostname=$(ssh -T -o ControlPath=none -o ProxyCommand="sh -c 'echo %%hostname%% %h >&2'" $ssh_parameters 2>&1 | awk '/^%hostname% / { print $2; exit }') + #shellcheck disable=SC1004 + hostname=$(echo "$hostname" | awk '\ + { \ + if ($1~/^[0-9.:]+$/) \ + print $1; \ + else \ + split($1, a, ".") ; print a[1] \ + }') + else + hostname=$(command hostname -s) + fi + + echo "$hostname" +} + +main() { + local tmux_hostname=$(get_hostname) + echo "$tmux_hostname" +} +main diff --git a/scripts/username.sh b/scripts/username.sh new file mode 100755 index 0000000..efe8227 --- /dev/null +++ b/scripts/username.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/helpers.sh" + +get_username() { + tty=${1:-$(tmux display -p '#{pane_tty}')} + ssh_only=$2 + # shellcheck disable=SC2039 + if [ x"$OSTYPE" = x"cygwin" ]; then + pid=$(ps -a | awk -v tty="${tty##/dev/}" '$5 == tty && /ssh/ && !/vagrant ssh/ && !/autossh/ && !/-W/ { print $1 }') + [ -n "$pid" ] && ssh_parameters=$(tr '\0' ' ' < "/proc/$pid/cmdline" | sed 's/^ssh //') + else + ssh_parameters=$(ps -t "$tty" -o command= | awk '/ssh/ && !/vagrant ssh/ && !/autossh/ && !/-W/ { $1=""; print $0; exit }') + fi + if [ -n "$ssh_parameters" ]; then + # shellcheck disable=SC2086 + username=$(ssh -G $ssh_parameters 2>/dev/null | awk 'NR > 2 { exit } ; /^user / { print $2 }') + # shellcheck disable=SC2086 + [ -z "$username" ] && username=$(ssh -T -o ControlPath=none -o ProxyCommand="sh -c 'echo %%username%% %r >&2'" $ssh_parameters 2>&1 | awk '/^%username% / { print $2; exit }') + else + # shellcheck disable=SC2039 + if [ x"$OSTYPE" = x"cygwin" ]; then + username=$(whoami) + else + username=$(ps -t "$tty" -o user= -o pid= -o ppid= -o command= | awk ' + !/ssh/ { user[$2] = $1; ppid[$3] = 1 } + END { + for (i in user) + if (!(i in ppid)) + { + print user[i] + exit + } + } + ') + fi + fi + + echo "$username" +} + +main() { + local tmux_username=$(get_username) + echo "$tmux_username" +} +main