Build & Maintain Help Across Distinct Desktops- Part 1

Because my “remembry” (to quote Winnie the Pooh) is not what it used to be, I have begun a project to make it easier for me to access and remember keybindings, get help, etc.  across multiple ‘diverse’ desktops. Currently, I use three distinct desktop configurations: bspwm, hlwm and xfce. My primary work environment & desktop is bspwm.

Note: Although I use & maintain multiple environments, the tools and approaches I share in this series are equally applicable in a single environment.

In order to share and demonstrate how I am addressing this challenge, I have decided to provide and share a set of postings on my journey/adventure through this realm. As always, you are free to learn from and avoid my mistakes, or take the results of my learning and use them wherever you please.

The tools I am using to build this “help access system” include:

  • rofi: (because I like it; and, it is powerful and pretty easy to use)
  • zenity: (because it is better documented than yad… and, I only need uncomplicated/simple functionality.)
  • html: to make the zenity materials visible in a consistent format.
  • markup language (via ghostwriter): to write my help materials ‘simply’ and reformat my help documents into html automagically.

To effectively navigate my multiplex-environment (term invented by me???) one of the first things I need(ed) was an index to all my installed applications.  There are any number of tools that can be used to perform this function.  I chose rofi because it works well on the three desktops I’m using.  I tested, reviewed, tried but elected not to use a menu pop-up (like jgmenu) due to some typical menu limitations which are overcome by rofi.

One feature I wanted/ needed was a searchable listing (menu) of all installed applications. I want my menu listing to update and revise automagically as applications ‘come & go’. I, also, wanted my listing/menu to be theme-able across all of my desktops without the requirement of having to rework it from desktop to desktop.

Here’s the rofi command string that produces the menu:

rofi -modi drun,window,run,keys,ssh -show drun -show-icons -sidebar-mode -location 0 -width 360

Here’s what it looks like on hlwm (it looks the same on my other Desktops, trust me…)

Rofi Menu on hlwm

When I add apps, the menu is updated; when I delete them they are removed.  Rofi looks exactly the same on bspwm, hlwm, and xfce. Side benefits are that it is fast and frugal with respect to resource use.

Another feature  I wanted was the ability to see all active processes across the totality of my workspaces. I have 10 on each of hlwm & bspwm.

The beauty of rofi is that performing this task is simple and the list is active-  meaning I can click on any item to access any listed process. If rofi is installed on your system, entering the following into your terminal will produce the image immediately below.

Here’s the code:

rofi -modi window -show window -show-icons -sidebar-mode

Here’s what you get:

Rofi showing active workspaces on a bspwm desktop.

To invoke the rofi functions, I have created keybindings on all my desktops.  The rofi ‘menu/listing’ above is invoked via the F1 key which is the Help key on many PCs… (I figured I could ‘probably’ remember that one). The show active workspace rofi screen is invoked by Super+F12.  I figured I could remember that but I was wrong… so I had to develop additional help aid to point me to my help.

Yes, I need a lot of help!  More on the “help find help” function in my next posting in this series.

If you enjoy and value this work/article, please…