Build & Maintain Help Across Distinct Desktops- Part 2

To begin this second post of shared help series,  I will provide a bit of detail on the environment this help system is designed to support. You should consider this description as an English language version of the use-case for this tutorial (in all its parts).

I have built the base system to support three different, distinct, and unique desktop arrangements and toolsets; these include:

  1. xfce4.14 with zentile (to provide tiling functions)
  2. bspwm (Binary Space Partitioning Window Manager)
  3. Herbst Luft Window Manager (herbstluftwm ~ hlwm)

Across the three desktops there exists a common base of applications including:

  • thunderbird (email)
  • firefox & chromium (browsers)
  • calibre (eBooks)
  • kitty multiplex-terminal
  • software development tools (ie. geany, ghostwriter, rofi, atom, zenity, yad, etc.)
  • graphics tools (ie. gimp, viewnior, gthumb, etc.)
  • Multi-system synchronization and dynamic backup via Dropbox

In order to make certain that users are able to both “access” and remember “how-to use” most of the complex tools across the differing desktops, I have elected to build a set of common “help-dialogs”.

I, also, elected to create as many consistent Keybindings as I dared. But beware!  Sometimes, “it is not nice to fool mother nature”. There are some situations where Keybindings are by nature linked to particular environments; and they are not easily or wisely altered. If you know which ones to avoid then don’t mess with them. Sadly in my experience, the best method for uncovering those “incompatible little buggers” is to watch your system crash, when you tread where you ought not.

After a lot of crash & burn experience, I believe the commonality I have here works well; at least it does for these Desktops (bspw, hlwm, and xfce).  Be advised, your mileage may vary when you do this at home.

Each of the dialogs (tools) are accessible from all desktops and operate per specification. They are in fact identical. Each of the Help Dialogs are accessible via Super + a function key. The Super key being the Windows key.  (Note: I do not do things on Apple hardware, sorry.)  Each of the first 6 dialogs presents itself as a Zenity Dialog box.  The last help-aid (Active Applications List) is presented via Rofi and was highlighted in the first post of our little series..

Super + F1 affords access to an Index of Keybinding (Indices). This functions essentially as the Table of Contents for all the Help Dialogs.

Super + F1- Keybinding Index shown on a bspwm Desktop.

Super + F2 provides a guide to all Standard (Common) Application & System Keybindings.

Super + F2- Common Keybindings shown on a bspwm Desktop.

Super + F3 provides guidance to specific/unique bspwm help & Keybindings. (You’ll note that there are internet links.  They actually work, yay.)

Super + F3- bspwm Keybindings shown on an xfce Desktop

Super + F4 offers guidance to specific/unique hlwm help & Keybindings. You will note that there is an internet link.  It, also, functions.

Super + F4- hlwm Keybindings shown on an xfce Desktop

Super + F5 affords guidance to specific/unique xfce4 with zentile help & Keybindings. You will note that there are internet links.  These, also, function. The material here is largely orient towards zentile Keybindings.

Super + F5- xfce-zentile Keybindings shown on an hlwm Desktop

Super + F6 offers a list of Kitty Terminal Keybindings. This is a huge list.  Kitty is one seriously functional multiplex-terminal.

Super + F6- Kitty Terminal Keybindings shohwn on an hlwm Desktop

The Help Dialogs were each built the following toolset.  I don’t know how many approaches and tools I tried before settling on these… too many. The tools I use include:

  • ghostwriter– This tool is used for initial help authoring and basic formatting. I, also, use the tool to export my initial markdown into an html format. Examples of my original markdown files are available here for download.
    Initial Markdown Download Files 
    The contained in this archive in draft form; the html files are revised from this initial markdown work. These files do not match the released html. (Caveat emptor). In development parlance, these are intermediate work products.
  • geany– is used to clean up and improve the Help Dialogs’ html as well as tweak image positioning and hmtl coloring/ formatting for use in zenity. (If you don’t do this then the Zenity popup dialogs will look odd and inconsistent.) Examples of my final html files are available here for download.
    Completed html Download Files
    These files should be usable, if you wish to work from them for your purposes.
  • zenity– is used as the presentation vehicle for the resultant help. The Zenity setup and commands are contained in the code block below.
  • sxhkd– provides the actual Keybindings for the hlwm & bspwm zenity Help Dialogs. Xfce is the odd-one out and requires its own set of links built into the xfce keyboard link function.

For an excerpt of the sxhkdrc code see below.

sxhkdrc code:


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

# Show Keybinding Index
super + F1
zenity --text-info --width=640 --height=640 --html --filename=/home/mark/.local/share/help-files/keybinding-index.html --ok-label="Quit"

# Shared Keybindings
super + F2
zenity --text-info --width=640 --height=640 --html --filename=/home/mark/.local/share/help-files/shared-keys.html --ok-label="Quit"

# bspwm help
super +F3
zenity --text-info --width=640 --height=640 --html --filename=/home/mark/.local/share/help-files/bspwm-keys.html --ok-label="Quit"

# hlwm help
super + F4
zenity --text-info --width=640 --height=640 --html --filename=/home/mark/.local/share/help-files/hlwm-keys.html --ok-label="Quit"

# xfce-zentile help
super + F5
zenity --text-info --width=640 --height=640 --html --filename=/home/mark/.local/share/help-files/xfce-zentile-keys.html --ok-label="Quit"

# Kitty Keybindings
super + F6
zenity --text-info --width=640 --height=640 --html --filename=/home/mark/.local/share/help-files/kitty-keys.html --ok-label="Quit"

# rofi Active Tasks
super + F12
rofi -modi window -show window -show-icons -sidebar-mode

Now that you have the basics, you are free to embellish on the approach, as you see fit.  I encourage you to try this out; especially if you want help remembering odd tricks because the application options here are quite vast. Enjoy!

If you find tutorials like this useful and/or helpful, please…

or… Support us, get “bling”!

Buy “Cool” Linux “Stuff”.


Remember, like with all of my work, I am able to provide the following assurance(s):
  • It is almost certainly going to work until it breaks; although I have to admit it may never work and that would be sad.
  • When/if it does break, you may keep all of the pieces.
  • If you find my materials helpful, both you & I will be happy, at least for a little while.
  • My advice is worth every penny you paid for it!