diff --git a/.tmux/plugins/tmux-ip-address/.editorconfig b/.tmux/plugins/tmux-ip-address/.editorconfig new file mode 100644 index 0000000..901d90d --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/.editorconfig @@ -0,0 +1,5 @@ +[*] +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 diff --git a/.tmux/plugins/tmux-ip-address/LICENSE b/.tmux/plugins/tmux-ip-address/LICENSE new file mode 100644 index 0000000..0eb3f3b --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Aaron Powell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.tmux/plugins/tmux-ip-address/README.md b/.tmux/plugins/tmux-ip-address/README.md new file mode 100644 index 0000000..e34f5ec --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/README.md @@ -0,0 +1,63 @@ +# Tmux IP Address + +The plugin shows public IP Address on the status bar of tmux using `#{ip_address}` syntax on the tmux `status-right` option. + + +## Usage + +Add `#{ip_address}` to your existing `status-right` tmux option: + +```bash +set -g status-right '#{ip_address} | #H' +``` + +You'll now see some information like so: + +``` +172.116.1.10 +``` + +IP Address can be refreshed by prefix + A. +The key combination of refreshing IP Address can be customized by: +```bash +set -g @ip_address_refresh_key 'P' +``` + +## Installation with [Tmux Plugin Manager](https://github.com/tmux-plugins/tpm) (recommended) + +Add plugin to the list of TPM plugins in `.tmux.conf`: + +```bash +set -g @plugin 'anghootys/tmux-ip-address' +``` + +Hit `prefix + I` to fetch the plugin and source it. + +`#{ip_address}` interpolation should now work. + +### Manual Installation + +Clone the repo: + +```bash +$ git clone https://github.com/anghootys/tmux-ip-address ~/clone/path +``` + +Add this line to the bottom of `.tmux.conf`: + +```bash +run-shell ~/clone/path/ip_address.tmux +``` + +Reload TMUX environment: + +```bash +# type this in terminal +$ tmux source-file ~/.tmux.conf +``` + +`#{ip_address}` interpolation should now work. + +## License + +[MIT](LICENSE) diff --git a/.tmux/plugins/tmux-ip-address/ip_address.tmux b/.tmux/plugins/tmux-ip-address/ip_address.tmux new file mode 100755 index 0000000..705b395 --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/ip_address.tmux @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/scripts/helpers.sh" + +ip_address="$($CURRENT_DIR/scripts/ip_address.sh)" +ip_address_interpolation_string="\#{ip_address}" +ip_address_refresh_cmd_key="$(get_tmux_option "@ip_address_refresh_key" "A")" + +do_interpolation() { + local string="$1" + local ip_addr=$ip_address + if [ -z "$ip_addr" ] + then + ip_addr="Offline" + fi + + local interpolated="$(echo $1 | sed "s/$ip_address_interpolation_string/$ip_addr/g")" + + echo "$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() { + tmux bind-key "$ip_address_refresh_cmd_key" run-shell -b "$CURRENT_DIR/scripts/update_ip_address.sh" + update_tmux_option "status-right" +} +main diff --git a/.tmux/plugins/tmux-ip-address/scripts/helpers.sh b/.tmux/plugins/tmux-ip-address/scripts/helpers.sh new file mode 100755 index 0000000..85f9ee7 --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/scripts/helpers.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set_tmux_option() { + local option="$1" + local value="$2" + tmux set-option -gq "$option" "$value" +} + +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 +} diff --git a/.tmux/plugins/tmux-ip-address/scripts/ip_address.sh b/.tmux/plugins/tmux-ip-address/scripts/ip_address.sh new file mode 100755 index 0000000..11d1c04 --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/scripts/ip_address.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/helpers.sh" + +print_ip_address() { + local ip_address=$(curl --max-time 1.5 --silent http://ip.me) + echo ${ip_address} +} + +main() { + print_ip_address +} + +main diff --git a/.tmux/plugins/tmux-ip-address/scripts/update_ip_address.sh b/.tmux/plugins/tmux-ip-address/scripts/update_ip_address.sh new file mode 100755 index 0000000..2840f29 --- /dev/null +++ b/.tmux/plugins/tmux-ip-address/scripts/update_ip_address.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +source "$CURRENT_DIR/helpers.sh" + +ip_address="$($CURRENT_DIR/ip_address.sh)" +ip_address_interpolation_string="\#{ip_address}" + +do_interpolation() { + local string="$1" + local ip_addr=$ip_address + if [ -z "$ip_address" ] + then + ip_addr="Offline" + fi + + local interpolated="$(echo $1 | sed "s/$ip_address_interpolation_string/$ip_addr/g")" + + echo "$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" +} +main