In the Part 6 of the FreeBSD Desktop series I would like to describe key components of self made custom desktop environment such as:
- Window Manager
- Status Bar
- Task Bar
- Wallpaper Handling
- Application Launcher
- Keyboard/Mouse Shortcuts
- Locking Solution
- Blue Light Spectrum Suppress
Today we will focus on the third part – the Task Bar. In the next series each of these components configuration would also be described along with eventual needed scripts.
You may also check earlier articles of the FreeBSD Desktop series:
- FreeBSD Desktop – Part 1 – Simplified Boot
- FreeBSD Desktop – Part 2 – Install
- FreeBSD Desktop – Part 3 – X11 Window System
- FreeBSD Desktop – Part 4 – Key Components – Window Manager
- FreeBSD Desktop – Part 5 – Key Components – Status Bar
To quote Wikipedia – “A taskbar is an element of a graphical user interface which has various purposes. It typically shows which programs are currently running.”
While there are dozens of options here after using many them I have narrowed the choice to lighter solutions such as:
- XFCE Panel
You can use classic taskbar like XFCE Panel used in the XFCE desktop environment.
You can also configure Tint2 that way.
But this solution has its drawbacks, it only shows applications that are active on the current desktop, using 4 or more virtual desktop is a ‘standard’ for most power users so not knowing what is happening on the other desktops is not acceptable.
One of the greatest taskbars of all time was/is the Mac OS X Dock (now macOS Dock).
It also does not cover virtual desktops but it has a feature that it shows applications from all desktops and if you click that application icon, then it will switch you to that application on that desktop. It also has an indicator showing if application is launched or not which also helps.
There was time, when You could use Fbpanel to create pixel-perfect clone of Mac OS X Dock, without all features of course, but still.
Unfortunately it worked only till 4.3 version of the Fbpanel, with later releases this pixel-perfect custom themes was not possible because of forced spacing between elements and it looks like the Fbpanel development stopped somewhere in 2010.
Currently the best and lightest solution for providing the dock-like functionality on open desktops seems to be Plank – the dock that originally was written for the Elementary OS Linux distribution. Besides being light and having nice look it also offers most important features of the original Mac OS X Dock like switching to the application and showing an indicator for already running applications.
The ‘original’ Plank theme used in Elementary OS looks like that.
While its quite nice it takes definitely too much desktop space, thus I prefer to configure it little more lean way. Also styled along with Dzen2 and Tint2 colors/style.
While its one of the best solutions out there lets not forget Tint2. One of the nicest features of this small beauty is that you can configure it to show all applications from all virtual desktops … and even provide separate launcher … and system tray … and many other useful things which we will not use, such as clock that we already have on the Dzen2 status bar.
Here is an example of Tint2 configured in such way.
I do not find it usable nor efficient either that way, but habits of Windows like desktop systems die hard for some 😉
The Lxpanel can also be a launcher but does not have all needed functionality and flexibility that Tint2 offers.
While Lxpanel is low on resources the Tint2 taskbar uses even less of them while doing more, so I mention Lxpanel here just for historical reasons as I used it in the past.
Lets compare how are these solutions on the system resources. I have omitted Fbpanel in here because its no longer usable as a taskbar solution.
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 53862 vermaden 5 20 0 51284K 36376K select 1 0:03 1.07% plank 83288 vermaden 1 20 0 33608K 28480K select 1 0:00 0.00% xfce4-panel 43380 vermaden 1 20 0 32484K 26332K select 0 0:21 0.00% tint2 94650 vermaden 2 20 0 50752K 27652K select 1 0:00 0.00% lxpanel
The Tint2 takes about 25 MB of RAM. While Plank taking a little more – 35 MB of RAM – its usability and nice look can be justified to take little more.
The final result along with Dzen2 status bar on the top along with Tint2 for virtual desktop overview and Plank running on the bottom will look like that.
The Plank taskbar on the bottom is optional. Once I got used to Tint2 and Dzen2 setup on the top the Plank became optional/redundant, but some people prefer it for their desktop usage patterns.