Browse Source

Initial commit

main
joestandring 5 years ago
parent
commit
4e69403057
11 changed files with 187 additions and 0 deletions
  1. +6
    -0
      README.md
  2. +6
    -0
      TODO
  3. +30
    -0
      dwm_bar.sh
  4. +21
    -0
      functions/dwm_alsa.sh
  5. +36
    -0
      functions/dwm_cmus.sh
  6. +14
    -0
      functions/dwm_countdown.sh
  7. +11
    -0
      functions/dwm_date.sh
  8. +12
    -0
      functions/dwm_keyboard.sh
  9. +17
    -0
      functions/dwm_mail.sh
  10. +20
    -0
      functions/dwm_resources.sh
  11. +14
    -0
      functions/dwm_weather.sh

+ 6
- 0
README.md View File

@ -1,2 +1,8 @@
# dwm-bar # dwm-bar
A modular statusbar for DWM thrown together in sh A modular statusbar for DWM thrown together in sh
## Acknowledgements
Code for some functions was modified from:
* [Klemens Nanni](https://notabug.org/kl3)
* [@boylemic](https://github.com/boylemic/configs/blob/master/dwm_status)
* [Parket Johnson](https://github.com/ronno/scripts/blob/master/xsetcmus)
* [suckless.org](https://dwm.suckless.org/status_monitor/)

+ 6
- 0
TODO View File

@ -0,0 +1,6 @@
Show SSID in dwm_network
dwm_bat function
Network speeds
dwm_pulse function
dwm_notifs function
Swappable unicode and plaintext module identifiers

+ 30
- 0
dwm_bar.sh View File

@ -0,0 +1,30 @@
#!/bin/sh
# A modular status bar for dwm
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Dependencies: xorg-xsetroot
# Import functions with "$include /route/to/module"
# It is reccomended that you place functions in the subdirectory ./functions and use: . "$DIR/modules/dwm_example.sh"
# Store the directory the script is running from
LOC=$(readlink -f "$0")
DIR=$(dirname "$LOC")
# Import the modules
. "$DIR/functions/dwm_countdown.sh"
. "$DIR/functions/dwm_cmus.sh"
. "$DIR/functions/dwm_resources.sh"
. "$DIR/functions/dwm_mail.sh"
. "$DIR/functions/dwm_alsa.sh"
. "$DIR/functions/dwm_weather.sh"
. "$DIR/functions/dwm_date.sh"
# Update dwm's status bar every second
while true
do
xsetroot -name "$(dwm_countdown)$(dwm_cmus)$(dwm_resources)$(dwm_mail)$(dwm_alsa)$(dwm_weather)$(dwm_date)"
sleep 1
done

+ 21
- 0
functions/dwm_alsa.sh View File

@ -0,0 +1,21 @@
#!/bin/sh
# A dwm_bar function to show the master volume of ALSA
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Dependencies: alsa-utils
dwm_alsa () {
VOL=$(amixer get Master | tail -n1 | sed -r "s/.*\[(.*)%\].*/\1/")
if [ $VOL -eq 0 ]; then
printf "[\U1F507 $VOL]\n"
elif [ $VOL -gt 0 ] && [ $VOL -le 33 ]; then
printf "[\U1F508 $VOL]\n"
elif [ $VOL -gt 33 ] && [ $VOL -le 66 ]; then
printf "[\U1F509 $VOL]\n"
else
printf "[\U1F50A $VOL]\n"
fi
}
dwm_alsa

+ 36
- 0
functions/dwm_cmus.sh View File

@ -0,0 +1,36 @@
#!/bin/sh
# A dwm_bar function that shows the current artist, track, position, duration, and status from cmus
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Dependencies: cmus
dwm_cmus () {
if ps -C cmus > /dev/null; then
ARTIST=$(cmus-remote -Q | grep -a '^tag artist' | awk '{gsub("tag artist ", "");print}')
TRACK=$(cmus-remote -Q | grep -a '^tag title' | awk '{gsub("tag title ", "");print}')
POSITION=$(cmus-remote -Q | grep -a '^position' | awk '{gsub("position ", "");print}')
DURATION=$(cmus-remote -Q | grep -a '^duration' | awk '{gsub("duration ", "");print}')
STATUS=$(cmus-remote -Q | grep -a '^status' | awk '{gsub("status ", "");print}')
SHUFFLE=$(cmus-remote -Q | grep -a '^set shuffle' | awk '{gsub("set shuffle ", "");print}')
if [ $STATUS == "playing" ]; then
STATUS="\U25B6"
else
STATUS="\U23F8"
fi
if [ $SHUFFLE == "true" ]; then
SHUFFLE=" \U1F500"
else
SHUFFLE=""
fi
printf "[$STATUS $ARTIST - $TRACK "
printf "%0d:%02d/" $(($POSITION%3600/60)) $(($POSITION%60))
printf "%0d:%02d" $(($DURATION%3600/60)) $(($DURATION%60))
printf "$SHUFFLE]\n"
fi
}
dwm_cmus

+ 14
- 0
functions/dwm_countdown.sh View File

@ -0,0 +1,14 @@
#!/bin/sh
# A dwm_status function that displays the status of countdown.sh
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Dependencies: https://github.com/joestandring/countdown
dwm_countdown () {
if [ -e /tmp/countdown.* ]; then
printf "[\U23F3 $(tail -1 /tmp/countdown.*)]"
fi
}
dwm_countdown

+ 11
- 0
functions/dwm_date.sh View File

@ -0,0 +1,11 @@
#!/bin/sh
# A dwm_bar function that shows the current date and time
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Date is formatted like like this: "[Mon 01-01-00 00:00:00]"
dwm_date () {
printf "[\U23F2 $(date "+%a %d-%m-%y %T")]\n"
}
dwm_date

+ 12
- 0
functions/dwm_keyboard.sh View File

@ -0,0 +1,12 @@
#!/bin/sh
# A dwm_bar function that displays the current keyboard layout
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Dependencies: xorg-setxkbmap
dwm_keyboard () {
printf "[\U2328 $(setxkbmap -query | awk '/layout/{print $2}')]\n"
}
dwm_keyboard

+ 17
- 0
functions/dwm_mail.sh View File

@ -0,0 +1,17 @@
#!/bin/sh
# A dwm_bar function to display the number of emails in an inbox
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# To count mail in an inbox, change "/path/to/inbox" below to the location of your inbox. For example, "/home/$USER/.mail/new"
dwm_mail () {
MAILBOX=$(ls /path/to/inbox | wc -l)
if [ $MAILBOX -eq 0 ]; then
printf "[\U1F4ED $MAILBOX]\n"
else
printf "[\U1F4EB $MAILBOX]\n"
fi
}
dwm_mail

+ 20
- 0
functions/dwm_resources.sh View File

@ -0,0 +1,20 @@
#!/bin/sh
# A dwm_bar function to display information regarding system memory, CPU temperature, and storage
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
dwm_resources () {
# Used and total memory
MEMUSED=$(free -h | awk '(NR == 2) {print $3}')
MEMTOT=$(free -h |awk '(NR == 2) {print $2}')
# CPU temperature
CPU=$(sysctl -n hw.sensors.cpu0.temp0 | cut -d. -f1)
# Used and total storage in /home (rounded to 1024B)
STOUSED=$(df -h | grep '/home' | awk '{print $2}')
STOTOT=$(df -h | grep '/home' | awk '{print $3}')
STOPER=$(df -h | grep '/home' | awk '{print $5}')
printf "[\U1F5A5 MEM $MEMUSED/$MEMTOT CPU $CPU STO $STOUSED/$STOTOT: $STOPER%]\n"
}
dwm_resources

+ 14
- 0
functions/dwm_weather.sh View File

@ -0,0 +1,14 @@
#!/bin/sh
# A dwm_bar function to print the weather from wttr.in
# Joe Standring <jstandring@pm.me>
# GNU GPLv3
# Dependencies: curl
# Change the value of LOCATION to match your city
dwm_weather() {
LOCATION=city
printf "[$(curl -s wttr.in/$LOCATION?format=1)]\n"
}
dwm_weather

Loading…
Cancel
Save