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
-
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.
-
Kodi 21.0 Open-Source Entertainment Hub Released
After a year of development, the award-winning Kodi cross-platform, media center software is now available with many new additions and improvements.
-
Linux Usage Increases in Two Key Areas
If market share is your thing, you'll be happy to know that Linux is on the rise in two areas that, if they keep climbing, could have serious meaning for Linux's future.
-
Vulnerability Discovered in xz Libraries
An urgent alert for Fedora 40 has been posted and users should pay attention.
-
Canonical Bumps LTS Support to 12 years
If you're worried that your Ubuntu LTS release won't be supported long enough to last, Canonical has a surprise for you in the form of 12 years of security coverage.
-
Fedora 40 Beta Released Soon
With the official release of Fedora 40 coming in April, it's almost time to download the beta and see what's new.