i3_configuration/i3status/mybottombar.sh
2025-10-16 00:12:19 +02:00

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