419 lines
10 KiB
Bash
Executable File
419 lines
10 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"
|
|
}
|
|
|
|
root_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_root_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n 'Root:')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
root_usage() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#2E7D32"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_root_usage\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(df --output=pcent / | grep -v Uti)\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
home_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_home_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n 'Home:')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
home_usage() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#2E7D32"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_home_usage\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(df --output=pcent /home | grep -v Uti)\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
src_usage() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#2E7D32"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_src_usage\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(df --output=pcent /usr/src | grep -v Uti)\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
src_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_src_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n 'Src:')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
seclists_usage() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#2E7D32"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_seclists_usage\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(df --output=pcent /usr/share/seclists | grep -v Uti)\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
seclists_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_boot_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n 'Sec:')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
boot_usage() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#2E7D32"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_boot_usage\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(df --output=pcent /boot | grep -v Uti)\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
boot_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_boot_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n 'Boot:')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
memory_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_memory_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n ' Mem: ')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
memory() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"name\":\"id_memory\","
|
|
echo -n "\"full_text\":\"$(free | awk '/^Mem/ { printf("%.2f", $3/$2 * 100.0) }')%\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
cpu_usage() {
|
|
local text_color="#00A300"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"name\":\"id_cpu_usage\","
|
|
echo -n "\"full_text\":\"$(ps -A -o pcpu | tail -n+2 | paste -sd+ | bc)% \","
|
|
echo -n "\"background\":\"#000000\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
cpu_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_cpu_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\" $(echo -n ' CPU: ')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
mydate() {
|
|
local bg="#000000"
|
|
separator $bg "#FFD190"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_time\","
|
|
echo -n "\"full_text\":\" $(date "+%a %d/%m %H:%M") \","
|
|
echo -n "\"color\":\"#D48F06\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
bat_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
charging=$(cat /sys/class/power_supply/BAT0/uevent | grep "POWER_SUPPLY_STATUS" | cut -d'=' -f2) # POWER_SUPPLY_STATUS=Discharging|Charging
|
|
icon=""
|
|
if [ "$charging" == "Charging" ]; then
|
|
icon=""
|
|
fi
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_bat_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"${icon}$(echo -n ' Bat: ')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
battery0() {
|
|
if [ -f /sys/class/power_supply/BAT0/uevent ]; then
|
|
local bg="#000000"
|
|
separator $bg "#E0E0E0"
|
|
bg_separator_previous=$bg
|
|
prct=$(cat /sys/class/power_supply/BAT0/uevent | grep "POWER_SUPPLY_CAPACITY=" | cut -d'=' -f2)
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"battery0\","
|
|
echo -n "\"full_text\":\"${prct}% \","
|
|
echo -n "\"color\":\"#00A300\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
else
|
|
bg_separator_previous="#E0E0E0"
|
|
fi
|
|
}
|
|
|
|
volume() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg $bg_separator_previous
|
|
vol=$(pulsemixer --get-volume)
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_volume\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
if [ $vol -le 0 ]; then
|
|
echo -n "\"full_text\":\" ${vol}% \","
|
|
else
|
|
echo -n "\"full_text\":\" ${vol}% \","
|
|
fi
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
separator $bg_bar_color $bg
|
|
}
|
|
|
|
systemupdate() {
|
|
local nb=$(checkupdates | wc -l)
|
|
if (( $nb > 0)); then
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_systemupdate\","
|
|
echo -n "\"full_text\":\" ${nb}\""
|
|
echo -n "}"
|
|
fi
|
|
}
|
|
|
|
|
|
Artist_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_artist_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"🎧 $(ncmpcpp --current-song "{%a} ")\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
Music_text() {
|
|
local bg="#000000"
|
|
local text_color="#00A300"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_music_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(ncmpcpp --current-song "{%t} ")\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
Album_text() {
|
|
local bg="#000000"
|
|
local text_color="#D48F06"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_album_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(ncmpcpp --current-song " {%b} ")\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
|
|
cutator() {
|
|
local bg="#000000"
|
|
local text_color="#919191"
|
|
separator $bg "#FFD180"
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_cutator_text\","
|
|
echo -n "\"color\":\"$text_color\","
|
|
echo -n "\"full_text\":\"$(echo -n '||')\","
|
|
echo -n "\"background\":\"$bg\","
|
|
common
|
|
echo -n "},"
|
|
}
|
|
logout() {
|
|
echo -n ",{"
|
|
echo -n "\"name\":\"id_logout\","
|
|
echo -n "\"full_text\":\" \""
|
|
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 ",["
|
|
Artist_text
|
|
Music_text
|
|
Album_text
|
|
cutator
|
|
root_text
|
|
root_usage
|
|
home_text
|
|
home_usage
|
|
boot_text
|
|
boot_usage
|
|
src_text
|
|
src_usage
|
|
# seclists_text
|
|
# seclists_usage
|
|
cutator
|
|
memory_text
|
|
memory
|
|
cpu_text
|
|
cpu_usage
|
|
cutator
|
|
mydate
|
|
bat_text
|
|
battery0
|
|
volume
|
|
logout
|
|
echo "]"
|
|
sleep 1
|
|
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}
|
|
|
|
# CPU
|
|
if [[ $line == *"name"*"id_cpu_usage"* ]]; then
|
|
wezterm --config-file /home/pierre/.config/i3status/wezterm_htop.lua -e --class term_date htop &
|
|
|
|
# TIME
|
|
elif [[ $line == *"name"*"id_time"* ]]; then
|
|
wezterm --config-file /home/pierre/.config/i3status/wezterm_date.lua -e --position screen:1582,21 --class term_date /home/pierre/.config/i3status/click_time.sh &
|
|
|
|
# VOLUME
|
|
elif [[ $line == *"name"*"id_volume"* ]]; then
|
|
wezterm -e --class term_date -e pulsemixer &
|
|
|
|
elif [[ $line == *"name"*"artist"* ]]; then
|
|
wezterm -e --class term_date -e ncmpcpp &
|
|
#
|
|
# LOGOUT
|
|
elif [[ $line == *"name"*"id_logout"* ]]; then
|
|
i3-nagbar -t warning -m 'Log out ?' -b 'yes' 'i3-msg exit' > /dev/null &
|
|
fi
|
|
done
|