Title: Port of the week: pmenu
       Author: Solène
       Date: 12 March 2021
       Tags: openbsd
       Description: 
       
       # Introduction
       
       This Port of the week will introduce you to a Pie-menu for X11,
       available on OpenBSD since 6.9 (not released yet).  A pie menu is a
       circle with items spread in the circle, allowing to open other circle
       with other items in it.  I find it very effective for me because I am
       more comfortable with information spatially organized (my memory is
       based on spatialization).  I think pmenu was designed for a tablet
       input device using a pen to trigger pmenu.
       
 (HTM) Pmenu github page
       
       # Installation
       
       On OpenBSD, a pkg_add pmenu is enough, but on other systems you should
       be able to compile it out of the box with a C compiler and the X
       headers.
       
       # Configuration
       
       This part is a bit tricky because the configuration is not obvious.
       Pmenu takes its configuration on the standard input and then must be
       piped to a shell.
       
       My configuration file looks like this:
       
       ```pmenu configuration file
       #!/bin/sh
       
       cat <<ENDOFFILE | pmenu | sh &
       IMG:/usr/local/share/icons/Adwaita/48x48/legacy/utilities-terminal.png        sakura
       IMG:/usr/local/share/icons/Adwaita/48x48/legacy/applets-screenshooter.png        screen_up.sh
       Apps
               IMG:/usr/local/share/icons/hicolor/48x48/apps/gimp.png        gimp
               IMG:/home/solene/dev/pmenu/claws-mail.png        claws-mail
               IMG:/usr/local/share/pixmaps/firefox.png        firefox
               IMG:/usr/local/share/icons/hicolor/256x256/apps/keepassxc.png        keepassxc
               IMG:/usr/local/share/icons/hicolor/48x48/apps/chrome.png        chrome
               IMG:/usr/local/share/icons/hicolor/128x128/apps/rclone-browser.png        rclone-browser
       Games
               IMG:/home/jeux/slay_the_spire/sts.png        cd /home/jeux/slay_the_spire/ && libgdx-run
               IMG:/home/jeux/Delver/unjar/a/Delver-Logo.png        cd /home/jeux/Delver/unjar/ && /usr/local/jdk-1.8.0/bin/java -Dsun.java2d.dpiaware=true com.interrupt.dungeoneer.DesktopStarter
               IMG:/home/jeux/Dead_Cells/deadcells.png        cd /home/jeux/Dead_Cells/ && hl hlboot.dat
               IMG:/home/jeux/brutal_doom/Doom-The-Ultimate-1-icon.png        cd /home/jeux/doom2/ && gzdoom /home/jeux/brutal_doom/bd21RC4.pk3
       Volume
               0%        sndioctl output.level=0
               10%        sndioctl output.level=0.1
               20%        sndioctl output.level=0.2
               30%        sndioctl output.level=0.3
               40%        sndioctl output.level=0.4
       ENDOFFILE
       ```
       
       The configuration supports levels, like "Apps" or "Games" in this
       example, that will allow a second level of shortcuts.  A text could be
       used like in Volume, but you can also use images like in other
       categories.  Every blank appearing in the configuration are tabs.
       
       The pmenu itself can be customized by using X attributes, you can learn
       more about this on the official project page.
       
       # Video
       
       I made a short video to show how it looks with the configuration shown
       here.
       
       Note that pmenu is entirely browseable with the keyboard by using tab /
       enter / escape to switch to next / validate / exit.
       
 (DIR) Video demonstrating pmenu in action