Monitor hard disk usage with Go
Bright Paint
The Update()
function, which Listing 2 defines starting in line 59, writes new values to the display. It expects two values: the fill level of the hard disk as an integer and the measured fill speed as a float64
value. It passes the fill level to the Gauge
widget of the termui library in line 62 and the fill speed to the pie chart in ui.Pie
.
To make the pie chart paint a positive fill speed in red and a negative one in green, lines 63 and 64 sets the colors of the slices in the pie chart to black and red, and lines 66 and 67 modifies the second color to green in case of a negative speed. Because the graph only processes positive values, line 68 reverses the sign of the negative velocities after the color has been adjusted. The termui Render
function paints all three widgets onto the terminal's canvas in lines 71 and 72, refreshing the display at intervals of one second.
Now how does the pie chart paint the speedometer reading based on a floating-point value for speed between 0 and 1? It does this by calling the fract()
function starting in line 75, which – in turn – produces a fraction using the formula (1-val)/val
, which yields the ratio of the speed's colored area (green or red) divided by the size of the black area. For percentage values, lines 77 and 78 also multiply the numerator and denominator values by 100.
In this way, for a floating-point value of 0.35
, for example, fract()
returns 0.65*100
and 0.35*100
, (i.e., 65 and 35). Consequently, the red speedometer segment shown (see Figure 1) occupies about one third of the total circle, and the remaining two thirds are left black on the left side.
Build Time!
You can compile the whole enchilada with the calls from Listing 3, which retrieve the termui UI and its dependencies from GitHub and then go ahead to build the dftop
binary. When invoking the finished program from the command line, Listing 3 produces the output from Figures 1 and 2. If you run dftop
in a window in a corner of your desktop, you can keep an eye on your remaining hard disk capacity, and prevent overfilling before it's too late.
Listing 3
Compiling
$ go mod init dftop $ go mod tidy $ go build dftop.go ui.go
Infos
- statfs: https://man7.org/linux/man-pages/man2/statfs.2.html
- Listings for this article: ftp://ftp.linux-magazine.com/pub/listings/linux-magazine.com/253/
« Previous 1 2 3
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Red Hat Adds New Deployment Option for Enterprise Linux Platforms
Red Hat has re-imagined enterprise Linux for an AI future with Image Mode.
-
OSJH and LPI Release 2024 Open Source Pros Job Survey Results
See what open source professionals look for in a new role.
-
Proton 9.0-1 Released to Improve Gaming with Steam
The latest release of Proton 9 adds several improvements and fixes an issue that has been problematic for Linux users.
-
So Long Neofetch and Thanks for the Info
Today is a day that every Linux user who enjoys bragging about their system(s) will mourn, as Neofetch has come to an end.
-
Ubuntu 24.04 Comes with a “Flaw"
If you're thinking you might want to upgrade from your current Ubuntu release to the latest, there's something you might want to consider before doing so.
-
Canonical Releases Ubuntu 24.04
After a brief pause because of the XZ vulnerability, Ubuntu 24.04 is now available for install.
-
Linux Servers Targeted by Akira Ransomware
A group of bad actors who have already extorted $42 million have their sights set on the Linux platform.
-
TUXEDO Computers Unveils Linux Laptop Featuring AMD Ryzen CPU
This latest release is the first laptop to include the new CPU from Ryzen and Linux preinstalled.
-
XZ Gets the All-Clear
The back door xz vulnerability has been officially reverted for Fedora 40 and versions 38 and 39 were never affected.
-
Canonical Collaborates with Qualcomm on New Venture
This new joint effort is geared toward bringing Ubuntu and Ubuntu Core to Qualcomm-powered devices.