btop++ is a pretty good alternative to htop

I don’t recall where I first read about btop++. I installed it on an Ubuntu 21.10 Parallels VM as a snap package. When I tried to do the same with Pop!_OS, I couldn’t seem to make snap work, in spite of installing it via apt. So I went looking for its source and found it on GitHub ( https://github.com/aristocratos/btop ). btop++ is written in C++. When I downloaded it and unpacked it, I stepped into its top-level folder and ran make. The build process is quite colorful:

I’m very old-school MS-DOS and I always appreciated the inventiveness of the use of colorized text, and of many attempts to create window-like panels on the screen using the PC character set. Seeing btop++’s make process, as well as btop++ itself, again draws my appreciation.

btop++’s source is very compact, and the build is very quick. The product is a single binary in a bin folder. When completely built you can either copy the binary to /usr/local/bin (using sudo), or you can do what I and so many countless others have done, and copy it to your local home bin directory ($HOME/bin or ~/bin), making sure that your home directory bin is in the path.

btop++ produces quite a bit of information that the author has tried to organize into something readable and useful. Some may find it too visually rich. It’s taken me a few minutes each time I’ve started it up to become reacquainted with everything it displays. Each time I grow more comfortable with it and find I can quickly read the overall state of my little system. And besides, I love all the colorized text, so there’s that.

One feature that bears mentioning is that the application understands mouse clicks. For example, if you clock on the word ‘tree’ above the process list, then a tree view is shown. Clicking ‘tree’ toggles the regular view back.

I believe you should give btop++ a whirl, especially if you’re a big htop user.

getting wiringpi to work under ubuntu 20.10 on a raspberry pi 4b w/4gb


Over the years, one of the software tools I came to depend on was gpio from the project WiringPi. There were others to be sure, but I like using WiringPi. I came to take it for granted, so much so, that when its author, Gordon Henderson, decided to deprecate WiringPi and stop supporting it, I was more than a bit shocked. I read Gordon’s reasons for exiting, and I agree with his reasons. I’m not here to hash over those reasons as it’s now been over a year since that happened.

In the mean time I installed Ubuntu 20.10 for the Raspberry Pi 4B on my RPi 4B’s and went about the business of making sure the core set of tools that I use on Raspbian were also available on Ubuntu 20.10. As it turns out, WiringPi is available, but it won’t work.

The reason is that the version available via apt is version 2.50. The version at a minimum should be 2.54 or greater, which was a special release that Gordon provided for the 4B right after he officially stopped supporting WiringPi in general.

So I contacted Gordon, who advised me to look on Github for a copy of his code. I found that, cloned it, and tried to build and install it. It built but failed to link due to a symbol defined multiply times error. That was due to a structure definition in a header file that showed up twice in two object files. I fixed that by turning the explicit structure definition into a typedef. When I tried again, it built and linked and deployed the shared library. After that, gpio ran just fine as shown above.

The link to my fork with the one fix is here: https://github.com/wbeebe/WiringPi

I picked up a branch in the fork. I will probably delete that, as all I care about right now is the mainline code. If I do anything it will be to clean up the warnings I see as the code builds (and there are a fair number now) as well as reducing dependence on the pre-processor. Reducing dependency on the pre-processor means replacing #defines with const constants, allowing the compiler to do its job and treat C/C++ as a strongly typed language.