FreeBSD Desktop – Part 4 – Key Components – Window Manager

In the next parts 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

To not make the posts huge today’s article would focus on the first component – the Window Manager. In the next series each of these components configuration would also be described along with eventual needed scripts.

You may want to check other articles in the FreeBSD Desktop series on the FreeBSD Desktop – Global Page where you will find links to all episodes of the series along with table of contents for each episode’s contents.

Window Manager

We will use Openbox, it was already installed in previous part of the series. Why Openbox and not something else? I do not have any exact answer that will make you feel that its the best possible choice. The arguments for it are:

  • It has good official documentation.
  • Lots of online materials/howtos/blogs about it.
  • Used as Window Manager in many Desktop Environments.
  • Very fast and very low on resources (written in C language).
  • Can support tiling with external utilities like tile.sh or pytyle.
  • Fully compliant with EWMH (Extended Window Manager Hints) standard.
  • Fully compliant with ICCCM (Inter-Client Communication Conventions Manual) standard.
  • Allows generating dynamic menus with scripts.
  • Chosen as Window Manager of the Year by LinuxQuestions.org Members Choice Awards.
    • 2010 with 13.91% of all votes [3rd]
    • 2011 with 15.84% of all votes [1st]
    • 2012 with 17.50% of all votes [1st]
    • 2013 with 18.88% of all votes [1st]
    • 2014 with 13.12% of all votes [2nd]
    • 2015 with 23.98% of all votes [1st]
    • 2016 with 24.04% of all votes [1st]
    • 2017 with 24.22% of all votes [1st]
    • 2018 with 24.64% of all votes [1st]
    • 2019 with 23.13% of all votes [1st]
    • 2020 with 23.03% of all votes [1st]
    • 2021 with 20.49% of all votes [1st]
  • Can look really awesome – several examples below.

The Axonkolorish Openbox theme.
openbox-theme-axonkolorish

The Mint Openbox theme.
openbox-theme-mint

The TWM Openbox theme.
openbox-theme-twm

The Violetgrey Openbox theme.
openbox-theme-violetgrey

You may also want to check other categories of the LinuxQuestions.org Members Choice Awards from the last 3 years. You may find solutions and applications that You never knew existed.

Resources

The Openbox memory usage on my system is about 25 MB of RAM. The total CPU usage is also very low as these 45 seconds are from more then one day of using system along with suspend/resume usage.

  PID USERNAME      THR PRI NICE   SIZE    RES STATE   C   TIME    WCPU COMMAND
50467 vermaden        1  20    0 37724K 26116K select  0   0:45   0.00% openbox

Configuration

I will not describe here all possible Openbox configuration options, the future series would contain setup that seems to work best for daily use (at least for me). If You would like to increase your knowledge about Openbox then check the official documentation and other online resources such as these:

If somehow you will not find Openbox usable then You can try Fluxbox or PekWM. I have used Fluxbox for years and it also served very well all that time.

UPDATE 1

Someone once told me why I moved from Fluxbox to Openbox … or why I did not used PekWM which is also similar in concept. There were ‘small’ things but pretty annoying ones. Below are differences between Openbox and Fluxbox and PekWM that I wrote around 2010 and 8 years later they are still true. It was mostly those icons scaling and ‘margins’ for the desktop that Openbox offers and other small things. But Openbox configuration in XML was a pain at the beginning.

Window Switching Behavior

Proper ‘ALT-TAB’ behavior is only available on Fluxbox and Openbox. PekWM lacks a lot here, check this for more information – http://pekwm.org/projects/pekwm/tasks/210.

While Fluxbox switches between windows instantly, Openbox/PekWM can show list of windows while switching and Openbox can also show black/white border highlight for every window (like Metacity from GNOME 2).​

Workspace Menu

The so-called workspace menu in Fluxbox expands into submenu for each workspace, which makes its useless for fast general usage.

Both PekWM/Openbox provide workspace menu that shows all apps on all workspaces instantly without any submenus, but only Openbox can render all application icons properly here.​

Proper Icon Rendering

Both PekWM/Fluxbox cannot render application icons properly, while Openbox can. Fluxbox renders properly icons in the root menu, but only if you select exact size for the icon (same as actual image size), if image is bigger, its scaled version would be ugly, even when downsized from pretty large image.​

Working Area

At both Openbox/PekWM we can set margins for the workspace, the space on the sides which will NOT be used for windows. To achieve the same on Fluxbox you can only use dome DockApp with displaying transparent PNG file (dirty hack) with do not maximize over slit option. but its only for one side of the desktop, not all of them like in ​Openbox/PekWM.

Actions on Window Bar/Border

At PekWM/Openbox we can define various actions that will happen when clicking/scrolling the window border/bar, some custom commands (like transparency increasing/decreasing with transset-df command), Fluxbox does not offer that​.

Standards

Both PekWM/Fluxbox are NOT fully compliant with NETWM/EMWH while Openbox is (but I never suffered from the fact that they aren’t fully compliant).​

Language

Both PekWM and Fluxbox are written in C++ while Openbox is written in C, which makes it little faster, but its probably hard to notice this on Core 2 Duo class machines these days.​

Other

Both PekWM/Fluxbox support tabs in windows, but I do not remember when I last used them πŸ˜‰ From these two Fluxbox also offers taskbar, but being frank with you, I must say that having so nice workspace menu on Openbox I do not need taskbar any more.​

Command Subshell

