One of the bits of Calamares that I think is most terrible is the timezone selector. So I was very happy to read Volker’s ideas about timezone-mapping.

Calamares is a universal Linux installer, used by some dozens of Linux distro’s. It is built as a framework, customizable by downstreams to their liking. This is basically a service to the small-distro Linux community, and PRs are very welcome .. but I digress.

Part of installation is picking a timezone to put the system in. Calamares offers a map, and you click on it, and it picks a likely location, and off you go. The technology used is simple: there’s a PNG for each timezone (this sounds familiar). The user clicks on the PNG of the world map, and the mouse coordinates are mapped to a location (longitude and latitude), the location is mapped to a zone offset that gets mapped to a timezone image, and the image is drawn.

Calamares timezone widget

Unfortunately, at some point in the distant past the images were resized, so they’re slightly fuzzy, and the math mapping pixel coordinates to locations is off. I’ve done some adjustments in the past but it’s just infeasible to get it right without starting over. As a consequence, Lisbon is in the ocean and Johannesburg is in Botswana. Some locations are also in the same pixel: Gibraltar and Ceuta, for instance. I don’t know if there’s an effective difference in the timezone for them, but it’s annoying (Deepin has a nice installer which handles the problem of map resolution quite elegantly).

Over in KaOS people have been working on Calamares’s new QML UI parts and there’s a nicer map-based timezone picker. We played with the idea of using KDE Marble, even, but that turns into a really big dependency for an installer. The UI work done in KaOS shows a different approach to the whole thing; it’s not going to change the map-based approach also used in Calamares. Distro’s, of course, can configure Calamares to use one or the other – that’s one of the things that makes it a universal installer.

Calamares timezone QML

To circle back to Volker’s post: that’s a really valuable data set and rendering for use in any application that shows timezones, and I’ll be chasing it .. eventually. PRs in the meantime would be amazing: Calamares uses a 780x340 pixel map of the world (from 80N to 60S or so), so a PR that comes with that world view plus per-timezone renderings and an accurate pixel-coordinate to location formula, would be gold.

Medium term it might be good to do something like openSUSE does in its installer: when you click on Europe in the world map, it zooms in to a map where you can distinguish Amsterdam from Brussels (for instance) and click on the right place. That would require more renders, but seems doable (and the code is sort-of-tidily hidden in a timezonewidget which just emits timezone location data like name and latitude and longitude).

PRs welcome! (Or a hint where to read enough QGIS documentation, shout on #calamares on Freenode)