obbrowser is a very simple script which displays files and directories in the Openbox menu. It recursively browse the filesystem through openbox3 pipe menus. (related to fbrowse-tray)

The following line needs to be added inside the menu.xml file:
  <menu id="obbrowser /my/dir" label="Disk" execute="obbrowser"/>

Or, if you are using the obmenu-generator, add the following line inside the schema.pl file:
  {pipe => ['obbrowser /my/dir', 'Disk', 'drive-harddisk']},

The script supports a large variety of icons, thanks to File::MimeInfo module.

Github: https://github.com/trizen/obbrowser
AUR link: https://aur.archlinux.org/packages/obbrowser/

Simple version, in C++:

Simpler version, in Go: