463 lines
12 KiB
Bash
Executable File
463 lines
12 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Zakaria Barkouk ( Zakaria.gatter@gmail.com)
|
|
|
|
#---------------------#
|
|
# SHOW CPU INFO (TOP) #
|
|
#---------------------#
|
|
_BLOCK_1_(){ #{{{
|
|
mpstat | awk '/all/{print "'"${1:-} "'"$4}'
|
|
} #}}}
|
|
|
|
#--------------------#
|
|
# SHOW ALL CPUS INFO #
|
|
#--------------------#
|
|
_BLOCK_2_(){ #{{{
|
|
mpstat -P ALL | awk -v icon=${1:-} 'BEGIN{printf "%s ", icon} {
|
|
if($3 ~ /^[0-9]/){
|
|
printf "%s ", $4
|
|
}
|
|
}'
|
|
} #}}}
|
|
|
|
#--------------------------#
|
|
# SHOW MEMORY USAGE (FREE) #
|
|
#--------------------------#
|
|
_BLOCK_3_(){ #{{{
|
|
free -h | awk '/^Mem:/{print "'"${1:-} "'"$3}'
|
|
} #}}}
|
|
|
|
#------------------------#
|
|
# SHOW SWAP USAGE (FREE) #
|
|
#------------------------#
|
|
_BLOCK_4_(){ #{{{
|
|
free -h | awk '/^Swap:/{print "'"${1:-}"' "$3}'
|
|
} #}}}
|
|
|
|
#---------------------------#
|
|
# SHOW DATE AND TIME (DATE) #
|
|
#---------------------------#
|
|
_BLOCK_5_(){ #{{{
|
|
date +"${1:-} %R %D"
|
|
} #}}}
|
|
|
|
#----------------------------#
|
|
# SHOW BATTERY STATUS (ACPI) #
|
|
#----------------------------#
|
|
_BLOCK_6_(){ #{{{
|
|
Bat=$(acpi | awk '{gsub(",|%","",$4); print $4}');
|
|
adapt=$(acpi -a | awk '{print $3}');
|
|
|
|
if [ "$adapt" = "on-line" -a -n "$Bat" ];then
|
|
icon0=" "
|
|
icon1=" "
|
|
icon2=" "
|
|
icon3=" "
|
|
icon4=" "
|
|
elif [ "$adapt" = "on-line" ];then
|
|
icon0=""
|
|
icon1=""
|
|
icon2=""
|
|
icon3=""
|
|
icon4=""
|
|
else
|
|
icon0=""
|
|
icon1=""
|
|
icon2=""
|
|
icon3=""
|
|
icon4=""
|
|
fi
|
|
|
|
[ -z "$Bat" ] && echo "$icon0 $adapt" && return
|
|
[ "$Bat" -gt "100" ] && echo "$icon4 Full"
|
|
[ "$Bat" -gt "90" ] && echo "$icon3 $Bat%"
|
|
[ "$Bat" -gt "60" ] && echo "$icon2 $Bat%"
|
|
[ "$Bat" -gt "30" ] && echo "$icon1 $Bat%"
|
|
[ "$Bat" -lt "30" ] && echo "$icon0 $Bat%"
|
|
} #}}}
|
|
|
|
#----------------------#
|
|
# SHOW DISK USAGE (DF) #
|
|
#----------------------#
|
|
_BLOCK_7_() { #{{{
|
|
df -h "${1:-/}" | awk '/\/dev\//{print "'"${2:-}"' "$3-G"/"$2}'
|
|
} #}}}
|
|
|
|
#----------------------#
|
|
# SHOW KEYBOARD LAYOUT #
|
|
#----------------------#
|
|
_BLOCK_8_() { #{{{
|
|
awk -F '"' '/XKBLAYOUT/{print "'"${1:-} "'"$2}' /etc/default/keyboard
|
|
} #}}}
|
|
|
|
#----------------------#
|
|
# SHOW SYSTEM LANGUAGE #
|
|
#----------------------#
|
|
_BLOCK_9_(){ #{{{
|
|
echo "${1:-} ${LANG/.UTF-8/}"
|
|
} #}}}
|
|
|
|
#------------------------------#
|
|
# SHOW MACHINE UPTIME (UPTIME) #
|
|
#------------------------------#
|
|
_BLOCK_10_() { #{{{
|
|
uptime | awk '{sub(",","",$4); print "'"${1:- } "'"$3 " " $4}'
|
|
} #}}}
|
|
|
|
#----------------------#
|
|
# SHOW TRASH SIZE (DU) #
|
|
#----------------------#
|
|
_BLOCK_11_() { #{{{
|
|
[ -d "$HOME/.local/share/Trash/files" ] && {
|
|
du -hc $HOME/.local/share/Trash/files | awk '/total$/{print "'"${1:-} "'"$1}'
|
|
} || {
|
|
echo "${1:-} ---"
|
|
}
|
|
} #}}}
|
|
|
|
#-------------------#
|
|
# SHOW WINDOW USAGE #
|
|
#-------------------#
|
|
_BLOCK_12_() { #{{{
|
|
focus=$(xprop -id `xprop -root | awk '/^_NET_ACTIVE_WINDOW/{print $5}'` | awk -F '"' '/^WM_NAME/{print $2}')
|
|
if [ -z "$focus" ];then
|
|
echo "${1:-} Welcome"
|
|
else
|
|
[ "${#focus}" -gt "${2:-30}" ] && echo "${1:-} ${focus::${2:-30}} ..." || echo "${1:-} $focus"
|
|
fi
|
|
} #}}}
|
|
|
|
#-----------------------------------------#
|
|
# SHOW MOCP PLAYING SONG AND STATUS (MOC) #
|
|
#-----------------------------------------#
|
|
_BLOCK_13_() { # {{{
|
|
Title=$(mocp -Q %title)
|
|
F_Title=$(basename `mocp -Q %file | tr " " "_"`)
|
|
Status=$(mocp -Q %state)
|
|
|
|
if [ "$Status" != "PLAY" ];then
|
|
echo "${1:-} Pause"
|
|
elif [ -z "$Title" ];then
|
|
echo "${1:-} ${F_Title::30}"
|
|
else
|
|
echo "${1:-} $Title"
|
|
fi
|
|
} #}}}
|
|
|
|
#------------------------------------------------------#
|
|
# SHOW MPD PLAYING SONG AND STATUS (MPD; NCMPCCP, MPC) #
|
|
#------------------------------------------------------#
|
|
_BLOCK_14_() { #{{{
|
|
local NCMP=$(mpc | awk '/^\[playing\]/{print $1}')
|
|
|
|
if [ "$NCMP" = "[playing]" ];then
|
|
echo "${1:-} $(basename $(mpc current)) "
|
|
else
|
|
echo "${1:-} Pause "
|
|
fi
|
|
} #}}}
|
|
|
|
#-------------------------#
|
|
# SHOW CPU TEMP (XSENSER) #
|
|
#-------------------------#
|
|
_BLOCK_15_() { #{{{
|
|
sensors | awk '/^CPU/{gsub("\+",""); print "'"${1:-} "'"$2}'
|
|
} #}}}
|
|
|
|
#-------------------------#
|
|
# SHOW GPU TEMP (XSENSER) #
|
|
#-------------------------#
|
|
_BLOCK_16_() { #{{{
|
|
sensors | awk '/^GPU/{gsub("\+",""); print "'"${1:-} "'"$2}' | tail -1
|
|
} #}}}
|
|
|
|
#----------------------------------#
|
|
# SHOW TOUCHPAD STATUS (SYSCLIENT) #
|
|
#----------------------------------#
|
|
_BLOCK_17_() { #{{{
|
|
[ "$(synclient -l | awk '/Touchpad/{print $3}')" = "0" ] && echo "${1:-} Enable" || echo "${1:-} Disable"
|
|
} #}}}
|
|
|
|
#---------------------------#
|
|
# SHOW VOLUME STATUS (ALSA) #
|
|
#---------------------------#
|
|
_BLOCK_18_() { #{{{
|
|
local Vol=$(amixer get Master | awk '/Mono:/{gsub("\[|\%|\]",""); print $4}')
|
|
local Mute=$(amixer get Master | awk '/Mono:/{gsub("\[|\]",""); print $6}')
|
|
|
|
if [ "$Mute" = "off" ];then
|
|
echo -e " --"
|
|
else
|
|
if [ "$Vol" -gt "60" ];then
|
|
echo -e " $Vol%"
|
|
elif [ "$Vol" -gt "30" ];then
|
|
echo -e " $Vol%"
|
|
elif [ "$Vol" -lt "30" ];then
|
|
echo -e " $Vol%"
|
|
fi
|
|
fi
|
|
} #}}}
|
|
|
|
#----------------------------------------------#
|
|
# SHOW WIFI INFO ; IP ; CONNECTED NAME (NMCLI) #
|
|
#----------------------------------------------#
|
|
_BLOCK_19_() { #{{{
|
|
while read -a W ;do
|
|
[ "${W[2]}" = "connected" ] && {
|
|
_ip=$(nmcli device show ${W[0]} | awk '/^IP4.ADDRESS/{print $NF}')
|
|
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
|
|
echo -n "${1:-} ${_ip%/*} (${_name} )"
|
|
} || {
|
|
echo -n "${1:-} ---"
|
|
}
|
|
done< <(nmcli d | grep -w "wifi")
|
|
echo -e ""
|
|
} #}}}
|
|
|
|
#-------------------------------------------#
|
|
# SHOW ETHERNET INFO ; IP ; CONNECTED NAME #
|
|
#-------------------------------------------#
|
|
_BLOCK_20_() { #{{{
|
|
while read -a W ;do
|
|
[ "${W[2]}" = "connected" ] && {
|
|
_ip=$(nmcli device show ${W[0]} | awk '/^IP4.ADDRESS/{print $NF}')
|
|
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
|
|
echo -n "${1:-} ${_ip%/*} (${_name} ) "
|
|
} || {
|
|
echo -n "${1:-} ---"
|
|
}
|
|
done< <(nmcli d | grep "ethernet")
|
|
echo -e ""
|
|
} #}}}
|
|
|
|
|
|
#-----------------------------------------------#
|
|
# SHOW WIFI INFO ; IP6 ; CONNECTED NAME (NMCLI) #
|
|
#-----------------------------------------------#
|
|
_BLOCK_21_() { #{{{
|
|
while read -a W ;do
|
|
[ "${W[2]}" = "connected" ] && {
|
|
_ip=$(nmcli device show ${W[0]} | awk '/^IP6.ADDRESS/{print $NF}')
|
|
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
|
|
echo -n "${1:-} ${_ip%/*} (${_name} ) "
|
|
} || {
|
|
echo -n "${1:-} ---"
|
|
}
|
|
done< <(nmcli d | grep "wifi")
|
|
echo -e ""
|
|
} #}}}
|
|
|
|
#--------------------------------------------#
|
|
# SHOW ETHERNET INFO ; IP6 ; CONNECTED NAME #
|
|
#--------------------------------------------#
|
|
_BLOCK_22_() { #{{{
|
|
while read -a W ;do
|
|
[ "${W[2]}" = "connected" ] && {
|
|
_ip=$(nmcli device show ${W[0]} | awk '/^IP6.ADDRESS/{print $NF}')
|
|
_name=$(nmcli device show ${W[0]} | awk '/^GENERAL.CONNECTION:/{$1=""; print $0}')
|
|
echo -n "${1:-} ${_ip%/*} (${_name} ) "
|
|
} || {
|
|
echo -n "${1:-} ---"
|
|
}
|
|
done< <(nmcli d | grep "ethernet")
|
|
echo -e ""
|
|
} #}}}
|
|
|
|
#-------------------------------#
|
|
# SHOW PROSSES USE BY THIS USER #
|
|
#-------------------------------#
|
|
_BLOCK_23_() { #{{{
|
|
echo "${1:-} $(ps -U $USER | wc -l)"
|
|
} #}}}
|
|
|
|
#---------------------#
|
|
# SHOW SYSTEM KERENEL #
|
|
#---------------------#
|
|
_BLOCK_24_() { #{{{
|
|
echo "${1:-} $(uname -r)"
|
|
} #}}}
|
|
|
|
#-----------------------------#
|
|
# SHOW USB PLUG IN UR COMPUTE #
|
|
#-----------------------------#
|
|
_BLOCK_25_() { #{{{
|
|
echo "${1:-} $(lsblk -l -o 'TRAN' | grep -c "usb")"
|
|
} #}}}
|
|
|
|
#---------------------------------------#
|
|
# SHOW TOTAL PKGS INSTALL IN YOUR SYSTE #
|
|
#---------------------------------------#
|
|
_BLOCK_26_() { #{{{
|
|
echo "${1:-} $(dpkg -l | grep -c "^ii")"
|
|
} #}}}
|
|
|
|
#--------------------------------------------#
|
|
# CHECK IF THERE IS ANY UPDATE IN UR SYSTEM #
|
|
#--------------------------------------------#
|
|
_BLOCK_27_() { #{{{
|
|
local U_PKGS=$(apt-get -s -o APT::Get::Show-User-Simulation-Note=0 dist-upgrade | grep "^\s\s" | wc -w);
|
|
echo "${1:-} $U_PKGS"
|
|
} #}}}
|
|
|
|
#-----------------#
|
|
# SHOW UFW STATUS #
|
|
#-----------------#
|
|
_BLOCK_28_() { #{{{
|
|
[ "$(systemctl status ufw | awk '/Active:/{print $2}')" == "active" ] && echo "${1:-} On" || echo "${1:-} Off"
|
|
} #}}}
|
|
|
|
#-------------------------#
|
|
# SHOW NUMBER LOCK STATUS #
|
|
#-------------------------#
|
|
_BLOCK_29_() { #{{{
|
|
[ "$(xset -q | awk '/00:/{print $8}')" == "on" ] && echo "${1:-} On" || echo "${1:-} Off"
|
|
} #}}}
|
|
|
|
#-----------------------#
|
|
# SHOW BLUETOOTH STATUS #
|
|
#-----------------------#
|
|
_BLOCK_30_() { #{{{
|
|
[ "$(systemctl status bluetooth.target | awk '/Active:/{print $2}')" == "active" ] && echo "${1:-} On" || echo "${1:-} Off"
|
|
} #}}}
|
|
|
|
#------------------------#
|
|
# SHOW CAPS LOCK STATUS #
|
|
#------------------------#
|
|
_BLOCK_31_() { #{{{
|
|
[ "$(xset -q | awk '/00:/{print $4}')" == "on" ] && echo "${1:-} On" || echo "${1:-} Off"
|
|
} #}}}
|
|
|
|
#-----------------------------#
|
|
# DISPLAY X SCREENSAVER STATE #
|
|
#-----------------------------#
|
|
_BLOCK_32_() { #{{{
|
|
[ "$(xdg-screensaver status)" != "enabled" ] && echo "${1:-} Off" || echo "${1:-} On"
|
|
} #}}}
|
|
|
|
#--------------------------------#
|
|
# CALCULE MOUNT POINTS ON SYSTEM #
|
|
#--------------------------------#
|
|
_BLOCK_33_() { #{{{
|
|
echo "${1:-} $(cat /proc/mounts | grep -c "^/dev/sd*") "
|
|
} #}}}
|
|
|
|
#-------------------------#
|
|
# SHOW CMUS PLAYING SONG #
|
|
#-------------------------#
|
|
_BLOCK_34_() { #{{{
|
|
local CMUS_P=$(cmus-remote -Q | awk '/^status/{print $2}')
|
|
local CMUS_F=$(cmus-remote -Q | awk '/^file/{$1=""; print $2}')
|
|
|
|
if [ "$CMUS_P" = "Playing" ];then
|
|
echo "${1:-} $(basename $CMUS_F)"
|
|
else
|
|
echo "${1:-} Pause"
|
|
fi
|
|
} #}}}
|
|
|
|
#----------------------#
|
|
# SHOW APPARMOR STATUS #
|
|
#----------------------#
|
|
_BLOCK_35_() { #{{{
|
|
[ "$(aa-enabled)" = "Yes" ] && {
|
|
echo "${1:-} On"
|
|
}||{
|
|
echo "${1:-} Off"
|
|
}
|
|
} #}}}
|
|
|
|
#-----------------------------#
|
|
# SHOW TOTAL PACKAGES IN ARCH #
|
|
#-----------------------------#{{{
|
|
_BLOCK_36_(){
|
|
echo "${1:-} $(pacman -Q | grep -c "*")"
|
|
}
|
|
#}}}
|
|
|
|
#--------------------#
|
|
# SHOW I3 WORKSPACES #
|
|
#--------------------#
|
|
_BLOCK_37_() { #{{{
|
|
i3-msg -t get_workspaces | awk -F , '{
|
|
for(i=1;i<=NF;i++){
|
|
if($i~"name"){
|
|
gsub("\"name\":|\"","",$i)
|
|
WK=$i
|
|
}
|
|
if($i~"focused"){
|
|
gsub("\"focused\":","",$i)
|
|
WKF=$i
|
|
}
|
|
if($i~"urgent"){
|
|
gsub("\"urgent\":|\]|\}","",$i)
|
|
if($i=="false" && WKF=="true"){
|
|
printf "%s ", WK
|
|
}
|
|
if($i=="false" && WKF=="false"){
|
|
printf"[%s] ", WK
|
|
}
|
|
if($i=="true" && WKF=="false"){
|
|
printf "[*%s] ", WK
|
|
}
|
|
if($i=="true" && WKF=="true"){
|
|
printf "*%s ", WK
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
} #}}}
|
|
|
|
#-----------------#
|
|
# SHOW USER NAME #
|
|
#-----------------#
|
|
_BLOCK_38_(){ #{{{
|
|
echo -e "${1:-} $USER"
|
|
} #}}}
|
|
|
|
#-------------------#
|
|
# SHOW VOLUME PULSE #
|
|
#-------------------#
|
|
_BLOCK_39_(){
|
|
local Vol=$(pactl list sinks | awk '/Volume: front/{print $5-"%"}')
|
|
local Mute=$(amixer get Master | awk '/Mono:/{gsub("\[|\]",""); print $6}')
|
|
|
|
if [ "$Mute" = "off" ];then
|
|
echo -e " --"
|
|
else
|
|
if [ "$Vol" -gt "60" ];then
|
|
echo -e " $Vol%"
|
|
elif [ "$Vol" -gt "30" ];then
|
|
echo -e " $Vol%"
|
|
elif [ "$Vol" -lt "30" ];then
|
|
echo -e " $Vol%"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#------------------------#
|
|
# USAGE AND HELP DIALOG #
|
|
#------------------------#
|
|
_USAGE_(){ #{{{
|
|
echo -e "
|
|
i3b-gate : is a all in one collaction of small script
|
|
show you useful unformation about your system
|
|
|
|
There is 39 deffirent script to use
|
|
for more information you can see the 'README' file
|
|
or visite 'https://gitlab.com/zakariagatter/i3blocks-gate'
|
|
|
|
SYNTAX :
|
|
i3b-gate [NUMBER] ...
|
|
"
|
|
} #}}}
|
|
|
|
#----------------#
|
|
# MAIN ARGUMENT #
|
|
#----------------#
|
|
if [ "$1" -gt "39" ] || [ -z "$1" ] ;then
|
|
_USAGE_
|
|
elif [ "$1" = "-h" ]; then
|
|
_USAGE_
|
|
else
|
|
eval $(echo "_BLOCK_$1_ $2 $3")
|
|
fi
|