#!/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