summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sabatie <david.sabatie@sigfox.com>2017-05-31 18:32:42 +0300
committerDavid Sabatie <david.sabatie@sigfox.com>2017-05-31 18:32:42 +0300
commit5eec2e28d0e44b2ac168fc3e08a38d68d4cb4fbe (patch)
tree530469cc3cc972776b75cf59b6796c4a5c7817fb
parent92264124a9a3894b86ec66617d5e40dea77cd2f1 (diff)
add vpn ip to prompt
-rw-r--r--README.md9
-rw-r--r--functions/icons.zsh16
-rwxr-xr-xpowerlevel9k.zsh-theme11
3 files changed, 30 insertions, 6 deletions
diff --git a/README.md b/README.md
index 890875ad..5b9cb24a 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 238b6b9e..9b5953e3 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 666ce965..760de5a9 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"