For those that haven't seen it yet, freedesktop.org has just come out with the production release of Portland, their common interface to desktop resources.
While Perl already has a cross-platform unified interface for temporary files via File::Spec, read-only shared data via File::ShareDir, and user resources (home directory, documents, music, and user-specific application data) via File::HomeDir, we don't yet have an abstraction for desktop resources.
This includes things like icons and icon registration, file type associations, and launcher integration (the "Start" menu on Win32 etc).
Part of the problem has been the fractured nature of the implementation of these features on Free Software Desktop platforms.
With the release of the Portland 1.0 spec and the xgd-utils tools, we now have a reasonable common platform for adding program launchers, setting file type associations and so forth, and so it should now be achievable for us to write a single Perl API that abstracts away the installations issues on all platforms.
The first step here is to provide an interface to the Linux/FOSS-specific Portland functionality. Ideally this will mean an API clean enough that we can wrap around the xdg-utils directly for now, while having the option later chaing the underlying implementation to use the Net::DBus directly.
With that working, I plan to implement some form of module or series of modules that works in a cross-platform way to achieve installation and introspection tasks relating to the desktop.
Since I don't have a Linux desktop, I'm unable to write this Portland module myself.
So if you have a Linux desktop, and you'd like to help advance the cause of Perl and CPAN on the desktop, I'd love to see someone write this xdg-utils functionality.