A pure bash dashboard for when you absolutely refuse to leave your CLI. It runs in an infinite loop, refreshing your terminal every 60 seconds with exactly what you need to know and nothing more.
- Weather: Real-time updates via
wttr.in(configured via~/.config/bashboard/config.conf). - News Feeds: Pulls the top 3 headlines from BBC World, Economy, and Tech RSS feeds.
- Price Widget: Optional JSON+
jqprice display (configured URL +jqfilter). - Tasks: Reads your local tasks file (TodoMe /
todo.txtstyle / legacy pipe format). - System Stats: CPU, RAM, and Disk usage.
- Secure Config Parsing: Uses a zero-trust, pure-bash line-by-line parser to completely prevent Arbitrary Code Execution (no unsafe
sourceing!).
Your machine needs to know how to fetch and parse the web. Make sure you have these installed:
curl(to fetch the goods)jq(to parse the JSON from the custom price API)- Standard coreutils (
grep,sed,awk)
Ubuntu/Debian installation:
sudo apt-get install curl jq- Copy the code (or clone the repo).
- Save it as
script.shin a/path/that/you/can/find. - Create a config file so you never edit the script:
mkdir -p ~/.config/bashboard
cp ./config.example.conf ~/.config/bashboard/config.conf- Edit
~/.config/bashboard/config.confto match your life (weather location, optional tasks file, optional price widget, etc). - Add an alias to your
~/.bashrc:
alias dashboard="$HOME/path/that/you/still/can/find/script.sh"- Completely forget that you have to source your
~/.bashrc. - Remember, and actually source it:
source ~/.bashrc- Type
dashboardin your terminal. - Win. (Press
Ctrl+Cto exit the dashboard when you're done pretending).
Bashboard reads settings from ~/.config/bashboard/config.conf (or $XDG_CONFIG_HOME/bashboard/config.conf).
Start with:
mkdir -p ~/.config/bashboard
cp ./config.example.conf ~/.config/bashboard/config.confSet TASKS_FILE in your config.
Note: Task tags are defined in the config using a safe, space-separated string, e.g., TASK_KINDS="backup update deadline".
todo.txt style (recommended):
- Add tags matching your
TASK_KINDS(like+backup,+update,+deadline) - Add
due:YYYY-MM-DD(ordue:YYYY/MM/DD) so Bashboard can pick the next one
Example lines:
(B) Update packages +update due:2026-04-12
Backup home dir +backup due:2026-04-08
Tax filing +deadline due:2026-04-30Legacy pipe format:
backup|2026/04/08|Backup home dir
update|2026/04/12|Update packages
deadline|2026/04/30|Tax filingMIT. Free. Open-source.