From cef049e0de310c0ba00eed5d21f7678d105db3d2 Mon Sep 17 00:00:00 2001 From: romkatv Date: Fri, 26 Jul 2019 10:20:40 +0200 Subject: [PATCH] nordvpn: add CONNECTING and DISCONECTING states, remove OTHER See https://github.com/romkatv/powerlevel10k/issues/133. --- config/p10k-lean.zsh | 7 ++++-- internal/p10k.zsh | 54 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 51 insertions(+), 10 deletions(-) diff --git a/config/p10k-lean.zsh b/config/p10k-lean.zsh index 16c55bc6..53633ede 100644 --- a/config/p10k-lean.zsh +++ b/config/p10k-lean.zsh @@ -337,8 +337,11 @@ fi ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]########### # NordVPN connection indicator color when connected. typeset -g POWERLEVEL9K_NORDVPN_CONNECTED_FOREGROUND=4 - # NordVPN connection indicator color when disconnected. - typeset -g POWERLEVEL9K_NORDVPN_DISCONNECTED_FOREGROUND=3 + # NordVPN connection indicator color when not connected. + typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_FOREGROUND=3 + # Uncomment these two lines to hide NordVPN connection indicator when not connected. + # typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION= + # typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION= ####################################[ context: user@host ]#################################### # Context format: user@host. diff --git a/internal/p10k.zsh b/internal/p10k.zsh index 3305483b..77aa1e97 100755 --- a/internal/p10k.zsh +++ b/internal/p10k.zsh @@ -2986,6 +2986,46 @@ function _p9k_fetch_nordvpn_status() { } } +# Shows the state of NordVPN connection. Works only on Linux. Can be in the following 5 states. +# +# MISSING: NordVPN is not installed or nordvpnd is not running. By default the segment is not +# shown in this state. To make it visible, override POWERLEVEL9K_NORDVPN_MISSING_CONTENT_EXPANSION +# and/or POWERLEVEL9K_NORDVPN_MISSING_VISUAL_IDENTIFIER_EXPANSION. +# +# # Display this icon when NordVPN is not installed or nordvpnd is not running +# POWERLEVEL9K_NORDVPN_MISSING_VISUAL_IDENTIFIER_EXPANSION='⭐' +# +# CONNECTED: NordVPN is connected. By default shows LOCK_ICON as icon and country code as content. +# In addition, the following variables are set for the use by +# POWERLEVEL9K_NORDVPN_CONNECTED_VISUAL_IDENTIFIER_EXPANSION and +# POWERLEVEL9K_NORDVPN_CONNECTED_CONTENT_EXPANSION: +# +# - P9K_NORDVPN_STATUS +# - P9K_NORDVPN_PROTOCOL +# - P9K_NORDVPN_IP_ADDRESS +# - P9K_NORDVPN_SERVER +# - P9K_NORDVPN_COUNTRY +# - P9K_NORDVPN_CITY +# - P9K_NORDVPN_COUNTRY_CODE +# +# The last variable is trivially derived from P9K_NORDVPN_SERVER. The rest correspond to the output +# lines of `nordvpn status` command. Example of using these variables: +# +# # Display the name of the city where VPN servers are located when connected to NordVPN. +# POWERLEVEL9K_NORDVPN_CONNECTED_CONTENT_EXPANSION='${P9K_NORDVPN_CITY}' +# +# DISCONNECTED, CONNECTING, DISCONNECTING: NordVPN is disconnected/connecting/disconnecting. By +# default shows LOCK_ICON as icon and FAIL_ICON as content. In state CONNECTING the same +# P9K_NORDVPN_* variables are set as in CONNECTED. In states DISCONNECTED and DISCONNECTING only +# P9K_NORDVPN_STATUS is set. Example customizations: +# +# # Hide NordVPN segment when disconnected (segments with no icon and no content are not shown). +# POWERLEVEL9K_NORDVPN_DISCONNECTED_CONTENT_EXPANSION= +# POWERLEVEL9K_NORDVPN_DISCONNECTED_VISUAL_IDENTIFIER_EXPANSION= +# +# # When NordVPN is connecting, show country code on cyan background. +# POWERLEVEL9K_NORDVPN_CONNECTING_CONTENT_EXPANSION='${P9K_NORDVPN_COUNTRY_CODE}' +# POWERLEVEL9K_NORDVPN_CONNECTING_BACKGROUND=cyan function prompt_nordvpn() { unset $__p9k_nordvpn_tag P9K_NORDVPN_COUNTRY_CODE if [[ $+commands[nordvpn] == 1 && -e /run/nordvpnd.sock ]]; then @@ -2995,16 +3035,14 @@ function prompt_nordvpn() { fi fi case $P9K_NORDVPN_STATUS in - '') - _p9k_prompt_segment $0_MISSING blue white '' 0 '' '';; Connected) - _p9k_prompt_segment $0_CONNECTED blue white LOCK_ICON 0 '' "$P9K_NORDVPN_COUNTRY_CODE";; - Disconnected) - _p9k_get_icon $0_DISCONNECTED FAIL_ICON - _p9k_prompt_segment $0_DISCONNECTED yellow white LOCK_ICON 0 '' "$_p9k_ret";; + _p9k_prompt_segment $0_CONNECTED blue white LOCK_ICON 0 '' "$P9K_NORDVPN_COUNTRY_CODE";; + Disconnected|Connecting|Disconnecting) + local state=${(U)P9K_NORDVPN_STATUS} + _p9k_get_icon $0_$state FAIL_ICON + _p9k_prompt_segment $0_$state yellow white LOCK_ICON 0 '' "$_p9k_ret";; *) - _p9k_get_icon $0_OTHER FAIL_ICON - _p9k_prompt_segment $0_OTHER yellow white LOCK_ICON 0 '' "$_p9k_ret";; + _p9k_prompt_segment $0_MISSING blue white '' 0 '' '';; esac }