From 5eec2e28d0e44b2ac168fc3e08a38d68d4cb4fbe Mon Sep 17 00:00:00 2001 From: David Sabatie Date: Wed, 31 May 2017 17:32:42 +0200 Subject: [PATCH] add vpn ip to prompt --- README.md | 9 +++++++++ functions/icons.zsh | 16 ++++++++++------ powerlevel9k.zsh-theme | 11 +++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 890875a..5b9cb24 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ The segments that are currently available are: * `history` - The command number for the current line. * [`host`](#host) - Your current host name * [`ip`](#ip) - Shows the current IP address. +* [`vpn`](#vpn) - Shows the current VPN IP address. * [`public_ip`](#public_ip) - Shows your public IP address. * `load` - Your machine's load averages. * `os_icon` - Display a nice little icon, depending on your operating system. @@ -444,6 +445,14 @@ specify the correct network interface by setting: |----------|---------------|-------------| |`POWERLEVEL9K_IP_INTERFACE`|None|The NIC for which you wish to display the IP address. Example: `eth0`.| +##### vpn + +This segment tries to extract the VPN related IP addresses from nmcli, based on the NIC type: + +| Variable | Default Value | Description | +|----------|---------------|-------------| +|`POWERLEVEL9K_VPN_IP_INTERFACE`|tun|The VPN NIC type| + ##### public_ip This segment will display your public IP address. There are several methods of obtaining this diff --git a/functions/icons.zsh b/functions/icons.zsh index 238b6b9..9b5953e 100644 --- a/functions/icons.zsh +++ b/functions/icons.zsh @@ -84,6 +84,7 @@ case $POWERLEVEL9K_MODE in LOCK_ICON $'\UE138' #  EXECUTION_TIME_ICON $'\UE89C' #  SSH_ICON '(ssh)' + VPN_ICON '(vpn)' ) ;; 'awesome-fontconfig') @@ -145,13 +146,14 @@ case $POWERLEVEL9K_MODE in VCS_GIT_GITLAB_ICON $'\uF296 ' #  VCS_HG_ICON $'\uF0C3 ' #  VCS_SVN_ICON '(svn) ' - RUST_ICON $'\uE6A8' #  + RUST_ICON $'\uE6A8' #  PYTHON_ICON $'\U1F40D' # 🐍 SWIFT_ICON '' PUBLIC_IP_ICON '' LOCK_ICON $'\UE138' #  EXECUTION_TIME_ICON $'\uF253' SSH_ICON '(ssh)' + VPN_ICON $'\uF023' ) ;; 'nerdfont-complete'|'nerdfont-fontconfig') @@ -174,7 +176,7 @@ case $POWERLEVEL9K_MODE in TEST_ICON $'\uF188' #  TODO_ICON $'\uF133' #  BATTERY_ICON $'\UF240 ' #  - DISK_ICON $'\uF0A0' #  + DISK_ICON $'\uF0A0' #  OK_ICON $'\uF00C' #  FAIL_ICON $'\uF00D' #  SYMFONY_ICON $'\uE757' #  @@ -210,16 +212,17 @@ case $POWERLEVEL9K_MODE in VCS_GIT_ICON $'\uF113 ' #  VCS_GIT_GITHUB_ICON $'\uE709 ' #  VCS_GIT_BITBUCKET_ICON $'\uE703 ' #  - VCS_GIT_GITLAB_ICON $'\uF296 ' #  + VCS_GIT_GITLAB_ICON $'\uF296 ' #  VCS_HG_ICON $'\uF0C3 ' #  VCS_SVN_ICON $'\uE72D ' #  RUST_ICON $'\uE7A8 ' #  PYTHON_ICON $'\UE73C ' #  SWIFT_ICON $'\uE755' #  PUBLIC_IP_ICON $'\UF0AC' #  - LOCK_ICON $'\UF023' #  - EXECUTION_TIME_ICON $'\uF252' #  - SSH_ICON $'\uF489' #  + LOCK_ICON $'\UF023' #  + EXECUTION_TIME_ICON $'\uF252' #  + SSH_ICON $'\uF489' #  + VPN_ICON '(vpn)' ) ;; *) @@ -288,6 +291,7 @@ case $POWERLEVEL9K_MODE in LOCK_ICON $'\UE0A2' EXECUTION_TIME_ICON 'Dur' SSH_ICON '(ssh)' + VPN_ICON '(vpn)' ) ;; esac diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 666ce96..760de5a 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -914,6 +914,17 @@ prompt_ip() { "$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'NETWORK_ICON' } +set_default POWERLEVEL9K_VPN_IP_INTERFACE "tun" +# prompt if vpn active +prompt_vpn_ip() { + for vpn_iface in $(ip tuntap | grep -e ^"$POWERLEVEL9K_VPN_IP_INTERFACE" | cut -d":" -f1) + do + ip=$(ip -4 a show "$vpn_iface" | grep -o "inet\s*[0-9.]*" | grep -o "[0-9.]*") + "$1_prompt_segment" "$0" "$2" "cyan" "$DEFAULT_COLOR" "$ip" 'VPN_ICON' + done +} + + prompt_load() { # The load segment can have three different states local current_state="unknown"