Build & Maintain Help Across Desktops

Forum Forums General Tips and Tricks Build & Maintain Help Across Desktops

  • This topic has 101 replies, 6 voices, and was last updated Dec 21-10:27 pm by BobC.
Viewing 15 posts - 16 through 30 (of 97 total)
  • Author
  • #30062

    I should look more into Rofi.

    Manyroads, your pics of what you created look real nice. I don’t remember seeing them when I looked previously, maybe I didn’t scroll up to see them. They look better than what I was thinking of.

    Skidoo, yes, I think you understood, a hotkey that notices what window you are in, and then calls the custom help that I would create for the programs I need help for, with an option a link to the normal help file or website for that program. The “others” thing was a reference to instead of going directly to the help for the active window, instead popping up a list of help screens with the one that was active as the default, and if possible with the window manager as the option above and the custom help options for the other active window programs underneath. With respect to your recoll idea, I usually use the internet to search for normal help for things like command line syntax, but sometimes it takes a while to sift for ideas/answers.

    • This reply was modified 1 year, 5 months ago by BobC.

    calls the custom help that I would create for the programs I need help for, with an option a link to the normal help file or website for that program.

    You can use cherrytree to maintain notes for your per-application custom help (searchable in-app, across all nodes) and when you find additional related content in webpages and elsewhere, dragging (or copypaste) from browser urlbar onto a note will autocreate a clickable link within the note… or you can copy selections (including images) within a webpage and paste into your custom note, so that you won’t necessarily need to revisit that remote document.

    As for the “context-sensitive” spec, it’s reasonable to expect that most snipped content will arrive from a web browser window. Even if the watcher script would parse the window titlebar text, the relevance of that text (could be blank, or just a site name, or just a raw url) is unreliable. Double-clicking to select a word in browser (or click+drag to select a phrase), then hotkey to raise cherrytree and “Shift+Ctrl+F” followed by middle-click, and you can initiate a search without having typed out any search string.


    Thanks, Skidoo. I’m not familiar with Cherrytree, but familiar with the concept. I am trying making a spreadsheet out of my keyboard layout for IceWM and will add a couple notes and links, will import that into CherryTree and see if I can get that to work first. I like manyroads idea of using something easy to remember and will probably go with super F1. I have to look at the startup options for Cherrytree. If it will let me open it pointing to something in particular, I may try a second way of going in using a little script off a 2nd hotkey (like super F2 or super F7) to identify the current active window, and then pass that in on startup to take me directly to my help for that if found. Thanks for the tip on search.

    BTW, My biggest challenges remembering keys are with IceWM and MidnightCommander. There are others too, but those would be the initial ones. Maybe I should add keys as I find that I didn’t remember them, or instead reassign them to something better that I can remember and document it.

    • This reply was modified 1 year, 5 months ago by BobC.

    The program I use can be found here on github named cheeet works well with i3wm as I use rofi as a launcher.

    Github cheatsheet

    Also sorry for the double posts I have no idea why this has start to happen ?

    • This reply was modified 1 year, 5 months ago by Koo.

    T430 i7-3632QM 16gb , antiX-19.2.1-runit_x64-base Hannie Schaft 29 March 2020 , 5.8.16-antix.1-amd64-smp


    AFAICT, cherrytree lacks a commandline option to initiate a search

    Instead of “importing” from spreadsheet, you can likely drag select a portion of the cells (or selectAll) and copypaste, or drag, into a cherrytree note pane… with columns/tabs, along with bold or italic attributes, preserved in the pasted content.

    an alternative:
    sudo apt install zim
    Mentioning zim b/c it definitely accepts commandline search querystring.
    Unlike cherrytree, which uses a sqlite db as its datastore, zim saves notes + attachments to myriad individual files within a deep maze of subfolders.


    Skidoo, I see cherry tree has a go to node option on startup, so if I name then the same as they show up, I should be good.

    Also, I may try to make my keyboard layout as pc105 pictures instead of spreadsheets. I think it would be quicker to find things that way.


    “cherry tree has a go to node option on startup”

    tested using a cherrytree file ~/myhelp.ctb
    a commandstring
    cherrytree ~/myhelp.ctb -n ‘bogus name here’ -w
    launches cherrytree+myhelp if an instance isn’t already running
    or raises the cherrytree+myhelp window
    and does not disturb my (loaded at session startup) ongoing cherrytree+photonotes instance.
    Because no node named ‘bogus name here’ exists,
    cherrytree displays the most-recently-visited node from the lastrun ~/myhelp.ctb session.
    So yes, if you pre-populate a “myhelp” ctb with nodenames matching those of frequently-used programs items, it would be suitable for use by a context-sensitive help mechanism.

    ###    get the PROCESS NAME associated with the currently-focused window
    cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
    ###    if the process name is too vague, e.g. "python"
    ###      (maintain a blacklist?)
    ###    fallback to grabbing the window name, aka "title"
    xdotool getwindowfocus getwindowname
    ###    or grab and parse the associated commandline string
    cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/cmdline
    ###    and pipe the result to
    cherrytree ~/myhelp.ctb -n $1 -w&

    If you would keep the “myhelp” cherrytree instance continually running,
    a keybind-ed “grab the exact title of currently focused window” script would be useful
    toward creating new holding-pen nodes.

    xprop -spy -root _NET_ACTIVE_WINDOW | while read -r zig; do echo $(xdotool getwindowfocus getwindowname); done

    a long-running script can use that oneliner or similar to provide our to-be-matched “nodename”.
    All that remains to be done (at the moment I’m typing this) is piping that output to a cherrytree commandstring.


    Skidoo, thanks again for the ideas and code…

    And what to hook it to?

    I don’t know if you ever did this, but I used to have a text file with all my keys and function keys listed as a chart, and one for the function keys that I could print and tape down so I could see it above and below the keys.

    Fast forward 30 years and here we are again…

    What if we had a picture of each key and on it, color coded and columnarized, each of the shift, ctrl, alt, super, permutations of the available functions when pressing that key… And then we assemble them into chunks of a puzzle the shape of a keyboard, shrink the chunks into pics. And you click a chunk pic to zoom in on it and see all the possibilities for those keys.

    The key to it is that it needs to be text driven, I think, where the text becomes an attribute that could be reassigned to a different key, and then generate new chunk pics when things get changed. And what if another attribute would be a hyperlink for that function if I put the effort in to enter it, that would take me to something explaining that function.

    Do you know a way to get me part way there somehow???? I am thinking maybe the cherrytree could display it. It sees I am running Midnight Commander in the active window, so it pops up my keyboard for that if I created one, else the default one, I click an area of the keyboard, and it shows me what all the keys are set to do.


    Because cherrytree displays the most-recently-used node when a “does not (yet) exist” nodename is requested
    (vs creating a new node, titled to match the -n nodename passed via commandline)
    I’m eliminating cherrytree from consideration.
    The cherrytree author has responsive to feature requests, so we might ask and get that (changed) feature in the future… but it would take {longtime} for version x.YY to trickle into “stable” repositories.

    The zim program (also “keepnote” program) uses individual//separate, external files.
    Keepnote, as with cherrytree, lacks ability to “create a note named -n blahbla, if none yet exists” but I’ll investigate whether something like “touch ‘$1’ && keepnote -n ‘$1’ ” would be a do-able approach.

    In the meantime, I plan to pursue a solution which employs (TBD) geany, mousepad, pluma or some other “tabbed editor”. At the moment, I’m investigating (sudo apt install editra) the possibility of the “editra” tabbed editor.

    Right after my prior post, I arrived at at a “working” barebones proof-of-concept based on window titletext, but quickly discarded it as being intolerably annoying. OMG, the barrage of “hi, I’m here to help” events (‘Find’ dialog, ‘Search’ dialog… ‘Safe File’ dialog, ‘Open File’, ‘SaveAs’ ‘Save Document As’…

    So, contrary to my over-optimistic naive “All that remains to be done” remark, the mechanism begs attention to the following

    ))) before passing as a notename, sanitize the window titlestring ~~ replace spaces by underscores, strip any quotation marks

    ))) possibly expose a configurable truncation maxlength (b/c loooooong notename in tabbed helpviewer scrolls other doc tabs out of view)

    ))) decide whether horizontal, vs vertical, placement of the “notebook tabs” for multiple notes within the helptext viewer app is preferable (or, is a “who cares? doesn’t matter” detail). Unless we discover (or customize) a viewer with selectable vertical tab placement, we’re probably relegated to having a horizontal tabbed layout.

    ))) populate a BLACKLIST of windownames to be ignored, AND recognize that this list will be ever-growing ~~ and that each user will likely want to add custom ignorestrings.

    ))) checkbox——-[] ignore, never ask, for windows havin this exact title
    user would tick (and click OK)… and unless we’re gonna re-re-reparse the blacklist upon every windowfocus change event (!)… user must exit/relaunch the help system in order for the changes to take effect. (No, the script would “killall self && exec self”


    topic title states “across desktops”. Across “workspaces”?

    I’ll post the working demo later today.
    Your latest post, mentioning “text driven”… I’m lost.

    Here’s where I’m headed with the context-sensivite help mechanism:

    In advance, you choose which tabbed text editor shall serve as the helpviewer.
    Preferably it will be an editor that you’re not already using day-to-day.
    For sake of example, you choose (and install) editra or mousepad.
    You launch it, set its prefs for your fave font, color scheme, etc and resize it and place its window “off to the side”. Now right-click its titlebar (or whatever is appropriate for the window manager you are using) and configure the wm to alway reopen that app’s window at the same position and same dimensions.

    If’n the bobHelpnotes utility is launched via a line added to session startup file, each time you move between windows, or launch new programs… bobHelpnotes detects any windowfocus change event, and automatically loads into the {mousepad} help viewer the correct helpnote associated with the currently-focused window. If no previously-created note exists for that particular program, bobHelpnote creates one, on-the-fly. You have both an opportunity to glance at your previously drafted list of hotkeys (or tips) _AND_ an opportunity to jot additional notes related to the specific program at hand.

    Hopefully your chosen tabbed editor has an autosave feature.
    I haven’t yet figured out how where edit (session shutdown script?) to add a (a prompt?) reminding to cleanly save/exit the tabbed editor and to kill the bobHelpnotes “daemon”. By launching it from within a terminal emulator (&bg) instead of at session startup, its process would be killed along with the terminal emulator -provided shell. Lxterminal and similar can usually be configured to prompt at exit if child tasks are still running, and that’s how (vs start of session) I personally would probably choose to launch the context-sensitive help utility.


    Yes, cherrytree had only the ability to display a picture also, no ability to click and open it in another program or to zoom in/out easily, so it wouldn’t work well with a graphic of the keyboard showing what the keys do


    For THAT (contextual help on-demand, vs continually displayed)


    I (sudo apt install zim) installed zim.
    During firstrun, zim prompted to create a default notebook. IIRC, I specified “myhelp”.
    Today, I didn’t remember that detail offhand.
    After downloading the image from your post (SavedAs ~/Pictures/blenderkeys-640×360.png),
    I launched zim and created 2 notes (nodes? zimwiki pages?) named “leafpad” and “blender”.
    While viewing the “blender” page, I used “Insert Image” from zim’s toolbar,
    then saved the zim notebook and closed zim.

    “sudo updatedb && locate blender” because I don’t know where zim stores its assets.
    (and now, while typing this, I realize that I apparently created a zim “page” named “first”
    then added “leafpad” and “blender” as SUBpages nested under “first”)

    “zim –help”
    usage: zim [OPTIONS] [NOTEBOOK [PAGE]]

    Contrary to syntax indicated “zim –help”, my various attempts to “view a specified node” failed.
    zim blender
    (so what the hell was the point in settng a default notebook?)
    zim myhelp blender
    zim ~/myhelp.nbk blender
    Via “locate blender”, I discovered that zim (confusingly, IMO) has applied “.txt” to page asset filename. Trial-n-error, I discovered that supplying the page asset pathstring (zim ~/myhelp.nbk/first/blender.txt) a successful zim “goto node” launchstring.

    So, to achieve on-demand, popup help, you can (I tested)
    simply create a zim wiki containing “pages” named to match program names (aka, procnames)
    and create a keybind to call this one-liner launchstring:
    zim ~/myhelp.nbk/first/$(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm).txt

    You will probably want to insert a keymap image at TOP of the wiki page
    ( top= before/above the mandatory pagename hyperlink )
    and you can probably remove the auto-inserted datetimecreated text and/or setup a zimwiki page template.
    Remember, during use (while viewing the popped up wiki page) the page is editable ~~ you can scroll and type additional helptext, or project notes or whatever, or even insert additional images.

    The “page//subpage” hierarchy I had chosen (apparently, but I don’t recall doing so), it affects the pathstring in the example I’ve presented. If you use a flat (no subpages) page structure, maybe you would omit the “first/” substring from the hardcoded portion of the keybind launchstring? Headscratch ~~ upon reopening the zim notebook used in the screenshot, I don’t see any “click to expand” icon denoting a subtree structure. Left pane just shows 4 page items: “blender”, “Home”(bolded), “lxterminal”, and “leafpad”.


    (skeered ta edit the prior post b/c lately the spamfiler has been “eating” my edited posts)


    zim ~/myhelp.nbk/first/blender.txt
    ^—-} no “click to expand” icon is displayed

    zim ~/myhelp.nbk
    ^—-} the “click to expand” icon _is_ displayed


    I suppose the chart isn’t absolutely required, but it sure would make it nice. Add text for notes, and links to other sources, arranged by program, and accessed by the context of what screen you are asking for help from, filtered to eliminate necessary nonsense (ie python in the window name or command string for example), all combined should result in a very usable system that could work on any desktop.

    Yes, I installed zim and I agree it works better. I found that I can click to open a pic in Mirage with it, where I can easily zoom, etc. I need to figure out HOW that blender keyboard chart was created, and if by chance there was a system used to create it, I would like to use it to create charts like that for the programs that are problematic in terms of number of keys that are hard to remember and their functions.

    IceWM is super efficient if you happen to know the key that does what you want, and I don’t know the RoxTerm keys, either (may not be many there), and Midnight Commander has a lot of keys as well, but its problems get compounded by the terminal you use as well as the chosen window manager. Firefox is another one where I don’t recall the keys, where I use it a tremendous amount.

    I have one laptop that doesn’t like my favorite distro, and suspend works, but video won’t resume, but it works ok under Arco, MX, Debian, or PCLinuxOS, so it would be nice to have a help system that works easily almost anywhere.


    figure out HOW that blender keyboard chart was created

    Regarding that blender chart, what’s left to “figure out” ~~ it was manually handcrafted with lovin’ care 😉


    and if by chance there was a system used to create it

    “it” meaning the static background that you will use for your own lovingly crafted helpfile images?

    man xkbprint

    xkbprint :0 -o /tmp/ && gimp /tmp/

Viewing 15 posts - 16 through 30 (of 97 total)
  • You must be logged in to reply to this topic.