#!/usr/bin/ruby
var apps = [];
var desktopFilesPaths = [%d'/usr/share/applications'];
desktopFilesPaths.each { |path|
path.is_a(Dir) || next;
path.open(\var dir_h) || next;
var counter = 0;
dir_h.entries.shuffle.each { |fullpath|
fullpath.is_a(File) || next;
fullpath.to_s ~~ /\.desktop\z/ || next;
fullpath.sysopen(\var fh, File.O_RDONLY) || next;
fh.sysread(\var content, fullpath.size);
content.decode_utf8!;
var fields = Hash();
var regex = /^(\w.*?)=(.*\S)/m;
while (var match = content.gmatch(regex)) {
var (key, value) = match...
fields{key} = value
}
apps.append(fields);
counter++ == 3 && break;
}
}
say apps.rand;