If you put something with subshell into Fluxbox root menu – $( ... )Fluxbox will execute that without any problems, while Openbox will throw an error (haven’t checked for PekWM). Same for the alternative ` ... ` syntax.

There are my thoughts on differences between these three WMs.

EOF

27 thoughts on “FreeBSD Desktop – Part 4 – Key Components – Window Manager

  1. Pingback: FreeBSD desktop (4) | 0ddn1x: tricks with *nix

  2. Pingback: FreeBSD Desktop – Part 6 – Key Components – Task Bar | vermaden

  3. Pingback: FreeBSD Desktop – Part 7 – Key Components – Wallpaper Handling | vermaden

  4. Pingback: FreeBSD Desktop – Part 8 – Key Components – Application Launcher | vermaden

  5. Pingback: FreeBSD Desktop – Part 9 – Key Components – Keyboard/Mouse Shortcuts | vermaden

  6. Pingback: FreeBSD Desktop – Part 5 – Key Components – Status Bar | vermaden

  7. Pingback: FreeBSD Desktop – Part 10 – Key Components – Locking Solution | vermaden

  8. Pingback: In Other BSDs for 2018/06/23 – DragonFly BSD Digest

  9. Pingback: FreeBSD Desktop – Part 11 – Key Components – Blue Light Spectrum Suppress | vermaden

  10. Pingback: FreeBSD Desktop – Part 12 – Configuration – Openbox | vermaden

  11. Pingback: FreeBSD Desktop – Part 13 – Configuration – Dzen2 | vermaden

  12. Pingback: FreeBSD Desktop – Part 14 – Configuration – Tint2 | vermaden

  13. Pingback: FreeBSD Desktop – Part 1 – Simplified Boot | vermaden

  14. Pingback: FreeBSD Desktop – Part 15 – Configuration – Fonts & Frameworks | vermaden

  15. Pingback: FreeBSD Desktop – Part 2 – Install | vermaden

  16. Pingback: FreeBSD Desktop – Part 3 – X11 Window System | vermaden

  17. Pingback: FreeBSD Desktop – Part 16 – Configuration – Pause Any Application | vermaden

  18. Pingback: FreeBSD Desktop – Part 17 – Automount Removable Media | πŸ†…πŸ…΄πŸ†πŸ„ΌπŸ„°πŸ„³πŸ…”πŸ…

  19. Pingback: FreeBSD Desktop – Part 2.1 – Install FreeBSD 12 | πšŸπšŽπš›πš–πšŠπšπšŽπš—

  20. Pingback: FreeBSD Desktop – Part 18 – Global Dashboard | πšŸπšŽπš›πš–πšŠπšπšŽπš—

  21. Master One

    I’m in the pre-installation research phase for FreeBSD on my laptop, originally considering KDE5, but thanks to the fantastic resource you have created here I’m now more inclined to give the way you set things up a try instead. Currently I’m wondering if you have taken a look at CWM and what your opinion is on that simpler windows manager that made it into the base system on OpenBSD. Too minimalist? I’m torn between floating and tiling windows management, it should be practical and easy to use and configure in both situations when using the laptop on the go and on my desk with external monitor/keyboard/mouse.

    Liked by 1 person

    Reply
    1. vermaden Post author

      Hi.

      I have considered a switch to tiling window manager, but everytime I do so I see how many things/shortcuts I have already configured in Openbox and then I also realize that I do not need tiling that much (at least this is what I think at the moment).

      I wish Openbox would come with tiling feature but it does not. One can use an ‘external’ solution like pytyle for example … but I was not able to make PyTyle3 work on FreeBSD reliably.

      I recently came across rtile which is tiling for any window manager written in Ruby language. It does its job but … its VERY slow. I expect tiling window manager to switch/cycle windows in ‘no time’ while rtile takes 1-2 seconds to do that – which is too slow for me.

      I also came with my own tile.sh solution, but I never got time to finish it to the point I would consider it usable, but maybe I will finish/rework it some day, at least its very fast πŸ™‚

      I have nothing against CWM, if it works for You better then Openbox then go ahead and use it πŸ™‚

      … and really sorry for the late response.

      Regards,
      vermaden

      Like

      Reply
  22. Abraham Jose

    Hi @Vermaden,
    I have a question – how do you insall icm color profiles for Monitor, Printers etc with this desktop (openbox)? There is a gnome-color-manager, but I suspect it’s embedded into gnome-control-centre now. It’ll be great if you can guide me. Appreciate your hard work in this blog. Thank you.

    Like

    Reply
    1. vermaden Post author

      Thanks.

      On FreeBSD these two for sure can load ICM/ICC profiles.

      xcalib
      # pkg install xcalib

      argyllcms
      # pkg install argyllcms

      You can set/load the desired profile (assuming they are under /usr/local/share/color/icc/ directory).

      // xcalib

      /usr/local/bin/xcalib -d :0 /usr/local/share/color/icc/profile.icc

      // argyllcms (dispwin is installed by that package)

      /usr/local/bin/dispwin -d 0 /usr/local/share/color/icc/profile.icc

      I did not tried that but that its how it suppose to work.

      Hope that helps.

      Like

      Reply
  23. Abraham Jose

    @Vermaden: Thank you for the tip. I hope it works. BTW, there is “colord” and it’s frontend “colord-gtk” which can install icc/icm profiles. I believe gnome-color-manager uses colormgr (from colord). In my Devuan Linux, ‘colormgr get-devices’ lists the installed profiles. Bad for minimalists because, it may pull dbus and gtk dependencies.

    Like

    Reply

Leave a comment