diff --git a/modules/module_bat b/modules/module_bat new file mode 100755 index 0000000..dfe7143 --- /dev/null +++ b/modules/module_bat @@ -0,0 +1,73 @@ +#!/bin/sh +# battery module for status/stellar + +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" + +# argument 1 +ARG1="$1" + +# clicking +CLICK() { + # values + ICON="$ITEM11_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + BATTERY_FULL="$(acpi)" + + command -v acpi > /dev/null || exit + + case "$TERMINAL" in + "") TERMINAL=st + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing + fi + + # send the notification + SEND_NOTIF() { + FULL_BATTERY="${ICON}${ICONSPACING}$BATTERY_FULL" + notify-send "$FULL_BATTERY" + + echo "Notification sent successfully!" + echo "INFO: $FULL_BATTERY" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 +} + +# information itself +PRINT() { + if [ "$ENABLE_ITEM11" = "true" ]; then + # print capacity + if [ -e "/sys/class/power_supply/BAT0/capacity" ]; then + echo "$SEPARATOR $ITEM11_ICON $(cat /sys/class/power_supply/BAT0/capacity)%" + fi + + # print capacity for second battery if it exists + if [ -e "/sys/class/power_supply/BAT1/capacity" ]; then + echo "$SEPARATOR $ITEM11_ICON $(cat /sys/class/power_supply/BAT1/capacity)%" + fi + + # show charging status + if [ -e "${BINDIR}acpi" ]; then + if [ "$ITEM11_SHOW_CHARGING_STATUS" = "true" ]; then + CHARGESTATUS=$(echo ", $(acpi | awk '{ print $3 }' | sed "s|,||g" | sed "s|Discharging|$ITEM11_DISCHARGING_TEXT|g; s|Charging|$ITEM11_CHARGING_TEXT|g; s|Fully charged|$ITEM11_FULL_TEXT|g")") && echo $CHARGESTATUS + fi + fi + fi +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_bat ;; +"--click") CLICK ;; +esac diff --git a/modules/module_date b/modules/module_date index e7bb3ef..29247ce 100755 --- a/modules/module_date +++ b/modules/module_date @@ -1,49 +1,70 @@ #!/bin/sh # date module for status/stellar -# values -DATE_DAY="$(date +%d)" # day number -DATE_DAY_OF_YEAR="$(date +%j)" # year day number -DATE_DAY_W_SHORT="$(date +%a)" # short day (ie. mon) -DATE_DAY_W_LONG="$(date +%A)" # long day (ie. monday) -DATE_MONTH="$(date +%m)" # month number -DATE_MONTH_W_SHORT="$(date +%b)" # short month (ie. oct) -DATE_MONTH_W_LONG="$(date +%B)" # long month (ie. october) -DATE_YEAR="$(date +%Y)" # year number -DATE_WEEK="$(date +%W)" # week number -DATE_WEEKDAY="$(date +%w)" # day of the week in number -ICON="$1" # icon is first argument -BUTTON="$(cat /tmp/speedwm-button)" # button +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM3_ICON" +ARG1="$1" + +# click +CLICK() { + # values + DATE_DAY="$(date +%d)" # day number + DATE_DAY_OF_YEAR="$(date +%j)" # year day number + DATE_DAY_W_SHORT="$(date +%a)" # short day (ie. mon) + DATE_DAY_W_LONG="$(date +%A)" # long day (ie. monday) + DATE_MONTH="$(date +%m)" # month number + DATE_MONTH_W_SHORT="$(date +%b)" # short month (ie. oct) + DATE_MONTH_W_LONG="$(date +%B)" # long month (ie. october) + DATE_YEAR="$(date +%Y)" # year number + DATE_WEEK="$(date +%W)" # week number + DATE_WEEKDAY="$(date +%w)" # day of the week in number + ICON="$ITEM3_ICON" # icon is first argument + BUTTON="$(cat /tmp/speedwm-button)" # button + + case "$TERMINAL" in + "") TERMINAL=st + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing fi -fi - -case "$TERMINAL" in -"") TERMINAL=st -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_DATE="$(printf "${ICON}${ICONSPACING}$DATE_DAY_W_LONG, $DATE_MONTH_W_LONG, $DATE_DAY $DATE_YEAR\nWeek: $DATE_WEEK\nDay of the week: $DATE_WEEKDAY")" - notify-send "$FULL_DATE" - - echo "Notification sent successfully!" - echo "INFO: $FULL_DATE" - - exit 0 + + # send the notification + SEND_NOTIF() { + FULL_DATE="$(printf "${ICON}${ICONSPACING}$DATE_DAY_W_LONG, $DATE_MONTH_W_LONG, $DATE_DAY $DATE_YEAR\nWeek: $DATE_WEEK\nDay of the week: $DATE_WEEKDAY")" + notify-send "$FULL_DATE" + + echo "Notification sent successfully!" + echo "INFO: $FULL_DATE" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM3" = "true" ]; then + if [ -e "${DATEBINDIR}date" ]; then + DAY="$(date +%d)" + MONTH="$(date +%m)" + YEAR="$(date +%Y)" -exit 1 + echo "$SEPARATOR $ITEM3_ICON $ITEM3_FORMAT" | sed "s|@d|$DAY|; s|@m|$MONTH|; s|@y|$YEAR|" + fi + fi +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_date ;; +"--click") CLICK ;; +esac diff --git a/modules/module_dfmpeg b/modules/module_dfmpeg index d86cfb6..98fa9a7 100755 --- a/modules/module_dfmpeg +++ b/modules/module_dfmpeg @@ -1,66 +1,84 @@ #!/bin/sh # dfmpeg module for status/stellar -# values -DFMPEG_CMD="speedwm-dfmpeg -s" -DFMPEG_REC_PATH="$(cat /tmp/outputfilename)" -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM7_ICON" - fi -fi +ARG1="$1" -pgrep -x ffmpeg || exit 1 - -case "$TERMINAL" in -"") TERMINAL=st -esac - -case "$BUTTON" in -"3") speedwm-dfmpeg ; exit ;; -"2") $DFMPEG_CMD ; exit ;; -esac - -# check if recording audio -if [ -e "/tmp/isaudio" ]; then - DFMPEG_AUDIO="Recording audio" -else - DFMPEG_AUDIO="Not recording audio" -fi - -# check if encoding -if [ -e "/tmp/isencoding" ]; then - if [ -e "/tmp/encoding-codec" ]; then - DFMPEG_ENCODING="Encoding with $(cat /tmp/encoding-codec)" +# click +CLICK() { + # values + DFMPEG_CMD="speedwm-dfmpeg -s" + DFMPEG_REC_PATH="$(cat /tmp/outputfilename)" + ICON="$ITEM7_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + + pgrep -x ffmpeg || exit 1 + + case "$TERMINAL" in + "") TERMINAL=st + esac + + case "$BUTTON" in + "3") speedwm-dfmpeg ; exit ;; + "2") $DFMPEG_CMD ; exit ;; + esac + + # check if recording audio + if [ -e "/tmp/isaudio" ]; then + DFMPEG_AUDIO="Recording audio" else - DFMPEG_ENCODING="Encoding" + DFMPEG_AUDIO="Not recording audio" fi -else - DFMPEG_ENCODING="Not encoding" -fi - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_RECSTATUS="$(printf "${ICON}${ICONSPACING}Recording video $DFMPEG_REC_PATH\n${DFMPEG_AUDIO}, ${DFMPEG_ENCODING}\nMiddle click to stop recording.")" - notify-send "$FULL_RECSTATUS" - - echo "Notification sent successfully!" - echo "INFO: $FULL_RECSTATUS" - - exit 0 + + # check if encoding + if [ -e "/tmp/isencoding" ]; then + if [ -e "/tmp/encoding-codec" ]; then + DFMPEG_ENCODING="Encoding with $(cat /tmp/encoding-codec)" + else + DFMPEG_ENCODING="Encoding" + fi + else + DFMPEG_ENCODING="Not encoding" + fi + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing + fi + + # send the notification + SEND_NOTIF() { + FULL_RECSTATUS="$(printf "${ICON}${ICONSPACING}Recording video $DFMPEG_REC_PATH\n${DFMPEG_AUDIO}, ${DFMPEG_ENCODING}\nMiddle click to stop recording.")" + notify-send "$FULL_RECSTATUS" + + echo "Notification sent successfully!" + echo "INFO: $FULL_RECSTATUS" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + # Check if we're recording with dfmpeg or not + if [ "$ENABLE_ITEM7" = "true" ]; then + if [ -e "/tmp/dfmpeg-recording" ]; then + echo "$SEPARATOR $ITEM7_ICON $ITEM7_RECORDING_TEXT" + fi + fi +} -exit 1 +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_dfmpeg ;; +"--click") CLICK ;; +esac diff --git a/modules/module_music b/modules/module_music index 4054584..f1444d4 100755 --- a/modules/module_music +++ b/modules/module_music @@ -1,18 +1,17 @@ #!/bin/sh # music module for status/stellar -# values -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - - if [ "$1" = "" ]; then - ICON="$ITEM9_ICON" - fi +ARG1="$1" +CLICK() { + # values + ICON="$ITEM9_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + if [ "$ITEM9_BACKEND" = "auto" ]; then command -v mocp > /dev/null && ITEM9_BACKEND=mocp command -v cmus > /dev/null && ITEM9_BACKEND=cmus @@ -23,74 +22,211 @@ if [ -e "$HOME/.config/speedwm-de/status/config" ]; then command -v mocp > /dev/null || ITEM9_BACKEND=cmus fi fi -fi - -# for cmus -CMUS() { - MUSIC_FILENAME="$(basename "$(cmus-remote -C status | grep file)")" - MUSIC_FILENAME_CUT="$(basename "$(cmus-remote -C status | grep file)"| sed 's|\(.*\)[.].*|\1|')" - MUSIC_FILEDIR="$(dirname "$(cmus-remote -C status | grep file | sed 's/file //g')")" - MUSIC_ARTIST="$(cmus-remote -C status | grep "tag artist" | sed "s/tag artist //g")" - MUSIC_SONG="$(cmus-remote -C status | grep "tag title" | sed "s/tag title //g")" - MUSIC_ALBUM="$(cmus-remote -C status | grep "tag album" | head -n 1 | sed "s/tag album //g")" - MUSIC_GENRE="$(cmus-remote -C status | grep "tag genre" | sed "s/tag genre //g")" - MUSIC_TIMEELAPSED="$(cmus-remote -Q | grep position | sed "s/position //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" - MUSIC_TIMETOTAL="$(cmus-remote -Q | grep duration | sed "s/duration //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" - MUSIC_REPEAT="$(cmus-remote -C status | grep 'repeat ' | sed "s/true/Yes/; s/false/No/; s/set repeat //")" - MUSIC_SHUFFLE="$(cmus-remote -C status | grep 'shuffle' | sed "s/on/Yes/; s/off/No/; s/set shuffle //")" -} - -# for mocp -MOCP() { - MUSIC_FILENAME="$(basename "$(mocp -Q %file)")" - MUSIC_FILENAME_CUT="$(basename "$(mocp -Q %file)" | sed 's|\(.*\)[.].*|\1|')" - MUSIC_FILEDIR="$(dirname "$(mocp -Q %file)")" - MUSIC_ARTIST="$(mocp -Q %artist)" - MUSIC_SONG="$(mocp -Q %song)" - MUSIC_ALBUM="$(mocp -Q %album)" - MUSIC_TIMEELAPSED="$(mocp -Q %ct)" - MUSIC_TIMETOTAL="$(mocp -Q %tt)" - # todo: genre -} - -# set variables with content -case "$ITEM9_BACKEND" in -"cmus") CMUS ;; -"mocp") MOCP ;; -esac - -# terminal -case "$TERMINAL" in -"") TERMINAL=st -esac - -# button -case "$BUTTON" in -"3") $TERMINAL -e $ITEM9_BACKEND ; exit ;; -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - if [ "$ITEM9_BACKEND" = "cmus" ]; then - FULL_MUSIC="$(printf "${ICON}${ICONSPACING}Artist: $MUSIC_ARTIST\nTitle: $MUSIC_SONG\nAlbum: $MUSIC_ALBUM\nGenre: $MUSIC_GENRE\nTime elapsed: $MUSIC_TIMEELAPSED\nTotal time: $MUSIC_TIMETOTAL\nFile: $MUSIC_FILENAME\nDirectory: $MUSIC_FILEDIR\nPath: $MUSIC_FILEDIR/$MUSIC_FILENAME\nRepeat: $MUSIC_REPEAT\nShuffle: $MUSIC_SHUFFLE")" - else - FULL_MUSIC="$(printf "${ICON}${ICONSPACING}Artist: $MUSIC_ARTIST\nTitle: $MUSIC_SONG\nAlbum: $MUSIC_ALBUM\nTime elapsed: $MUSIC_TIMEELAPSED\nTotal time: $MUSIC_TIMETOTAL\nFile: $MUSIC_FILENAME\nDirectory: $MUSIC_FILEDIR\nPath: $MUSIC_FILEDIR/$MUSIC_FILENAME")" + + + # for cmus + CMUS() { + MUSIC_FILENAME="$(basename "$(cmus-remote -C status | grep file)")" + MUSIC_FILENAME_CUT="$(basename "$(cmus-remote -C status | grep file)"| sed 's|\(.*\)[.].*|\1|')" + MUSIC_FILEDIR="$(dirname "$(cmus-remote -C status | grep file | sed 's/file //g')")" + MUSIC_ARTIST="$(cmus-remote -C status | grep "tag artist" | sed "s/tag artist //g")" + MUSIC_SONG="$(cmus-remote -C status | grep "tag title" | sed "s/tag title //g")" + MUSIC_ALBUM="$(cmus-remote -C status | grep "tag album" | head -n 1 | sed "s/tag album //g")" + MUSIC_GENRE="$(cmus-remote -C status | grep "tag genre" | sed "s/tag genre //g")" + MUSIC_TIMEELAPSED="$(cmus-remote -Q | grep position | sed "s/position //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" + MUSIC_TIMETOTAL="$(cmus-remote -Q | grep duration | sed "s/duration //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" + MUSIC_REPEAT="$(cmus-remote -C status | grep 'repeat ' | sed "s/true/Yes/; s/false/No/; s/set repeat //")" + MUSIC_SHUFFLE="$(cmus-remote -C status | grep 'shuffle' | sed "s/on/Yes/; s/off/No/; s/set shuffle //")" + } + + # for mocp + MOCP() { + MUSIC_FILENAME="$(basename "$(mocp -Q %file)")" + MUSIC_FILENAME_CUT="$(basename "$(mocp -Q %file)" | sed 's|\(.*\)[.].*|\1|')" + MUSIC_FILEDIR="$(dirname "$(mocp -Q %file)")" + MUSIC_ARTIST="$(mocp -Q %artist)" + MUSIC_SONG="$(mocp -Q %song)" + MUSIC_ALBUM="$(mocp -Q %album)" + MUSIC_TIMEELAPSED="$(mocp -Q %ct)" + MUSIC_TIMETOTAL="$(mocp -Q %tt)" + # todo: genre + } + + # set variables with content + case "$ITEM9_BACKEND" in + "cmus") CMUS ;; + "mocp") MOCP ;; + esac + + # terminal + case "$TERMINAL" in + "") TERMINAL=st + esac + + # button + case "$BUTTON" in + "3") $TERMINAL -e $ITEM9_BACKEND ; exit ;; + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing fi - - notify-send "$FULL_MUSIC" - - echo "Notification sent successfully!" - echo "INFO: $FULL_MUSIC" - - exit 0 + + # send the notification + SEND_NOTIF() { + if [ "$ITEM9_BACKEND" = "cmus" ]; then + FULL_MUSIC="$(printf "${ICON}${ICONSPACING}Artist: $MUSIC_ARTIST\nTitle: $MUSIC_SONG\nAlbum: $MUSIC_ALBUM\nGenre: $MUSIC_GENRE\nTime elapsed: $MUSIC_TIMEELAPSED\nTotal time: $MUSIC_TIMETOTAL\nFile: $MUSIC_FILENAME\nDirectory: $MUSIC_FILEDIR\nPath: $MUSIC_FILEDIR/$MUSIC_FILENAME\nRepeat: $MUSIC_REPEAT\nShuffle: $MUSIC_SHUFFLE")" + else + FULL_MUSIC="$(printf "${ICON}${ICONSPACING}Artist: $MUSIC_ARTIST\nTitle: $MUSIC_SONG\nAlbum: $MUSIC_ALBUM\nTime elapsed: $MUSIC_TIMEELAPSED\nTotal time: $MUSIC_TIMETOTAL\nFile: $MUSIC_FILENAME\nDirectory: $MUSIC_FILEDIR\nPath: $MUSIC_FILEDIR/$MUSIC_FILENAME")" + fi + + notify-send "$FULL_MUSIC" + + echo "Notification sent successfully!" + echo "INFO: $FULL_MUSIC" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + # Auto set backend if set to auto + if [ "$ITEM9_BACKEND" = "auto" ]; then + if [ -e "${BINDIR}cmus" ]; then + ITEM9_BACKEND="cmus" + elif [ -e "${BINDIR}mocp" ]; then + ITEM9_BACKEND="mocp" + fi + fi -exit 1 + if [ "$ENABLE_ITEM9" = "true" ]; then + if [ "$ITEM9_BACKEND" = "mocp" ]; then + if [ -e "${BINDIR}mocp" ]; then + if [ "$(echo $(mocp -Q %file))" != "" ]; then + + # filename + if [ "$ITEM9_DISPLAY_FILE" = "true" ]; then + if [ "$(mocp -Q %file | head -n 1)" != "" ]; then + echo "$SEPARATOR $ITEM9_ICON $ITEM9_PRE_FILE$(basename "$(mocp -Q %file)" | sed 's|\(.*\)[.].*|\1|')$ITEM9_POST_FILE" + fi + else + + # artist + if [ "$ITEM9_DISPLAY_ARTIST" = "true" ]; then + if [ "$(mocp -Q %artist | head -n 1)" != "" ]; then + MUSIC_ARTIST="$(mocp -Q %artist)" + fi + fi + + # title + if [ "$ITEM9_DISPLAY_TITLE" = "true" ]; then + if [ "$(mocp -Q %song | head -n 1)" != "" ]; then + MUSIC_SONG="$(mocp -Q %song)" + fi + fi + + # album + if [ "$ITEM9_DISPLAY_ALBUM" = "true" ]; then + if [ "$(mocp -Q %album | head -n 1)" != "" ]; then + MUSIC_ALBUM="$(mocp -Q %album)" + fi + fi + + # time elapsed + if [ "$ITEM9_DISPLAY_TIMEELAPSED" = "true" ]; then + if [ "$(mocp -Q %tl | head -n 1)" != "" ]; then + MUSIC_TIMEELAPSED="$(mocp -Q %ct)" + fi + fi + + # total time + if [ "$ITEM9_DISPLAY_TIMETOTAL" = "true" ]; then + if [ "$(mocp -Q %tt | head -n 1)" != "" ]; then + MUSIC_TIMETOTAL="$(mocp -Q %tt)" + fi + fi + + data="$(printf "$ITEM9_FORMAT" | sed "s|@ab|$MUSIC_ALBUM|; s|@t|$MUSIC_SONG|; s|@g||; s|@a|$MUSIC_ARTIST|; s|@tt|$MUSIC_TIMETOTAL|; s|@te|$MUSIC_TIMEELAPSED|; s| ||g")" + + # actually print it + echo "$SEPARATOR $ITEM9_ICON $data" + fi + fi + fi + fi + fi + + if [ "$ENABLE_ITEM9" = "true" ]; then + if [ -e "${BINDIR}cmus-remote" ]; then + if [ "$(cmus-remote -C status | head -n 1 | awk '{ print $2 }')" = "playing" ]; then + if [ "$ITEM9_DISPLAY_FILE" = "true" ]; then + echo "$SEPARATOR $ITEM9_ICON $ITEM9_PRE_FILE$(basename "$(cmus-remote -C status | grep file)"| sed 's|\(.*\)[.].*|\1|')$ITEM9_POST_FILE" + else + + # artist + if [ "$ITEM9_DISPLAY_ARTIST" = "true" ]; then + if [ "$(cmus-remote -C status | grep "tag artist")" != "" ]; then + MUSIC_ARTIST="$(cmus-remote -C status | grep "tag artist" | sed "s/tag artist //g")" + fi + fi + + # title + if [ "$ITEM9_DISPLAY_TITLE" = "true" ]; then + if [ "$(cmus-remote -C status | grep "tag title")" != "" ]; then + MUSIC_SONG="$(cmus-remote -C status | grep "tag title" | sed "s/tag title //g")" + fi + fi + + # album + if [ "$ITEM9_DISPLAY_ALBUM" = "true" ]; then + if [ "$(cmus-remote -C status | grep "tag album")" != "" ]; then + MUSIC_ALBUM="$(cmus-remote -C status | grep "tag album" | head -n 1 | sed "s/tag album //g")" + fi + fi + + # genre + if [ "$ITEM9_DISPLAY_GENRE" = "true" ]; then + if [ "$(cmus-remote -C status | grep "tag genre")" != "" ]; then + MUSIC_GENRE="$(cmus-remote -C status | grep "tag genre" | sed "s/tag genre //g")" + fi + fi + + # time elapsed + if [ "$ITEM9_DISPLAY_TIMEELAPSED" = "true" ]; then + if [ "$(cmus-remote -Q | grep position | sed "s/position //g")" != "" ]; then + MUSIC_TIMEELAPSED="$(cmus-remote -Q | grep position | sed "s/position //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" + fi + fi + + # total time + if [ "$ITEM9_DISPLAY_TIMETOTAL" = "true" ]; then + if [ "$(cmus-remote -Q | grep duration | sed "s/duration //g")" != "" ]; then + MUSIC_TIMETOTAL="$(cmus-remote -Q | grep duration | sed "s/duration //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" + fi + fi + + data="$(printf "$ITEM9_FORMAT" | sed "s|@ab|$MUSIC_ALBUM|; s|@t|$MUSIC_SONG|; s|@g|$MUSIC_GENRE|; s|@a|$MUSIC_ARTIST|; s|@tt|$MUSIC_TIMETOTAL|; s|@te|$MUSIC_TIMEELAPSED|; s| ||g")" + + # actually print it + if [ "$data" != "" ]; then + echo "$SEPARATOR $ITEM9_ICON $data" + fi + fi + fi + fi + fi +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_music ;; +"--click") CLICK ;; +esac diff --git a/modules/module_net b/modules/module_net index 987670a..4ae5d0d 100755 --- a/modules/module_net +++ b/modules/module_net @@ -1,45 +1,63 @@ #!/bin/sh # network module for status/stellar -# values -NETWORK_TRANSMITTED="$(awk '{$1=$1/1024000; print $1"B";}' /sys/class/net/[ew]*/statistics/tx_bytes | sed "s/.*\(....\)/\1/; s|B|B/s |; s/[.]/0./")" -NETWORK_RECEIVED="$(awk '{$1=$1/1024000; print $1"B";}' /sys/class/net/[ew]*/statistics/rx_bytes | sed "s/.*\(....\)/\1/; s|B|B/s |; s/[.]/0./")" -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM6_ICON" +ARG1="$1" + + +# click +CLICK() { + # values + NETWORK_TRANSMITTED="$(awk '{$ARG1=$ARG1/1024000; print $ARG1"B";}' /sys/class/net/[ew]*/statistics/tx_bytes | sed "s/.*\(....\)/\1/; s|B|B/s |; s/[.]/0./")" + NETWORK_RECEIVED="$(awk '{$ARG1=$ARG1/1024000; print $ARG1"B";}' /sys/class/net/[ew]*/statistics/rx_bytes | sed "s/.*\(....\)/\1/; s|B|B/s |; s/[.]/0./")" + ICON="$ITEM6_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + + case "$TERMINAL" in + "") TERMINAL=st + esac + + case "$BUTTON" in + "3") $TERMINAL -e bmon ; exit ;; + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing fi -fi - -case "$TERMINAL" in -"") TERMINAL=st -esac - -case "$BUTTON" in -"3") $TERMINAL -e bmon ; exit ;; -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_NETWORK="${ICON}${ICONSPACING}${NETWORK_TRANSMITTED}transmitted, ${NETWORK_RECEIVED}received." - notify-send "$FULL_NETWORK" - - echo "Notification sent successfully!" - echo "INFO: $FULL_NETWORK" - - exit 0 + + # send the notification + SEND_NOTIF() { + FULL_NETWORK="${ICON}${ICONSPACING}${NETWORK_TRANSMITTED}transmitted, ${NETWORK_RECEIVED}received." + notify-send "$FULL_NETWORK" + + echo "Notification sent successfully!" + echo "INFO: $FULL_NETWORK" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM6" = "true" ]; then + if [ -e "${BINDIR}awk" ]; then + echo "$SEPARATOR $ITEM6_ICON $(awk '{$1=$1/1024000; print $1"B";}' /sys/class/net/[ew]*/statistics/tx_bytes | sed "s/.*\(....\)/\1/; s|B|B/s |; s/[.]/0./")" + fi + fi +} -exit 1 +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_net ;; +"--click") CLICK ;; +esac diff --git a/modules/module_news b/modules/module_news new file mode 100755 index 0000000..b37c328 --- /dev/null +++ b/modules/module_news @@ -0,0 +1,71 @@ +#!/bin/sh +# news module for status/stellar + +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" + +# argument 1 +ARG1="$1" + +# clicking +CLICK() { + # values + ICON="$ITEM10_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + NEWS_COUNT="$(newsboat -x print-unread | awk '{ print $1 }')" + + if [ "$NEWS_COUNT" = "Error:" ]; then + exit + fi + + command -v newsboat > /dev/null || exit + + case "$TERMINAL" in + "") TERMINAL=st + esac + + case "$BUTTON" in + "3") $TERMINAL newsboat ; exit ;; + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing + fi + + # send the notification + SEND_NOTIF() { + notify-send "${ICON}${ICONSPACING}$NEWS_COUNT $ITEM10_TEXT" + + echo "Notification sent successfully!" + echo "INFO: ${ICON}${ICONSPACING}$NEWS_COUNT $ITEM10_TEXT" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 +} + +# information itself +PRINT() { + if [ "$ENABLE_ITEM10" = "true" ]; then + if [ -e "${BINDIR}newsboat" ]; then + newscount="$(newsboat -x print-unread | awk '{ print $1 }')" + + if [ "$newscount" != "Error:" ]; then + echo "$SEPARATOR $ITEM10_ICON $newscount $ITEM10_TEXT" + fi + fi + fi +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_news ;; +"--click") CLICK ;; +esac diff --git a/modules/module_ram b/modules/module_ram index efba603..0c7afa1 100755 --- a/modules/module_ram +++ b/modules/module_ram @@ -1,46 +1,73 @@ #!/bin/sh # ram module for status/stellar -# values -RAM_USED="$(echo "$(free -h --giga | awk '/^Mem/ {print $3}')B")" -RAM_TOTAL="$(echo "$(free -h --giga | awk '/^Mem/ {print $2}')B")" -RAM_LEFT="$(echo "$(free -h --giga | awk '/^Mem/ {print $7}')B")" -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM1_ICON" +ARG1="$1" + +CLICK() { + # values + RAM_USED="$(echo "$(free -h --giga | awk '/^Mem/ {print $3}')B")" + RAM_TOTAL="$(echo "$(free -h --giga | awk '/^Mem/ {print $2}')B")" + RAM_LEFT="$(echo "$(free -h --giga | awk '/^Mem/ {print $7}')B")" + ICON="$ITEM1_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + + case "$TERMINAL" in + "") TERMINAL=st + esac + + case "$BUTTON" in + "3") $TERMINAL -e htop ;; + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing fi -fi - -case "$TERMINAL" in -"") TERMINAL=st -esac - -case "$BUTTON" in -"3") $TERMINAL -e htop ;; -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_RAM="$(printf "${ICON}${ICONSPACING}Used: $RAM_USED\nFree: $RAM_LEFT\nTotal: $RAM_TOTAL\n")" - notify-send "$FULL_RAM" - - echo "Notification sent successfully!" - echo "INFO: $FULL_RAM" - - exit 0 + + # send the notification + SEND_NOTIF() { + FULL_RAM="$(printf "${ICON}${ICONSPACING}Used: $RAM_USED\nFree: $RAM_LEFT\nTotal: $RAM_TOTAL\n")" + notify-send "$FULL_RAM" + + echo "Notification sent successfully!" + echo "INFO: $FULL_RAM" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM1" = "true" ]; then + # Used RAM + if [ -e "${BINDIR}free" ]; then + USEDRAM="$(echo "$(free -h --giga | awk '/^Mem/ {print $3}')B")" + fi + + # Total RAM + if [ -e "${BINDIR}free" ]; then + TOTALRAM="$(echo "$(free -h --giga | awk '/^Mem/ {print $2}')B")" + fi + + if [ -e "${BINDIR}free" ]; then + echo "$SEPARATOR $ITEM1_ICON $ITEM1_FORMAT" | sed "s|@u|$USEDRAM|; s|@t|$TOTALRAM|" + fi + fi -exit 1 +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_ram ;; +"--click") CLICK ;; +esac diff --git a/modules/module_temp b/modules/module_temp index 804f2b3..97c78e8 100755 --- a/modules/module_temp +++ b/modules/module_temp @@ -1,52 +1,74 @@ #!/bin/sh # cpu temp module for status/stellar -# values -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM8_ICON" - fi +ARG1="$1" +# click +CLICK() { + # values + ICON="$ITEM8_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + if [ "$ITEM8_FORMAT_CELSIUS" != "true" ]; then FARG="-F" fi -fi - -if [ ! -e "/tmp/iscelsius" ]; then - if [ "$FARG" = "" ]; then - FARG="-F" + + if [ ! -e "/tmp/iscelsius" ]; then + if [ "$FARG" = "" ]; then + FARG="-F" + fi fi -fi - -TEMP_FULL="$(sensors $FARG)" -command -v sensors > /dev/null || exit 1 - -case "$TERMINAL" in -"") TERMINAL=st -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_TEMP="${ICON}${ICONSPACING}$TEMP_FULL" - notify-send "$FULL_TEMP" - - echo "Notification sent successfully!" - echo "INFO: $FULL_TEMP" - - exit 0 + + TEMP_FULL="$(sensors $FARG)" + command -v sensors > /dev/null || exit 1 + + case "$TERMINAL" in + "") TERMINAL=st + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing + fi + + # send the notification + SEND_NOTIF() { + FULL_TEMP="${ICON}${ICONSPACING}$TEMP_FULL" + notify-send "$FULL_TEMP" + + echo "Notification sent successfully!" + echo "INFO: $FULL_TEMP" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM8" = "true" ]; then + if [ -e "${BINDIR}sensors" ]; then + if [ "$ITEM8_FORMAT_CELSIUS" = "true" ]; then + echo "$SEPARATOR $ITEM8_ICON $(sensors | grep temp1 | awk '{ print $2 }')" + touch /tmp/iscelsius + else + echo "$SEPARATOR $ITEM8_ICON $(sensors -f | grep temp1 | awk '{ print $2 }')" + fi + fi + fi +} -exit 1 +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_temp ;; +"--click") CLICK ;; +esac diff --git a/modules/module_time b/modules/module_time index f782547..ca39d7f 100755 --- a/modules/module_time +++ b/modules/module_time @@ -1,44 +1,64 @@ #!/bin/sh # time module for status/stellar -# values -TIME_SECOND="$(date +%S)" -TIME_MINUTE="$(date +%M)" -TIME_HOUR="$(date +%H)" -TIME_FULL="$(date +%T)" -TIME_ZONE="$(date +%Z)" -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM2_ICON" +ARG1="$1" + +# click +CLICK() { + # values + TIME_SECOND="$(date +%S)" + TIME_MINUTE="$(date +%M)" + TIME_HOUR="$(date +%H)" + TIME_FULL="$(date +%T)" + TIME_ZONE="$(date +%Z)" + ICON="$ITEM2_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + + case "$TERMINAL" in + "") TERMINAL=st + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing fi -fi + + # send the notification + SEND_NOTIF() { + FULL_TIME="${ICON}${ICONSPACING}The time is $TIME_FULL $TIME_ZONE." + notify-send "$FULL_TIME" + + echo "Notification sent successfully!" + echo "INFO: $FULL_TIME" + + exit 0 + } -case "$TERMINAL" in -"") TERMINAL=st -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_TIME="${ICON}${ICONSPACING}The time is $TIME_FULL $TIME_ZONE." - notify-send "$FULL_TIME" - - echo "Notification sent successfully!" - echo "INFO: $FULL_TIME" - - exit 0 + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM2" = "true" ]; then + if [ -e "${DATEBINDIR}date" ]; then + HOURS="$(date +%H)" + MINUTES="$(date +%M)" + SECONDS="$(date +%S)" + echo "$SEPARATOR $ITEM2_ICON $ITEM2_FORMAT" | sed "s|@h|$HOURS|; s|@m|$MINUTES|; s|@s|$SECONDS|" + fi + fi +} -exit 1 +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_time ;; +"--click") CLICK ;; +esac diff --git a/modules/module_vol b/modules/module_vol index 62b1601..5d5fa4f 100755 --- a/modules/module_vol +++ b/modules/module_vol @@ -1,45 +1,71 @@ #!/bin/sh -# ram module for status/stellar +# volume module for status/stellar +# +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" +ARG1="$1" -# values -VOL_VOLUME="$(speedwm-audioctrl -getvol)" -VOL_ISPULSE="$(speedwm-audioctrl -getbackend)" -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM4_ICON" +# click +CLICK() { + # values + VOL_VOLUME="$(speedwm-audioctrl -getvol)" + VOL_ISPULSE="$(speedwm-audioctrl -getbackend)" + ICON="$ITEM4_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + + case "$TERMINAL" in + "") TERMINAL=st + esac + + case "$BUTTON" in + "3") $TERMINAL speedwm-audioctrl -runmixer ; exit ;; + esac + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing fi -fi - -case "$TERMINAL" in -"") TERMINAL=st -esac - -case "$BUTTON" in -"3") $TERMINAL speedwm-audioctrl -runmixer ; exit ;; -esac - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_VOL="${ICON}${ICONSPACING}$VOL_VOLUME" - notify-send "$FULL_VOL" - - echo "Notification sent successfully!" - echo "INFO: $FULL_VOL" - - exit 0 + + # send the notification + SEND_NOTIF() { + FULL_VOL="${ICON}${ICONSPACING}$VOL_VOLUME" + notify-send "$FULL_VOL" + + echo "Notification sent successfully!" + echo "INFO: $FULL_VOL" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + + exit 1 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM4" = "true" ]; then + if [ -e "${BINDIR}pactl" ]; then + echo "$SEPARATOR $ITEM4_ICON $(echo $(pactl get-sink-volume 0 | awk '{print $5;exit}'))" + else + echo "$SEPARATOR $ITEM4_ICON $(echo $(amixer -c 0 get Master | tail -n1 | sed -r "s/.*\[(.*)%\].*/\1/")%)" + fi + fi -exit 1 + # get mute + if [ "$ITEM4_SHOW_MUTE" = "true" ]; then + if [ -e "${BINDIR}pactl" ]; then + pactl get-sink-mute 0 | grep -q yes && echo " $ITEM4_MUTE_TEXT" + fi + fi +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_vol ;; +"--click") CLICK ;; +esac diff --git a/modules/module_weather b/modules/module_weather index 4155c46..385b46d 100755 --- a/modules/module_weather +++ b/modules/module_weather @@ -1,53 +1,86 @@ #!/bin/sh # weather module for status/stellar -# values -WEATHER_TERM="speedwm-core -curl-weather" -ICON="$1" -BUTTON="$(cat /tmp/speedwm-button)" +# load config +. $HOME/.config/speedwm-de/status/config +BINDIR="$(dirname $(command -v status))/" -# load status config -if [ -e "$HOME/.config/speedwm-de/status/config" ]; then - . $HOME/.config/speedwm-de/status/config - if [ "$1" = "" ]; then - ICON="$ITEM5_ICON" +# argument 1 +ARG1="$1" + +# clicking +CLICK() { + # values + WEATHER_TERM="speedwm-core -curl-weather" + ICON="$ITEM5_ICON" + BUTTON="$(cat /tmp/speedwm-button)" + + case "$TERMINAL" in + "") TERMINAL=st + esac + + case "$BUTTON" in + "3") $TERMINAL speedwm-core -curl-weather ; exit ;; + esac + + # check if a forecast exists + # status script should create this + if [ -e "/tmp/wstatus" ]; then + FORECAST="$(cat /tmp/wstatus)" + else + echo "FATAL: No weather status available!" + exit 1 fi -fi - -case "$TERMINAL" in -"") TERMINAL=st -esac - -case "$BUTTON" in -"3") $TERMINAL speedwm-core -curl-weather ; exit ;; -esac - -# check if a forecast exists -# status script should create this -if [ -e "/tmp/wstatus" ]; then - FORECAST="$(cat /tmp/wstatus)" -else - echo "FATAL: No weather status available!" + + # no spacing if there's no icon + if [ "$ICON" != "" ]; then + ICONSPACING=" " # one character spacing + fi + + # send the notification + SEND_NOTIF() { + FULL_WEATHER="${ICON}${ICONSPACING}$FORECAST" + notify-send "$FULL_WEATHER" + + echo "Notification sent successfully!" + echo "INFO: $FULL_WEATHER" + + exit 0 + } + + command -v notify-send > /dev/null && SEND_NOTIF + echo "FATAL: libnotify not installed, can't send notification." + exit 1 -fi - -# no spacing if there's no icon -if [ "$ICON" != "" ]; then - ICONSPACING=" " # one character spacing -fi - -# send the notification -SEND_NOTIF() { - FULL_WEATHER="${ICON}${ICONSPACING}$FORECAST" - notify-send "$FULL_WEATHER" - - echo "Notification sent successfully!" - echo "INFO: $FULL_WEATHER" - - exit 0 } -command -v notify-send > /dev/null && SEND_NOTIF -echo "FATAL: libnotify not installed, can't send notification." +# information itself +PRINT() { + if [ "$ENABLE_ITEM5" = "true" ]; then + if [ -e "${BINDIR}curl" ]; then + if [ -e "/tmp/itest" ]; then + if [ -e "/tmp/wstatus" ]; then + grep -q "" /tmp/wstatus || echo "$SEPARATOR $ITEM5_ICON $(cat /tmp/wstatus)" + else + echo "$(curl -s wttr.in/?format="%C"), $(curl -s wttr.in/?format=3 | sed 's/.* //; s/.*\(.....\)/\1/')" > /tmp/wstatus + echo "$SEPARATOR $ITEM5_ICON $(cat /tmp/wstatus)" + fi + else + curl -so /tmp/itest wttr.in && hasinternet=true -exit 1 + if [ "$hasinternet" != "true" ]; then + rm -f /tmp/itest + rm -f /tmp/wstatus + itemcmd5="" + fi + fi + fi + fi +} + +# argument 1 +case "$ARG1" in +"") CLICK ;; +"--print") PRINT > /tmp/module_weather ;; +"--click") CLICK ;; +esac diff --git a/scripts/speedwm-dfmpeg b/scripts/speedwm-dfmpeg index fb942ca..124bbbd 100755 --- a/scripts/speedwm-dfmpeg +++ b/scripts/speedwm-dfmpeg @@ -178,12 +178,9 @@ MORE_OPTIONS() { case "$(printf 'Start\nStop\nStart without audio\nPlay last\n------\nMore options\nAbout\nExit' | $RUNLAUNCHER -l 40 -p 'Record your screen:')" in "Exit") STATUS=idle && exit 0 ;; "Start") touch /tmp/isaudio ; echo "$OUTPUT_FILENAME" > /tmp/outputfilename && STATUS=recording && touch /tmp/dfmpeg-recording - pgrep -x status && pkill -x status && status & $startrec && exit 0 ;; - "Stop") pkill -x ffmpeg ; rm /tmp/dfmpeg-recording ; STATUS=idle - pgrep -x status && pkill -x status && status & ;; + "Stop") pkill -x ffmpeg ; rm /tmp/dfmpeg-recording ; STATUS=idle ;; "Start without audio") echo "$OUTPUT_FILENAME" > /tmp/outputfilename && STATUS=recording && touch /tmp/dfmpeg-recording - pgrep -x status && pkill -x status && status & $startrec_no_audio && exit 0 ;; "Play last") DFMPEG_STATUS=idle && $MEDIA_PLAYER $(cat /tmp/outputfilename) && exit 0 ;; "More options") MORE_OPTIONS && exit 0 ;; diff --git a/status b/status index d60792e..f79c67a 100755 --- a/status +++ b/status @@ -149,12 +149,12 @@ setloading() { } # print data -PRINT() { +print() { setstatus "$(printf "$ITEMS_TEXT")" } # set status2d compatible colors -SETCOLORS_CMD() { +setcolors2d() { if [ "$COLORFG" = "true" ]; then FSETCOLORCMD1="^C1^" FSETCOLORCMD2="^C2^" @@ -192,61 +192,153 @@ SETCOLORS_CMD() { fi } -# Set bindir -case "$BINDIR" in -"") BINDIR=$(cat /usr/share/speedwm-bindir) ;; -esac - # remove old data rm -f /tmp/itest rm -f /tmp/wstatus rm -f /tmp/iscelsius -pkill "$(pgrep -x status | sed "s/$$//g")" # Prevent duplicates - mkdir -p $HOME/.config/speedwm-de/status -printf "Loaded speedwm status $VER\n---\n" +printf "Loaded $0 $VER\n---\n" # Set it to /usr/bin if it was not possible to get it through /usr/share/speedwm-bindir case "$BINDIR" in "") BINDIR="$(dirname $(command -v status))/" ;; esac -# Systray stuff -PRINT_TEXT() { +# RAM usage +ITEM1() { + module_ram --print & + + if [ -e "/tmp/module_ram" ]; then + cat /tmp/module_ram + fi +} + +# Time +ITEM2() { + module_time --print & + + if [ -e "/tmp/module_time" ]; then + cat /tmp/module_time + fi +} + +# Date +ITEM3() { + module_date --print & + + if [ -e "/tmp/module_date" ]; then + cat /tmp/module_date + fi +} + +# Volume +ITEM4() { + module_vol --print & + + if [ -e "/tmp/module_vol" ]; then + cat /tmp/module_vol + fi +} + +# Weather +ITEM5() { + module_weather --print & + + if [ -e "/tmp/module_weather" ]; then + cat /tmp/module_weather + fi +} + +# Network traffic +ITEM6() { + module_net --print & + + if [ -e "/tmp/module_net" ]; then + cat /tmp/module_net + fi +} + +# Dfmpeg status +ITEM7() { + module_dfmpeg --print & + + if [ -e "/tmp/module_dfmpeg" ]; then + cat /tmp/module_dfmpeg + fi +} + +# CPU temp +ITEM8() { + module_temp --print & + + if [ -e "/tmp/module_temp" ]; then + cat /tmp/module_temp + fi +} + +# mocp/cmus status +ITEM9() { + module_music --print & + + if [ -e "/tmp/module_music" ]; then + cat /tmp/module_music + fi +} + +# Newsboat unreads +ITEM10() { + module_news --print & + + if [ -e "/tmp/module_news" ]; then + cat /tmp/module_news + fi +} + +# Battery percentage/charging status +ITEM11() { + module_bat --print & + + if [ -e "/tmp/module_bat" ]; then + cat /tmp/module_bat + fi +} + +# Set text variables that we can print later +ptext() { # Output of commands # We're doing this so we can manipulate them easily for various reasons. - ITEMCMD1="$(echo "$(ITEM1)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD2="$(echo "$(ITEM2)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD3="$(echo "$(ITEM3)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD4="$(echo "$(ITEM4)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD5="$(echo "$(ITEM5)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD6="$(echo "$(ITEM6)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD7="$(echo "$(ITEM7)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD8="$(echo "$(ITEM8)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD9="$(echo "$(ITEM9)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD10="$(echo "$(ITEM10)" | sed ':a;N;$!ba;s/\n//g')" - ITEMCMD11="$(echo "$(ITEM11)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd1="$(echo "$(ITEM1)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd2="$(echo "$(ITEM2)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd3="$(echo "$(ITEM3)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd4="$(echo "$(ITEM4)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd5="$(echo "$(ITEM5)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd6="$(echo "$(ITEM6)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd7="$(echo "$(ITEM7)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd8="$(echo "$(ITEM8)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd9="$(echo "$(ITEM9)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd10="$(echo "$(ITEM10)" | sed ':a;N;$!ba;s/\n//g')" + itemcmd11="$(echo "$(ITEM11)" | sed ':a;N;$!ba;s/\n//g')" # Add colors to them - ITEMCMD1="$FSETCOLORCMD7$BSETCOLORCMD7$ITEMCMD1" - ITEMCMD2="$FSETCOLORCMD11$BSETCOLORCMD11$ITEMCMD2" - ITEMCMD3="$FSETCOLORCMD10$BSETCOLORCMD10$ITEMCMD3" - ITEMCMD4="$FSETCOLORCMD8$BSETCOLORCMD8$ITEMCMD4" - ITEMCMD5="$FSETCOLORCMD3$BSETCOLORCMD3$ITEMCMD5" - ITEMCMD6="$FSETCOLORCMD6$BSETCOLORCMD6$ITEMCMD6" - ITEMCMD7="$FSETCOLORCMD5$BSETCOLORCMD5$ITEMCMD7" - ITEMCMD8="$FSETCOLORCMD4$BSETCOLORCMD4$ITEMCMD8" - ITEMCMD9="$FSETCOLORCMD2$BSETCOLORCMD2$ITEMCMD9" - ITEMCMD10="$FSETCOLORCMD9$BSETCOLORCMD9$ITEMCMD10" - ITEMCMD11="$FSETCOLORCMD8$BSETCOLORCMD8$ITEMCMD11" + itemcmd1="$FSETCOLORCMD7$BSETCOLORCMD7$itemcmd1" + itemcmd2="$FSETCOLORCMD11$BSETCOLORCMD11$itemcmd2" + itemcmd3="$FSETCOLORCMD10$BSETCOLORCMD10$itemcmd3" + itemcmd4="$FSETCOLORCMD8$BSETCOLORCMD8$itemcmd4" + itemcmd5="$FSETCOLORCMD3$BSETCOLORCMD3$itemcmd5" + itemcmd6="$FSETCOLORCMD6$BSETCOLORCMD6$itemcmd6" + itemcmd7="$FSETCOLORCMD5$BSETCOLORCMD5$itemcmd7" + itemcmd8="$FSETCOLORCMD4$BSETCOLORCMD4$itemcmd8" + itemcmd9="$FSETCOLORCMD2$BSETCOLORCMD2$itemcmd9" + itemcmd10="$FSETCOLORCMD9$BSETCOLORCMD9$itemcmd10" + itemcmd11="$FSETCOLORCMD8$BSETCOLORCMD8$itemcmd11" # Clickability if [ "$CLICKABLE" = "true" ]; then - ITEMS_TEXT="$(echo "$ITEM_ORDER" | sed "s|@10|\x10$ITEMCMD10|; s|@11|\x11$ITEMCMD11|; s|@1|\x01$ITEMCMD1|; s|@2|\x02$ITEMCMD2|; s|@3|\x03$ITEMCMD3|; s|@4|\x04$ITEMCMD4|; s|@5|\x05$ITEMCMD5|; s|@6|\x06$ITEMCMD6|; s|@7|\x07$ITEMCMD7|; s|@8|\x08$ITEMCMD8|; s|@9|\x09$ITEMCMD9|; s|%|%%|g")" + ITEMS_TEXT="$(echo "$ITEM_ORDER" | sed "s|@10|\x10$itemcmd10|; s|@11|\x11$itemcmd11|; s|@1|\x01$itemcmd1|; s|@2|\x02$itemcmd2|; s|@3|\x03$itemcmd3|; s|@4|\x04$itemcmd4|; s|@5|\x05$itemcmd5|; s|@6|\x06$itemcmd6|; s|@7|\x07$itemcmd7|; s|@8|\x08$itemcmd8|; s|@9|\x09$itemcmd9|; s|%|%%|g")" else - ITEMS_TEXT="$(echo "$ITEM_ORDER" | sed "s|@10|$ITEMCMD10|; s|@11|$ITEMCMD11|; s|@1|$ITEMCMD1|; s|@2|$ITEMCMD2|; s|@3|$ITEMCMD3|; s|@4|$ITEMCMD4|; s|@5|$ITEMCMD5|; s|@6|$ITEMCMD6|; s|@7|$ITEMCMD7|; s|@8|$ITEMCMD8|; s|@9|$ITEMCMD9|; s|%|%%|g")" + ITEMS_TEXT="$(echo "$ITEM_ORDER" | sed "s|@10|$itemcmd10|; s|@11|$itemcmd11|; s|@1|$itemcmd1|; s|@2|$itemcmd2|; s|@3|$itemcmd3|; s|@4|$itemcmd4|; s|@5|$itemcmd5|; s|@6|$itemcmd6|; s|@7|$itemcmd7|; s|@8|$itemcmd8|; s|@9|$itemcmd9|; s|%|%%|g")" fi # Auto-get character limit based on screen resolution @@ -271,48 +363,48 @@ PRINT_TEXT() { if [ "$CHARS" != "false" ]; then # Truncate item 11 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD11="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd11="" # Truncate item 10 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD10="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd10="" # Truncate item 9 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD9="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd9="" # Truncate item 8 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD8="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd8="" # Truncate item 7 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD7="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd7="" # Truncate item 6 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD6="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd6="" # Truncate item 5 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD5="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd5="" # Truncate item 4 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD4="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd4="" # Truncate item 3 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD3="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd3="" # Truncate item 2 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD2="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd2="" # Truncate item 1 - if [ "$(printf $ITEMCMD1$ITEMCMD2$ITEMCMD3$ITEMCMD4$ITEMCMD5$ITEMCMD6$ITEMCMD7$ITEMCMD8$ITEMCMD9$ITEMCMD10$ITEMCMD11 | wc -c)" -gt "$CHARS" ]; then - ITEMCMD1="" + if [ "$(printf $itemcmd1$itemcmd2$itemcmd3$itemcmd4$itemcmd5$itemcmd6$itemcmd7$itemcmd8$itemcmd9$itemcmd10$itemcmd11 | wc -c)" -gt "$CHARS" ]; then + itemcmd1="" fi fi fi @@ -326,303 +418,22 @@ PRINT_TEXT() { fi fi - PRINT + print pgrep -x speedwm > /dev/null || exit 1 } -# RAM usage -ITEM1() { - if [ "$ENABLE_ITEM1" = "true" ]; then - # Used RAM - if [ -e "${BINDIR}free" ]; then - USEDRAM="$(echo "$(free -h --giga | awk '/^Mem/ {print $3}')B")" - fi - - # Total RAM - if [ -e "${BINDIR}free" ]; then - TOTALRAM="$(echo "$(free -h --giga | awk '/^Mem/ {print $2}')B")" - fi - - echo "$SEPARATOR $ITEM1_ICON $ITEM1_FORMAT" | sed "s|@u|$USEDRAM|; s|@t|$TOTALRAM|" - fi -} - -# Time -ITEM2() { - if [ "$ENABLE_ITEM2" = "true" ]; then - if [ -e "${DATEBINDIR}date" ]; then - HOURS="$(date +%H)" - MINUTES="$(date +%M)" - SECONDS="$(date +%S)" - echo "$SEPARATOR $ITEM2_ICON $ITEM2_FORMAT" | sed "s|@h|$HOURS|; s|@m|$MINUTES|; s|@s|$SECONDS|" - fi - fi -} - -# Date -ITEM3() { - if [ "$ENABLE_ITEM3" = "true" ]; then - if [ -e "${DATEBINDIR}date" ]; then - DAY="$(date +%d)" - MONTH="$(date +%m)" - YEAR="$(date +%Y)" - - echo "$SEPARATOR $ITEM3_ICON $ITEM3_FORMAT" | sed "s|@d|$DAY|; s|@m|$MONTH|; s|@y|$YEAR|" - fi - fi -} - -# Volume -ITEM4() { - if [ "$ENABLE_ITEM4" = "true" ]; then - if [ -e "${BINDIR}pactl" ]; then - echo "$SEPARATOR $ITEM4_ICON $(echo $(pactl get-sink-volume 0 | awk '{print $5;exit}'))" - else - echo "$SEPARATOR $ITEM4_ICON $(echo $(amixer -c 0 get Master | tail -n1 | sed -r "s/.*\[(.*)%\].*/\1/")%)" - fi - fi - - # get mute - if [ "$ITEM4_SHOW_MUTE" = "true" ]; then - if [ -e "${BINDIR}pactl" ]; then - pactl get-sink-mute 0 | grep -q yes && echo " $ITEM4_MUTE_TEXT" - fi - fi -} - -# Weather -ITEM5() { - if [ "$ENABLE_ITEM5" = "true" ]; then - if [ -e "${BINDIR}curl" ]; then - if [ -e "/tmp/itest" ]; then - if [ -e "/tmp/wstatus" ]; then - grep -q "" /tmp/wstatus || echo "$SEPARATOR $ITEM5_ICON $(cat /tmp/wstatus)" - else - echo "$(curl -s wttr.in/?format="%C"), $(curl -s wttr.in/?format=3 | sed 's/.* //; s/.*\(.....\)/\1/')" > /tmp/wstatus - echo "$SEPARATOR $ITEM5_ICON $(cat /tmp/wstatus)" - fi - else - curl -so /tmp/itest wttr.in && hasinternet=true - - if [ "$hasinternet" != "true" ]; then - rm -f /tmp/itest - rm -f /tmp/wstatus - ITEMCMD5="" - fi - fi - fi - fi -} - -# Network traffic -ITEM6() { - if [ "$ENABLE_ITEM6" = "true" ]; then - if [ -e "${BINDIR}awk" ]; then - echo "$SEPARATOR $ITEM6_ICON $(awk '{$1=$1/1024000; print $1"B";}' /sys/class/net/[ew]*/statistics/tx_bytes | sed "s/.*\(....\)/\1/; s|B|B/s |; s/[.]/0./")" - fi - fi -} - -# Dfmpeg status -ITEM7() { - # Check if we're recording with dfmpeg or not - if [ "$ENABLE_ITEM7" = "true" ]; then - if [ -e "/tmp/dfmpeg-recording" ]; then - echo "$SEPARATOR $ITEM7_ICON $ITEM7_RECORDING_TEXT" - fi - fi -} - -# CPU temp -ITEM8() { - if [ "$ENABLE_ITEM8" = "true" ]; then - if [ -e "${BINDIR}sensors" ]; then - if [ "$ITEM8_FORMAT_CELSIUS" = "true" ]; then - echo "$SEPARATOR $ITEM8_ICON $(sensors | grep temp1 | awk '{ print $2 }')" - touch /tmp/iscelsius - else - echo "$SEPARATOR $ITEM8_ICON $(sensors -f | grep temp1 | awk '{ print $2 }')" - fi - fi - fi -} - -# mocp/cmus status -ITEM9() { - # Auto set backend if set to auto - if [ "$ITEM9_BACKEND" = "auto" ]; then - if [ -e "${BINDIR}cmus" ]; then - ITEM9_BACKEND="cmus" - elif [ -e "${BINDIR}mocp" ]; then - ITEM9_BACKEND="mocp" - fi - fi - - if [ "$ENABLE_ITEM9" = "true" ]; then - if [ "$ITEM9_BACKEND" = "mocp" ]; then - if [ -e "${BINDIR}mocp" ]; then - if [ "$(echo $(mocp -Q %file))" != "" ]; then - - # filename - if [ "$ITEM9_DISPLAY_FILE" = "true" ]; then - if [ "$(mocp -Q %file | head -n 1)" != "" ]; then - echo "$SEPARATOR $ITEM9_ICON $ITEM9_PRE_FILE$(basename "$(mocp -Q %file)" | sed 's|\(.*\)[.].*|\1|')$ITEM9_POST_FILE" - fi - else - - # artist - if [ "$ITEM9_DISPLAY_ARTIST" = "true" ]; then - if [ "$(mocp -Q %artist | head -n 1)" != "" ]; then - MUSIC_ARTIST="$(mocp -Q %artist)" - fi - fi - - # title - if [ "$ITEM9_DISPLAY_TITLE" = "true" ]; then - if [ "$(mocp -Q %song | head -n 1)" != "" ]; then - MUSIC_SONG="$(mocp -Q %song)" - fi - fi - - # album - if [ "$ITEM9_DISPLAY_ALBUM" = "true" ]; then - if [ "$(mocp -Q %album | head -n 1)" != "" ]; then - MUSIC_ALBUM="$(mocp -Q %album)" - fi - fi - - # time elapsed - if [ "$ITEM9_DISPLAY_TIMEELAPSED" = "true" ]; then - if [ "$(mocp -Q %tl | head -n 1)" != "" ]; then - MUSIC_TIMEELAPSED="$(mocp -Q %ct)" - fi - fi - - # total time - if [ "$ITEM9_DISPLAY_TIMETOTAL" = "true" ]; then - if [ "$(mocp -Q %tt | head -n 1)" != "" ]; then - MUSIC_TIMETOTAL="$(mocp -Q %tt)" - fi - fi - - data="$(printf "$ITEM9_FORMAT" | sed "s|@ab|$MUSIC_ALBUM|; s|@t|$MUSIC_SONG|; s|@g||; s|@a|$MUSIC_ARTIST|; s|@tt|$MUSIC_TIMETOTAL|; s|@te|$MUSIC_TIMEELAPSED|; s| ||g")" - - # actually print it - echo "$SEPARATOR $ITEM9_ICON $data" - fi - fi - fi - fi - fi - - if [ "$ENABLE_ITEM9" = "true" ]; then - if [ -e "${BINDIR}cmus-remote" ]; then - if [ "$(cmus-remote -C status | head -n 1 | awk '{ print $2 }')" = "playing" ]; then - if [ "$ITEM9_DISPLAY_FILE" = "true" ]; then - echo "$SEPARATOR $ITEM9_ICON $ITEM9_PRE_FILE$(basename "$(cmus-remote -C status | grep file)"| sed 's|\(.*\)[.].*|\1|')$ITEM9_POST_FILE" - else - - # artist - if [ "$ITEM9_DISPLAY_ARTIST" = "true" ]; then - if [ "$(cmus-remote -C status | grep "tag artist")" != "" ]; then - MUSIC_ARTIST="$(cmus-remote -C status | grep "tag artist" | sed "s/tag artist //g")" - fi - fi - - # title - if [ "$ITEM9_DISPLAY_TITLE" = "true" ]; then - if [ "$(cmus-remote -C status | grep "tag title")" != "" ]; then - MUSIC_SONG="$(cmus-remote -C status | grep "tag title" | sed "s/tag title //g")" - fi - fi - - # album - if [ "$ITEM9_DISPLAY_ALBUM" = "true" ]; then - if [ "$(cmus-remote -C status | grep "tag album")" != "" ]; then - MUSIC_ALBUM="$(cmus-remote -C status | grep "tag album" | head -n 1 | sed "s/tag album //g")" - fi - fi - - # genre - if [ "$ITEM9_DISPLAY_GENRE" = "true" ]; then - if [ "$(cmus-remote -C status | grep "tag genre")" != "" ]; then - MUSIC_GENRE="$(cmus-remote -C status | grep "tag genre" | sed "s/tag genre //g")" - fi - fi - - # time elapsed - if [ "$ITEM9_DISPLAY_TIMEELAPSED" = "true" ]; then - if [ "$(cmus-remote -Q | grep position | sed "s/position //g")" != "" ]; then - MUSIC_TIMEELAPSED="$(cmus-remote -Q | grep position | sed "s/position //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" - fi - fi - - # total time - if [ "$ITEM9_DISPLAY_TIMETOTAL" = "true" ]; then - if [ "$(cmus-remote -Q | grep duration | sed "s/duration //g")" != "" ]; then - MUSIC_TIMETOTAL="$(cmus-remote -Q | grep duration | sed "s/duration //g" | awk '{printf "%02d:%02d:%02d",$0/3600,$0%3600/60,$0%60}' | sed "s/00://")" - fi - fi - - data="$(printf "$ITEM9_FORMAT" | sed "s|@ab|$MUSIC_ALBUM|; s|@t|$MUSIC_SONG|; s|@g|$MUSIC_GENRE|; s|@a|$MUSIC_ARTIST|; s|@tt|$MUSIC_TIMETOTAL|; s|@te|$MUSIC_TIMEELAPSED|; s| ||g")" - - # actually print it - if [ "$data" != "" ]; then - echo "$SEPARATOR $ITEM9_ICON $data" - fi - fi - fi - fi - fi -} - -# Newsboat unreads -ITEM10() { - if [ "$ENABLE_ITEM10" = "true" ]; then - if [ -e "${BINDIR}newsboat" ]; then - NEWSCOUNT="$(newsboat -x print-unread | awk '{ print $1 }')" - - if [ "$NEWSCOUNT" != "Error:" ]; then - echo "$SEPARATOR $ITEM10_ICON $NEWSCOUNT $ITEM10_TEXT" - fi - fi - fi -} - -# Battery percentage/charging status -ITEM11() { - if [ "$ENABLE_ITEM11" = "true" ]; then - # print capacity - if [ -e "/sys/class/power_supply/BAT0/capacity" ]; then - echo "$SEPARATOR $ITEM11_ICON $(cat /sys/class/power_supply/BAT0/capacity)%" - fi - - # print capacity for second battery if it exists - if [ -e "/sys/class/power_supply/BAT1/capacity" ]; then - echo "$SEPARATOR $ITEM11_ICON $(cat /sys/class/power_supply/BAT1/capacity)%" - fi - - # show charging status - if [ -e "${BINDIR}acpi" ]; then - if [ "$ITEM11_SHOW_CHARGING_STATUS" = "true" ]; then - CHARGESTATUS=$(echo ", $(acpi | awk '{ print $3 }' | sed "s|,||g" | sed "s|Discharging|$ITEM11_DISCHARGING_TEXT|g; s|Charging|$ITEM11_CHARGING_TEXT|g; s|Fully charged|$ITEM11_FULL_TEXT|g")") && echo $CHARGESTATUS - fi - fi - fi -} - # base -BASE() { - PRINT_TEXT +base() { + ptext sleep $REFRESHDELAY - BASE + base } setloading -SETCOLORS_CMD -PRINT_TEXT -BASE +setcolors2d +ptext +base -echo "status: Stopped printing." +printf "$0: Stopped printing." exit 0 diff --git a/statusbar.h b/statusbar.h index 6fc611c..210ce7a 100644 --- a/statusbar.h +++ b/statusbar.h @@ -20,13 +20,13 @@ * */ static const StatusCmd statuscmds[] = { - { "module_ram", 1 }, - { "module_time", 2 }, - { "module_date", 3 }, - { "module_vol", 4 }, - { "module_weather", 5 }, - { "module_net", 6 }, - { "module_dfmpeg", 7 }, - { "module_temp", 8 }, - { "module_music", 9 }, + { "module_ram --click", 1 }, + { "module_time --click", 2 }, + { "module_date --click", 3 }, + { "module_vol --click", 4 }, + { "module_weather --click", 5 }, + { "module_net --click", 6 }, + { "module_dfmpeg --click", 7 }, + { "module_temp --click", 8 }, + { "module_music --click", 9 }, };