diff --git a/README.md b/README.md index 678cf0b9..b03bee48 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. @@ -445,6 +446,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 e38d66a2..ea9d959b 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)' KUBERNETES_ICON $'\U2388' # ⎈ ) ;; @@ -146,13 +147,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' KUBERNETES_ICON $'\U2388' # ⎈ ) ;; @@ -176,7 +178,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' #  @@ -212,16 +214,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)' KUBERNETES_ICON $'\U2388' # ⎈ ) ;; @@ -291,6 +294,7 @@ case $POWERLEVEL9K_MODE in LOCK_ICON $'\UE0A2' EXECUTION_TIME_ICON 'Dur' SSH_ICON '(ssh)' + VPN_ICON '(vpn)' KUBERNETES_ICON $'\U2388' # ⎈ ) ;; diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 668748d2..dc7f0388 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"