placeholder image 1What is Calamares

Calamares is an installer framework. By design it is very customizable, in order to satisfy a wide variety of needs and use cases. Calamares aims to be easy, usable & beautiful while remaining independent of any particular Linux distribution.

Read More

placeholder image 2Knowledge Base

The Guide linked above has documentation for end-users, the wiki is mostly for distro developers. The developer’s guide contains information on building Calamares, on its design, and localization.

Wiki

Calamares look

Since Calamares is designed to be customized, themed and branded by individual distributions, it can look very different when used by specific distributions. A separate extensions package contains examples and custom modules.

Extensions

Latest News:

Calamares 3.3.0-alpha5 released

A month to the day, and we have reached the next – and also last – alpha release along the road to Calamares 3.3. More internal changes to cross off items on the TODO list: Boost can be replaced by pybind11 (and it is, by default) to make the Python modules less dependent on external libraries. We’re happy to have contributors helping out with the translation of Calamares into more languages than ever before.

This release contains contributions from (alphabetically by first name):

  • Adriaan de Groot
  • Alejo Fernandez
  • Anke Boersma
  • Christophe Marin
  • Emir Sari
  • Evan James
  • Gaël PORTAY
  • Gecko Linux
  • Jeremy Whiting
  • Neal Gompa

Core

  • Boost::Python is no longer a dependency, Calamares uses a bundled copy of pybind11 instead. This speeds up compilation and reducese the dependency tree a great deal. You can set WITH_PYBIND11=OFF in the build to keep Boost::Python and all the binary-compatibility problems it entails.
  • Coding style now wants clang-format 15 or 16, but no longer needs astyle. There is also a clang-tidy file for additional styling support.
  • Ongoing translation improvements. (thanks Emir)
  • Translations for bqi (Luri), es_AR (Castellano), eo (Esperanto), ka (Georgian). In non-release builds (e.g. between releases, so for developers building directly from git) all translations are enabled, even the ones with no translations at all.
  • The logging format in the session.log file and on-screen is now more similar, although the file contains a lot more per-line information.
  • The INSTALL_CONFIG option has been restored. It is still a terrible idea to fork the repository to modify the config files, and you probably should have a calamares-config package with those files instead, there are packaging workflows that can usefully patch-and- install configuration files. The option defaults to OFF.

Modules

  • All QML modules now have a Qt6-compatible set of QML files as well. (thanks Anke)
  • packagechooser supports AppStream 1.0 API.
  • unpackfs now uses the -S option to rsync for sparse file support. (thanks Jeremy)

TODO

All of the TODOs which I had planned for a 3.3.0 release are now done.

Feedback

If you experience an issue with Calamares, please tell us all about it on the Calamares issue tracker. For a full change list, see the full list of issues closed within the current generation (which is many releases).

Read More

Calamares 3.3.0-alpha4 released

Another alpha along the road to Calamares 3.3, this one contains a huge amount of internal changes to cross off two items on the TODO list: Qt6 compatibility and QML support, and normalizing the C++ namespace used by Calamares. We’re happy to have contributors helping out with the porting and with new features in Calamares modules.

For -alpha5 Anke has fixes to all the QML lined up, Adriaan has Python bindings figured out, so expect that one fairly quickly.

This release contains contributions from (alphabetically by first name):

  • Adriaan de Groot
  • Anke Boersma
  • Emir Sari
  • Evan James
  • Hector Martin
  • Ivan Borzenkov
  • Simon Quigley

Core

  • Qt6 compatibility. You can choose Qt5 (with KDE Frameworks 5) as before, or choose Qt6 (with KDE Frameworks 6). This means that a Qt6-based Linux distribution can use Calamares without needing an extra version of Qt. Note that some KDE Frameworks are required as well, and those need to be Qt6-based also (and are not released as of September 2023).
  • QML-based modules are also supported in Qt6, but the QML is likely to be source-incompatible. The welcomeq module shipped with Calamares now has two .qrc files and uses the ${QT_VERSION_SUFFIX} variable to pick one of the two depending on the Qt version being used. Other modules are likely to follow the same pattern.
  • C++ namespaces have been shuffled around and CalamaresUtils has been retired. This has an effect on all C++ plugins, since this is neither a binary- nor source-compatible change.

Modules

  • keyboard module can now be explicitly configured to use X11 keyboard settings or the FreeDesktop locale1 DBus service. The latter is most useful for Calamares as an “initial setup” system, not an installer, in a Wayland session. (thanks Hector)
  • keyboard module now writes X11 layout configuration with variants for all non-ASCII (e.g. us) layouts. (thanks Ivan)
  • keyboard module now can configure keyboard switch. (thanks Ivan)

TODO

In the interest of planning the next release, here are some items that I think are required to get the 3.3.0 release out the door:

  • Drop Boost::Python and write the (very small) Python bindings by hand
  • Restore the installation of config files from the repo. This was removed for 3.3.0-alpha2 because forking the repo to modify the configuration is a terrible idea. But this also breaks patching-the-configurations at build- or packaging-time, which is a legitimate use-case.

Feedback

If you experience an issue with Calamares, please tell us all about it on the Calamares issue tracker. For a full change list, see the full list of issues closed within the current generation (which is many releases).

Read More

Calamares and Qt6

Calamares 3.3.0 will have at least rudimentary Qt6 support. The libraries build, and so does the main executable and the welcome and finished modules. This means that a “purely Qt6” Calamares might be possible, except for the dependencies on KDE Frameworks and KPMCore which have not had suitable releases yet.

Read More