172 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			172 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/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 |