Membuat Module Sederhana untuk Status Bar GNU/Linux dan FreeBSD
Pendahuluan
Bagi teman-teman yang menggunakan Window Manager pasti sudah sangat familiar dengan status bar. Ada bermacam-macam nama status bar yang dapat digunakan. Salah satu yang saya gunakan terakhir kali adalah Polybar. Saya sudah pernah membahas tentang Polybar di sini: Polybar, Bar yang Mudah Dikonfig, Praktis, dan Mudah Dikustomisasi
Catatan kali ini, saya ingin membahas tentang status bar yang kita racik sendiri, dan tidak tergantung dengan status-status bar yang sudah ada.
Permasalahan
Saya tidak menggunakan alasan bahwa status-status bar tersebut bloated, karena tidak semua module kita gunakan. Namun, saya ingin lebih tidak tergantung terhadap status-status bar tersebut yang bisa jadi hanya spesifik untuk sistem operasi tertentu saja. Misal untuk Polybar, sebagian besar module-module yang disediakan, tidak dapat berjalan dengan baik pada FreeBSD.
Kalau hal tersebut terjadi, maka saya yang repot. Karena harus meluangkan waktu lagi untuk melakukan riset dan membuat ulang module-module tersebut agar dapat digunakan dengan Polybar.
Selain itu, apabila saya menggunakan dwm, saya lebih baik meracik status bar saya sendiri.
Pemecahan Masalah
Saya sudah membuatkan beberapa module yang dapat digunakan untuk membangun status bar sendiri atau digunakan oleh Polybar
PERHATIAN!
Saya tidak banyak pengalaman dalam menulis Bash Script. Apabila ada logika yang kurang baik, boleh sekali loh dikasih saran dan dibenerin. Saya sangat terbuka dan senang sekali. Terima kasih (^_^).
Module
CPU Temperature
1#!/bin/sh23get_temp_cpu0=$(cat /sys/class/thermal/thermal_zone0/temp)4temp_cpu0=$(($get_temp_cpu0/1000))5echo "" $temp_cpu0"°C"
Memory
1#!/bin/sh23mem_total=$(free -m | awk 'NR%2==0 {print $2}')4mem_avail=$(free -m | awk 'NR%2==0 {print $7}')5mem_used=$(( $mem_total - $mem_avail))6mem_usage=$(( $mem_used * 100 / $mem_total ))7echo " "$mem_usage"%"
File System
1#!/bin/sh23cap_percentage=$(df -h --output=pcent / | awk 'NR%2==0 {print $0}')4echo ""$cap_percentage
Volume
1#!/bin/sh23ou_mute=$(pamixer --get-mute)4in_mute=$(pamixer --source 1 --get-mute)5ou_vol=$(pamixer --get-volume)6in_vol=$(pamixer --source 1 --get-volume)7jack_stat=$($HOME/.local/bin/has_headphone)89if [ $jack_stat = "yes" ]; then10 icon_ou_on=""11 icon_ou_off=""12elif [ $jack_stat = "no" ]; then13 icon_ou_on=""14 icon_ou_off=""15fi16icon_in_on=""17icon_in_off=""1819if [ $ou_mute = "true" ] && [ $in_mute = "true" ]; then20 echo $icon_ou_off "Ø" $icon_in_off "Ø"21elif [ $ou_mute = "true" ] && [ $in_mute = "false" ]; then22 echo $icon_ou_off "Ø" $icon_in_on $in_vol"%"23elif [ $ou_mute = "false" ] && [ $in_mute = "true" ]; then24 echo $icon_ou_on $ou_vol"%" $icon_in_off "Ø"25elif [ $ou_mute = "false" ] && [ $in_mute = "false" ]; then26 echo $icon_ou_on $ou_vol"% $icon_in_on $in_vol"%"27else28 echo " ERROR"29fi30
1#!/bin/sh23# PulseAudio4pacmd list-sinks | grep 'Headphones' | awk '{print $10}' | tr -d ')'
Backlight
1#!/bin/sh23backlight=$(xbacklight -get | cut -d "." -f1)4echo "" $backlight"%"
Network Traffic (Wifi)
1#!/bin/bash23wlan_card='wlan0'45wlanmon_card=$(ip a s | grep $wlan_card'mon' | awk 'NR%1==0 {print $2}' | sed 's/://g')6if [ $wlanmon_card ]; then7 printf " MONITOR"8fi910wlan_online=$(iw $wlan_card link | grep 'Connected' | awk 'NR%1==0 {print $1}')11wlan_offline=$(iw $wlan_card link | grep 'Not' | awk 'NR%1==0 {print $1}')12internet=$(wget -qO- ifconfig.co)13internet_logo=""14if [ $internet ]; then15 internet_logo=" "16else17 internet_logo=" "18fi1920if [ $wlan_online ]; then21 wlan_do=$(ifstat2 -i $wlan_card 1 1 | awk 'NR%3==0 {print $1}')22 wlan_up=$(ifstat2 -i $wlan_card 1 1 | awk 'NR%3==0 {print $2}')23 printf "$internet_logo %5s %5s\\n" \24 $(numfmt --to=none $wlan_do) \25 $(numfmt --to=none $wlan_up)26elif [ $wlan_offline ];then27 printf " OFFLINE"28else29 printf " NOADPTR"30fi
Battery Capacity
1#!/bin/sh23cap=$(cat /sys/devices/platform/smapi/BAT0/remaining_percent)4if [ $cap -ge 0 ] && [ $cap -le 10 ]; then5 echo "" $cap"%"6elif [ $cap -ge 11 ] && [ $cap -le 20 ]; then7 echo "" $cap"%"8elif [ $cap -ge 21 ] && [ $cap -le 30 ]; then9 echo "" $cap"%"10elif [ $cap -ge 31 ] && [ $cap -le 40 ]; then11 echo "" $cap"%"12elif [ $cap -ge 41 ] && [ $cap -le 50 ]; then13 echo "" $cap"%"14elif [ $cap -ge 51 ] && [ $cap -le 60 ]; then15 echo "" $cap"%"16elif [ $cap -ge 61 ] && [ $cap -le 70 ]; then17 echo "" $cap"%"18elif [ $cap -ge 71 ] && [ $cap -le 80 ]; then19 echo "" $cap"%"20elif [ $cap -ge 81 ] && [ $cap -le 90 ]; then21 echo "" $cap"%"22elif [ $cap -ge 91 ] && [ $cap -le 100 ]; then23 echo "" $cap"%"24else25 echo " UNKNWN"26fi
Battery Status
1#!/bin/sh23state=$(cat /sys/devices/platform/smapi/BAT0/state)4if [ $state = "charging" ]; then5 echo " " # charging6elif [ $state = "discharging" ]; then7 echo " " # discharging8elif [ $state = "idle" ]; then9 echo " " # idle10else11 echo " " # unknown12fi
Selesai!
Ya, seperti ini saja yang dapat saya catat.
Mudah-mudahan dapat bermanfaat untuk teman-teman yang memerlukan.
Terima kasih.
(^_^)