#!/bin/sh # Status bar for speedwm # Written by speedie.gq in POSIX sh for https://speedie.gq/speedwm # Licensed under the GNU GPLv3 free software license. # # NOTE: Anything in the DISPLAY function will be printed to your status bar. # This means stdout will be printed regardless. # You can output to /dev/null to silence most commands. # # Once you're done editing, run 'make clean install'. # # CONFIG # This is the configuration for the status bar # # I highly recommend editing ~/.config/speedwm-de/status/config instead though # All settings can be changed there. Otherwise, carefully edit the file and recompile speedwm! if [ ! -e "$HOME/.config/speedwm-de/status/config" ]; then cat < ~/.config/speedwm-de/status/config # status configuration # General settings REFRESHDELAY=1 # How long delay in seconds between each reload (num) DATEBINDIR="/bin/" # Directory where your 'date' binary is. Default should be fine for most people SETMETHOD="speedwm -s" # Method used to set the status bar SEPARATOR="❰" # Separator to use. Alternative separators: "❰", "<", "|" COLORFG=true # Color foreground (true/false) COLORBG=false # Color background (true/false) CLICKABLE=true # Enable clickability (Requires dwm with statuscmd or speedwm) (true/false) CHARLIMIT=auto # Limit characters to CHARLIMIT. Enter false to not have a limit. Enter auto to use xdpyinfo. (num/auto/false) ITEM_ORDER="@2 @3 @11 @4 @1 @6 @8 @5 @9 @7 @10" # Item order. @1 means item 1, @6 means item 6 and so on. (text) # Status bar modules # Set to true/false to enable/disable. # Keep in mind, if the dependencies are not installed, then they will not be used regardless of what the option is set to. ENABLE_ITEM1=true # Enable RAM usage (true/false) ENABLE_ITEM2=true # Enable Time (HH:MM) (true/false) ENABLE_ITEM3=true # Enable Date (DD/MM/YY) (true/false) ENABLE_ITEM4=true # Enable Volume/Mute status (%) (true/false) ENABLE_ITEM5=true # Enable Weather (true/false) ENABLE_ITEM6=true # Enable Network Traffic (B/s (true/false) ENABLE_ITEM7=true # Enable dfmpeg status (true/false) ENABLE_ITEM8=true # Enable CPU temp (true/false) ENABLE_ITEM9=true # Enable music status (true/false) ENABLE_ITEM10=false # Enable newsboat unread (true/false) ENABLE_ITEM11=true # Enable battery percentage and charging status (true/false) ITEM1_ICON=" " # Icon for ITEM1 ITEM2_ICON=" " # Icon for ITEM2 ITEM3_ICON=" " # Icon for ITEM3 ITEM4_ICON=" " # Icon for ITEM4 ITEM5_ICON=" " # Icon for ITEM5 ITEM6_ICON=" " # Icon for ITEM6 ITEM7_ICON=" " # Icon for ITEM7 ITEM8_ICON=" " # Icon for ITEM8 ITEM9_ICON=" " # Icon for ITEM9 ITEM10_ICON=" " # Icon for ITEM10 ITEM11_ICON=" " # Icon for ITEM11 # RAM format # Format to display the RAM status in # # @u - Used RAM # @t - Total RAM # # Example: @u/@t ITEM1_FORMAT="@u/@t" # Time format # Format to display the time in # # @h - Hour # @m - Minute # @s - Second # # Example: @h:@m ITEM2_FORMAT="@h:@m" # Date format # Format to display the date in # # @d - Day # @m - Month # @y - Year # # Example: @d/@m/@y ITEM3_FORMAT="@d/@m/@y" ITEM4_SHOW_MUTE="true" # Show mute status (true/false) ITEM4_MUTE_TEXT="(Muted)" # Text to display when muted (text) ITEM7_RECORDING_TEXT="Recording" # Text to display when recording (text) ITEM8_FORMAT_CELSIUS="true" # Format temperature in Celsius (true/false) ITEM9_BACKEND="auto" # Backend for the music status (cmus/mocp/auto) ITEM9_DISPLAY_ARTIST="true" # Display artist or not (true/false) ITEM9_DISPLAY_TITLE="true" # Display title or not (true/false) ITEM9_DISPLAY_ALBUM="true" # Display album or not (true/false) ITEM9_DISPLAY_GENRE="true" # Display genre or not (true/false) ITEM9_DISPLAY_TIMEELAPSED="true" # Display time elapsed or not. If you use this, you will probably want the delay set pretty low. (true/false) ITEM9_DISPLAY_TIMETOTAL="true" # Display total time or not (true/false_ ITEM9_DISPLAY_FILE="false" # Display filename or not. This option will disable everything else. Path and file extension will be cut. (true/false) # Music format # Format to display the music status in # # @a - Artist # @t - Title # @g - Genre # @ab - Album # @tt - Total time # @te - Time elapsed # # Example: @a - @t from @ab (@g) [@te/@tt] ITEM9_FORMAT="@a - @t from @ab (@g) [@te/@tt]" ITEM10_TEXT="unread articles!" # Text to display next to unread article count (text) ITEM11_SHOW_CHARGING_STATUS=true # Show 'Charging', 'Not charging' or 'Fully charged' status after the percentage. (true/false) ITEM11_DISCHARGING_TEXT="Not charging" # Text when not charging (text) ITEM11_CHARGING_TEXT="Charging" # Text when charging (text) ITEM11_FULL_TEXT="Fully charged" # Text when fully charged (text) EOF . $HOME/.config/speedwm-de/status/config && echo "Created configuration file" else . $HOME/.config/speedwm-de/status/config && echo "Loaded configuration file" fi ######################################################################### # set version if [ -e "/usr/share/speedwm/speedwm-version" ]; then VER="$(cat /usr/share/speedwm/speedwm-version)" else VER="1.0" fi # set status setstatus() { $SETMETHOD "$@" return } # set loading status setloading() { $SETMETHOD "Loading" return } # print data PRINT() { setstatus "$(printf "$ITEMS_TEXT")" } # set status2d compatible colors SETCOLORS_CMD() { if [ "$COLORFG" = "true" ]; then FSETCOLORCMD1="^C1^" FSETCOLORCMD2="^C2^" FSETCOLORCMD3="^C3^" FSETCOLORCMD4="^C4^" FSETCOLORCMD5="^C5^" FSETCOLORCMD6="^C6^" FSETCOLORCMD7="^C7^" FSETCOLORCMD8="^C8^" FSETCOLORCMD9="^C9^" FSETCOLORCMD10="^C10^" FSETCOLORCMD11="^C11^" FSETCOLORCMD12="^C12^" FSETCOLORCMD13="^C13^" FSETCOLORCMD14="^C14^" FSETCOLORCMD15="^C15^" fi if [ "$COLORBG" = "true" ]; then BSETCOLORCMD1="^B1^" BSETCOLORCMD2="^B2^" BSETCOLORCMD3="^B3^" BSETCOLORCMD4="^B4^" BSETCOLORCMD5="^B5^" BSETCOLORCMD6="^B6^" BSETCOLORCMD7="^B7^" BSETCOLORCMD8="^B8^" BSETCOLORCMD9="^B9^" BSETCOLORCMD10="^B10^" BSETCOLORCMD11="^B11^" BSETCOLORCMD12="^B12^" BSETCOLORCMD13="^B13^" BSETCOLORCMD14="^B14^" BSETCOLORCMD15="^B15^" 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" # 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() { # 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')" # 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" # 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")" 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")" fi # Auto-get character limit based on screen resolution # This is pretty hacky, but it works as a default. # Setting this to "false" is recommended if you've got a big monitor # I think the first three numbers of your screen resolution times 1.5 is a good max. # I've got a 1366x768 12 inch ThinkPad so I decided to implement this. # If anyone has a better method, please PR. if [ "$CHARLIMIT" = "auto" ]; then command -v xdpyinfo > /dev/null && \ RES="$(xdpyinfo | awk '/dimensions/ {print $2}' | sed 's/.x....*//g; s/[^0-9]*//g')" CHARS="$(expr "$RES" "*" "1")" if [ "$CHARS" = "" ]; then CHARS=false fi elif [ "$CHARLIMIT" != "false" ]; then CHARS=$CHARLIMIT else CHARS=false fi 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="" # Truncate item 10 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="" # Truncate item 8 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="" # Truncate item 6 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="" # Truncate item 4 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="" # Truncate item 2 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="" fi fi fi fi fi fi fi fi fi fi fi fi 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 sleep $REFRESHDELAY BASE } setloading SETCOLORS_CMD PRINT_TEXT BASE echo "status: Stopped printing." exit 0