172 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | |
|    wezterm  -e --class term_date /home/pierre/.config/i3status/click_vpn.sh &
 | |
|   fi  
 | |
| done
 | 
