#!/bin/sh # i3 config in ~/.config/i3/config : # bar { # status_command exec /home/you/.config/i3status/mybar.sh # } bg_bar_color="#282A36" # Print a left caret separator # @params {string} $1 text color, ex: "#FF0000" # @params {string} $2 background color, ex: "#FF0000" separator() { echo -n "{" echo -n "\"full_text\":\"\"," # CTRL+Ue0b2 echo -n "\"separator\":false," echo -n "\"separator_block_width\":0," echo -n "\"border\":\"$bg_bar_color\"," echo -n "\"border_left\":0," echo -n "\"border_right\":0," echo -n "\"border_top\":2," echo -n "\"border_bottom\":2," echo -n "\"color\":\"$1\"," echo -n "\"background\":\"$2\"" echo -n "}" } common() { echo -n "\"border\": \"$bg_bar_color\"," echo -n "\"separator\":false," echo -n "\"separator_block_width\":0," echo -n "\"border_top\":2," echo -n "\"border_bottom\":2," echo -n "\"border_left\":0," echo -n "\"border_right\":0" } myip_public_text() { local bg="#000000" local text_color="#D48F06" separator $bg "#FFD180" echo -n ",{" echo -n "\"name\":\"ip_public_text\"," echo -n "\"color\":\"$text_color\"," echo -n "\"full_text\":\" $(echo -n "Public Ip:") \"," echo -n "\"background\":\"$bg\"," common echo -n "}," } myip_public() { local bg="#000000" local text_color="#00A300" separator $bg "#FFFFFF" echo -n ",{" echo -n "\"name\":\"ip_public\"," echo -n "\"color\":\"$text_color\"," echo -n "\"full_text\":\"$(curl -4 ip.me)\"," echo -n "\"background\":\"$bg\"," common echo -n "}," } myip_local_text() { local bg="#000000" local text_color="#D48F06" separator $bg "#FFD180" echo -n ",{" echo -n "\"name\":\"ip_local_text\"," echo -n "\"color\":\"$text_color\"," echo -n "\"full_text\":\" $(echo -n "Local Ip:")\"," echo -n "\"background\":\"$bg\"," common echo -n "}," } mygeo_text() { local bg="#000000" local text_color="#00A300" separator $bg "#FFD180" echo -n ",{" echo -n "\"name\":\"mygeo_text\"," echo -n "\"color\":\"$text_color\"," echo -n "\"full_text\":\" ($(/home/pierre/bin/goiplookup $(curl -s4 ip.me) | cut -d" " -f4-))\"," echo -n "\"background\":\"$bg\"," common echo -n "}," } myip_local() { local bg="#000000" # vert separator $bg $bg_separator_previous local text_color="#00A300" echo -n ",{" echo -n "\"color\":\"$text_color\"," echo -n "\"name\":\"ip_local\"," echo -n "\"full_text\":\"$(ip route get 1 | sed -n 's/.*src \([0-9.]\+\).*/\1/p')\"," echo -n "\"background\":\"$bg\"," common echo -n "}," } vpn_text() { local bg="#000000" local text_color="#D48F06" local icon="" if [ ! -d /proc/sys/net/ipv4/conf/wg0 ]; then icon="" fi separator $bg "#FFD180" echo -n ",{" echo -n "\"name\":\"vpn_text\"," echo -n "\"color\":\"$text_color\"," echo -n "\"full_text\":\" $(echo -n "VPN:")\"," echo -n "\"background\":\"$bg\"," common echo -n "}," } myvpn_on() { local bg="#000000" # grey darken-3 local icon="" text_color="#00A300" text="ON" if [ ! -d /proc/sys/net/ipv4/conf/wg0 ]; then text_color="#E53935" # rouge text="OFF" icon="" fi separator $bg "#1976D2" # background left previous block bg_separator_previous=$bg echo -n ",{" echo -n "\"color\":\"$text_color\"," echo -n "\"name\":\"id_vpn\"," echo -n "\"full_text\":\" ${icon} ${text} \"," echo -n "\"background\":\"$bg\"," common echo -n "}" } # https://github.com/i3/i3/blob/next/contrib/trivial-bar-script.sh echo '{ "version": 1, "click_events":true }' # Send the header so that i3bar knows we want to use JSON: echo '[' # Begin the endless array. echo '[]' # We send an empty first array of blocks to make the loop simpler: # Now send blocks with information forever: (while :; do echo -n ",[" myip_public_text myip_public mygeo_text myip_local_text myip_local vpn_text myvpn_on echo "]" sleep 5 done) & # click events while read line; do # echo $line > /home/you/gitclones/github/i3/tmp.txt # {"name":"id_vpn","button":1,"modifiers":["Mod2"],"x":2982,"y":9,"relative_x":67,"relative_y":9,"width":95,"height":22} # VPN click if [[ $line == *"name"*"id_vpn"* ]]; then mate-terminal -e /home/pierre/.config/i3status/click_vpn.sh & fi done