After I switched from the fluxbox wm to the openbox wm, I noticed in the
docs that for this wm one can generate menu items dynamicly by external
scripts. Below a small perl script that walks through the filesystem
generating menu entries that open a directory with rox. Also, more
interesting, if it encounters AppDirs, program entries are generated.
To use it edit ~/.openbox/menu (or /usr/share/commonbox/menu) to include
for example :
[pipe] (/) {/path/to/menu.pl /} [pipe] (Apps) {/path/to/menu.pl /usr/local/apps ~/apps}
Thus you can open any dir via the '/' entry and apps are automatically
listed under the 'Apps' entry.
File menu.pl given below.
#!/usr/bin/perl $no_idx = $#ARGV; die "$0 needs a directory as argument.\n" unless @ARGV; for (@ARGV) { $dir = $_ || next; opendir DIR, $dir || die "Could not open $dir\n"; print "[exec] (.) {rox $dir}\n" unless $no_idx; $dir =~ s#/$##; print "[pipe] (..) {$0 $dir/..}\n" unless $no_idx; push @entries, map { -x "$dir/$_/AppRun" ? [$_, "[exec] ($_) {$dir/$_/AppRun}\n"] : [$_, "[pipe] ($_) {$0 $dir/$_}\n"] } grep {$_ !~ /^\./ and -d "$dir/$_"} readdir DIR; closedir DIR; } print map {$$_[1]} sort {$$a[0] cmp $$b[0]} @entries;