For an example see [[ https://www.wikiwand.com/en/Wikipedia | Wikiwand ]] gear (cog) menu in the top-right corner.
It is a recurring request to allow users (logged-in and anonymous) to customize their viewing experience with the following options:
* [[ https://www.mediawiki.org/wiki/Extension:Theme | theme ]] -- light / [[ https://www.mediawiki.org/wiki/User:Aron_Manning/Skin_themes | dark theme ]] / [[ https://en.wikipedia.org/wiki/User:Volker_E._(WMF)/dark-mode | color inversion ]] (theme implementation is not a concern of this task)
** custom theme chooser submenu
* content width -- ex. 960px - 1160px - 100%-margin
* font-size -- ex. 12px - 14px (Vector) - 16px (Minerva) - 18px - XXL (custom for a11y)
* serif / sans-serif font (inherently subjective choice)
* font chooser submenu for sans, serif, article, wikieditor (monospace), code blocks, diff viewer:
** a modern webfont with wide language support (Noto) / WikimediaUI Base's system font stack (used by Minerva) / browser font setting / user selected (web)font
The common solution is to provide a pop-up menu, similar to echo's pop-up, its icon also placed next to the user menu, see Wikiwand for an example.
These settings can be stored in LocalSettings for anon users, server-side for registered users and loaded before the first paint (the javascript is loaded synchronously or included in the html; the logged-in settings are included in the html).
This task is universal to all skins, but might be implemented as part of the Desktop Improvements project.