-
-
Save tucq88/9e63f65585c48c36f0706ba3eac086ef to your computer and use it in GitHub Desktop.
Bitbar timely progress bar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # add this to your bitbar directory | |
| # don't forget to chmod +x | |
| # width of the progress bars | |
| width=30 | |
| # all of the calculations are done using unix timestamps from date(1) | |
| # mac uses bsd's date(1) | |
| # whenever we set a date, make sure to add -j so it doesn't change the clock | |
| # we use `date -j %m%d0000 +%s` to get the start timestamp, %Y is implied | |
| # then we use `date -jr $start -v +1y/+1m +%s` to get the ending timestamp | |
| # then we calculate the percentage with (now - start) / (end - start) | |
| now=$(date +%s) | |
| Y=$(date +%Y) | |
| Y_start=$(date -j 01010000 +%s) | |
| Y_end=$(date -jr $Y_start -v +1y +%s) | |
| Y_progress=$( | |
| echo "($now - $Y_start) * 100 / ($Y_end - $Y_start)" | bc -l | |
| ) | |
| m=$(date +%m) | |
| m_start=$(date -j $(date +%m)010000 +%s) | |
| m_end=$(date -jr $m_start -v +1m +%s) | |
| m_progress=$( | |
| echo "($now - $m_start) * 100 / ($m_end - $m_start)" | bc -l | |
| ) | |
| d=$(date +%d) | |
| d_start=$(date -j $(date +%m%d)0000 +%s) | |
| d_end=$(date -jr $d_start -v +1d +%s) | |
| d_progress=$( | |
| echo "($now - $d_start) * 100 / ($d_end - $d_start)" | bc -l | |
| ) | |
| # padding to align progress bar and text | |
| # Y-m-d = 10 + 2 spaces + 2 digits + percent sign | |
| # width-15 | |
| padding=$(printf %$((width-15))s "") | |
| # round function | |
| round() { printf %.0f "$1"; } | |
| # progress bar display function | |
| fill_char="█" | |
| empty_char="▁" | |
| progress() { | |
| filled=$(round $(echo "$1 * $width / 100" | bc -l)) | |
| empty=$((width - filled)) | |
| printf "$fill_char%0.s" $(seq $filled) | |
| printf "$empty_char%0.s" $(seq $empty) | |
| } | |
| bitbar="size=10 color=#ffffff font='Fantasque Sans Mono'" | |
| echo "$Y-$m-$d: $(round $d_progress)% | $bitbar size=12" | |
| echo --- | |
| echo "$Y-$m-$d $padding $(round $d_progress)% | $bitbar" | |
| echo "$(progress $d_progress) | $bitbar" | |
| echo --- | |
| echo "$Y-$m $padding $(round $m_progress)% | $bitbar" | |
| echo "$(progress $m_progress) | $bitbar" | |
| echo --- | |
| echo "$Y $padding $(round $Y_progress)% | $bitbar" | |
| echo "$(progress $Y_progress) | $bitbar" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment