Missing Features List

This page serves as documentation for my plans to extend the system which powers themes in Rockbox. This current plan aims to extend the abilities available to themes while following the intentions which the theme engine was built around.

Table of Contents


Currently Working On

These are features I’m currently working on programming within Rockbox’s source code.

Themeable Quickscreen Abilities

I’m currently working to add theme tags which expose the data of the Quickscreen shortcuts feature. There are three tags in this design, %QS which retrieves the title of a quicksetting, %Qs which retrieves the output of a quicksetting and lastly %QI which retrieves a number that can be attributed to an icon in an image array. These are used like the following:

%QS(left) #eg output: Shuffle 
%Qs(left) #eg output: On
%QI(left) #eg output: 3

Exposed Line Selector & Separator Colours

Currently the only exposed colour settings are the Foreground and Background settings. However there also exists options to change the colours of the menu item selector and a colour for a line separating each menu item. These currently only affect Rockbox’s default menu and cannot be used for the theme-able menu feature, massively limiting the real-world use of it. I’ve yet to decide a final tag and functioning for this feature.

Planned Features

These features are ideas of things I’d like to explore adding to the theme engine in the future. I’ve added the ones I want to look at first at the top of the list.

Tiling Image tag.

A tag which can tile an image across a given viewport. This could be useful for interesting backgrounds, or for reducing the size of assets needed if a design in your theme is simple enough that it could be tiled instead.

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>

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.

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.

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.

Distant Plans

These are features which I would love to see the theme engine capable of in order to improve user experience on Rockbox devices. However they would require changes that are on a scale different to the other items on this list and would need a lot more experience time, and convincing of the core dev team.

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