first commit

This commit is contained in:
Eric Renfro 2018-12-19 02:50:29 -05:00
commit b9f3edd197
Signed by: psi-jack
GPG key ID: 14977F3A50D9A5BF
5 changed files with 203 additions and 0 deletions

0
README.md Normal file
View file

50
host.tmux Executable file
View file

@ -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

64
scripts/helpers.sh Normal file
View file

@ -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<n2) exit 0; exit 1}'
}
cpu_load_status() {
local percentage=$1
if fcomp 80 $percentage; then
echo "high"
elif fcomp 30 $percentage && fcomp $percentage 80; then
echo "medium"
else
echo "low"
fi
}
cpus_number() {
if is_linux; then
nproc
else
sysctl -n hw.ncpu
fi
}
command_exists() {
local command="$1"
command -v "$command" &> /dev/null
}

41
scripts/hostname.sh Executable file
View file

@ -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

48
scripts/username.sh Executable file
View file

@ -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