OK, so I have this weird thing that I do.
When I have a problem that I want to solve, I tend to reinvent the wheel, but not in the classical sense. I find that I have the need for tools that solve my problem in a very *specific* way (they have to have a specific feature, or have to suit me perfectly in some way), and thus, when I don't find such tools, I tend to make them myself.
Panorama is one such tool that I developed to suit my own needs (The PND Manager was also such a tool, but I digress). What Panorama is, is that it's an application launcher, or "menu" as some of you would call it, for the Pandora. I wrote it in C++ using Qt 4.6.1.
Now wait a minute, you're all probably thinking, there's already a menu/launcher for the Pandora called "PMenu"; why invent another one? Well, as I said above, I'm picky about the tools I use, and Panorama has quite a slew of features that I didn't find in PMenu.
Panorama currently has the following features:
- Themes are made to adapt to you, and not vice versa. You can of course control a Panorama UI using the D-Pad and the action buttons, but if you want to, you can also use the mouse cursor to click your way through the application, or you can use your fingers and the touch screen to drag and slide around things. There are no restrictions there, either.
- I want it to be possible to extend your theme to do exactly what you want. Want to have an analogue clock in your UI? Panorama does that. Want to show the latest XKCD strip in the background? Panorama can do that. Want to show the number of E-Mails you have relative to how long your "/etc/X11/xorg.conf" file is? Panorama can do that, too.
- Content is seamlessly rendered using WebKit, so you can use HTML inside text snippets, and everything will still render quickly. This is standard Qt stuff, really.
- The Qt Kinetic framework supports everything you can throw at it: BMP, PNG, SVG, TTF, OTF, whatever. Inside of UIs, you can transform elements, apply effects, create transitions and animations etc. The amount of freedom you get is astonishing.
- Contrary to PMenu, Panorama conforms to the FDF menu standard. This means that you won't get previews (screenshots) for your applications, but instead you get access to every application that is installed on your system, compared to just those that are inside of PNDs (you'll even see my Wine applications in the video below! Note that Word 2007 WILL NOT WORK on the Pandora).
- Qt will use OpenGL, OpenGL ES or just a normal rasterizer automatically, so drawing is hardware accelerated.
- I put all the files that might change frequently and that Panorama accesses under the eyes of INotify, so files are reloaded instantly when you change them.
- When you create UIs, you have access to a quite elaborate settings API. You can store custom settings for each UI, or store settings that are shared between UIs. No restrictions apply.
Simplicity (for those who don't like bloat)
Colors (via PMenu compatibility layer)
This screenshot shows a bug with the CPU indicator that has been fixed
Test (first test theme)
Now, some of you might think that Panorama has no chance of becoming widely used, because there aren't any themes for it yet. Well, fear not: it is possible to take any PMenu theme and turn it into a Panorama theme. You just drop a file and a directory into the directory of the PMenu theme, and it can then be used as a Panorama UI seamlessly.
I took my Colors PMenu theme and did just this to demonstrate:
Note that this feature of course isn't completely production ready yet (There are hangups and the Media tab doesn't work yet (don't ask about Previews, they won't work for a LOONG time)), but then again: Panorama as a whole isn't production ready yet, either.
The purpose of this post
I'd like to hear what people think about this, and that means that you *should* try it out!
You can find the source at http://github.com/dflemstr/panorama along with build instructions. If the interest is great enough, I might even provide binary builds for x86_64 (or even 32-bit if I can be bothered) but it would be kinda pointless as I'd have to rebuild them once for every change that I make.
Patches, bug reports (the GitHub repo has an issue tracker) and so on are of course welcome, especially if they are performance related. Panorama isn't slow; it's relatively fast actually, but it uses small hacks here and there and might have memory leaks that, when removed, might make it even faster. It does currently use about 10 MiB of RAM, which isn't much at all, but that number could also be reduced. And, if you think that some feature should be added, just give me the patch and we'll talk about it!
Edited by dflemstr, 04 January 2010 - 09:55 PM.