QuickDash banner

QuickDash

7 devlogs
20h 24m 30s

QuickDash is a customizable TUI dashboard.

A simple dashboard I made for my homelab.

Features

  • View RAM, CPU, and Disk usage
  • Customizable tabs with log streaming and custom command output

TUI

  • Install it on your server
  • S…

QuickDash is a customizable TUI dashboard.

A simple dashboard I made for my homelab.

Features

  • View RAM, CPU, and Disk usage
  • Customizable tabs with log streaming and custom command output

TUI

  • Install it on your server
  • Since it’s TUI, you can access from anywhere via SSH

Live loaded configs

  • QuickDash uses watchfiles to see changes in the config file, and applies them instantly.
This project uses AI

Used GH Copilot for async related debugging

Demo Repository

Loading README...

khr519

I think this is ready to ship. I did some cleanup on the readme and added screenshots. I made an installation script that git clones and creates python venvs and installs all deps. It can also create a shell alias for running the app.

Attachment
Attachment
0
khr519

I changed the settings format to TOML. Much better than jsonc in my opinion.
Also I am almost done writing the documentations for this. I think it can be shipped within this week

Attachment
0
khr519

Forgot to write a devlog yesterday so here goes a lot of new stuff :)
Changes:

  • Now the Log and Custom command widgets are named ‘tabs’. And are actually in tabs.
  • Now the user can choose between docker containers and other things. (User has to specify log commands when not using docker)
  • I’ve made a settings_example.jsonc
  • Also made subproc shell use up to 4MB of buffer space per line. (A single line of log from Nextcloud can sometimes be VERY long. Like, more than 1MB, cuz it errored when I set the limit to 1MB)
  • Did a lot of styling. I used Dracula Theme’s color pallets. UI looks much better now!
  • Now the CPU has a history graph. (I used textual’s Sparkline for this, alongside a circular buffer for a tiny bit more efficient storage. (but then realized I could have just used dequeue)
  • Previously the widgets didn’t returned data right away. I forgot to assign a worker to the async update functions. for the CPU, RAM, and DISK, I just got rid of async. For the custom commands I ran them in workers.

Finally, I draw a new logo in Inkscape!

Attachment
Attachment
Attachment
Attachment
0
khr519

I added some lines and stars to the QuickDash ASCII art so that it looks more… ‘dashing’
(sorry :P)

I also fixed settings live loading. Previously, the watchfiles awatch only watched the settings file itself. But turns out vim deletes and recreates files…? (At least that’s what it said in the watchfiles logs, which means watchfiles can’t watch the file after I change the file with vim) So I just made watchfile watch the whole directory, which solved the issue.

Also the settings file is now jsonc not json. I want to comment out parts of the container definitions when for example my mc server is no longer running.

  • The disks can be configured in the settings file as well
    ++ For some reason, after I made the disk paths configurable, the CPU widget refused to show up. Ill fix that next time…
Attachment
0
khr519

I finally implemented live loading the configs. If the json setting file is updated, the watchfiles library catches it and updates the commands, texts, etc… Only problem is that it works only once :P Ill fix it tomorrow probably.

Also, I got rid of the docker sdk and just went back to using asyncio subproc shells. I think this way is better because I can use the same function on LXC’s and VMs later on.

I am still using eval on the custom commands parts DX if anyone has an idea to replace eval it would be very appreciated! :)

Attachment
0
khr519

Made the CPU part display more info.
Also the disks arn’t placeholders now. (only problem, I use btrfs so the root and home subvols just return the same usage…)
Finally got the Docker SDK log view working. I really need to get used to async…
Also the ‘custom’ command widget is kinda working. (It uses EVAL. very customizable. gota fix that someday)

Attachment
0
khr519

I needed a TUI dashboard for my homelab so that i can ssh with my phone and see the stats easily.
I wanted a btop like smooth TUI so i decided on using Textual.
I first created the ram and cpu stat windows.
The progress bar was a lot of pain to render properly :(

Attachment
Attachment
1

Comments

khr519
khr519 2 months ago

The SSD’s are placeholders. I only have 1T :)