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
|