Missing Features List
Rockbox’s theming engine is incredibly rich as it is, however there are some parts of it that I believe have a high potential to go further and make the user experience even better. I intend to slowly get to some of these over time, but if you’re a developer interested in taking on some of these do consider giving me a shout.
Better Album Art
Album art is one the more basic parts of the theming engine, with just a single tag allowed per file. This makes dynamic features and different positions impossible. For most themes, this isn’t an issue. But for those that have Lockscreens, it can be difficult to fit it in (adwaitapod suffers from this issue for example).
There is already a patch for this from 10 years ago, but unfortunately was never merged and the author soon stopped contributing. The solution proposed is actually quite good, and if I’m correct it was designed in mind to add support for displaying previous and next playing song’s album art.
Bonus addition would be adding a feature to these to set corner radius. Currently adding anti-aliased rounded corners to Album art is a bit complicated.
Nesting %St tags
The Setting tag %St(..) is an incredibly useful tag, allowing you to grab information from any setting in Rockbox, however I believe with a small change to behaviour it can fill in some important gaps in the theming engine.
Allowing Setting tags to be nested, especially inside other Setting tags, opens up to the possibility of theming the Quickscreen. Currently you can get the name of the Quickscreen items (using %St(qs top) etc.), but this doesn’t give you the status of the item. Nesting Setting tags would let you use something like %St(%St(qs top)) to solve this.
Allowing other tags, like the %dr rectangle drawing tag or %Vf foreground colour tag, to use Setting tags would also solve a long problem of themes not being able to access the user’s menu selector colour (among other colour settings).
Viewport non-render case
Currently, if a menu viewport is set to have zero width and height, it will still render the contents in some situations. It’s not very consistent however. In some contexts like the Quickscreen, doing this will actually cause Rockbox to crash. Turning off viewports is important for features like Lockscreens, custom Quickscreens etc.
This is more of a bug fix than a feature request, but I believe a good solution here would be to not display the current page’s menu/system display if a menu viewport with zero width and height is turned on.
Theme tag for manual screen refresh
A lot of complex theming involves working around the limitations of Rockbox’s viewport refresh system. For example, changing the size of a menu viewport while the theme is running will not update the viewport on screen, and it won’t update until a refresh is applied (commonly by changing screen).
Having a tag that can be used (albeit would want to be done sparingly) to call a refresh would alleviate a lot of issues and headaches. It would remove the need for things like “scroll to refresh” and certain bugs with menus being changed, improving user experience a decent amount.
Tiling Image tag.
A tag to tile a set image across a desired area would be massively helpful. I suspect it would just need to work like %xT(image).
Solution for two line text
Displaying text over two lines is a great feature in my opinion, and one I’ve tried to create by hand in the likes of Themify. However this is massively imperfect and results in words being cut in half. My solution is mind for this was to detect the presence of a space at certain parts of the song name, and display the text around that, but detecting spaces is not possible currently.
Adding some way of detecting spaces could solve this problem, or perhaps some way of display text over two lines could be added to the theming engine.
Page directory tags
There’s a tag for the current playing song’s directory information: %d(n), which gets you the title of the 1st, 2nd, etc directory of the song’s filepath.
I think creating an analog of this for the current page would open up the ability to theme pages in the Database and File explorers.
For example, in the database you could have styled pages for artist or album pages specifically, using the following:
%?if(%l(2), =, Albums)<%Lt>
Artist art tag
This is a far bigger change, even than it would seem at first glance, but my proposal would be to add support for Artist images in Rockbox.
These could be used to show the current song’s Artist in the player. But it could also be used in the Database to give a more rich interface.
This would however require actually obtaining art of artists. There’s existing methods of doing this, but you’d require some kind of software to generate this. It’s more of a pipe dream than anything, but I can see myself in the future adding it to a theme and building a script users can run to add this functionality themselves.
Song Metadata tags for menus
Currently for the Database menus, Rockbox will display the song’s filename and length in a single line of text. It’s great for simple themes, but I think this could be split up into different tags for use with the “Skinned Menus” feature.
Visually, this will help create more beautiful and informative Database menus. Something which I think would help user satisfaction, as the menu experience is complained about a lot in iPod communities.
This feature would depend on having Page directory tags to be useful