You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A user on Facebook reported that OpenSAK's text is "far too small" for them and
that they couldn't find a way to change it. The Text and icon size setting
(Settings → General → Display, added in v1.14.0, #286/#287/#290, range widened
in #374/#375) exists, but with Large selected large parts of the UI are
still at the default size (see screenshot, v1.21.0-beta.1, Large).
Small/Medium/Large was chosen in June as a pragmatic first step (same pattern
as the date-format setting), not as a deliberate decision against a free
setting. The values live in TEXT_SIZE_MAP (utils/types.py), which makes
extending it fairly straightforward.
57 font-size literals across gui/, plus 48 hint_style() call sites
A related accessibility issue: because app.setFont() sets a fixed point size,
OpenSAK ignores the user's system font size preference on Linux and macOS.
Windows display scaling (%) still applies.
Options
A. Keep Small/Medium/Large, extend coverage.
Make the same three steps also scale the global font, web views and
hardcoded sizes. This is the smallest change, but it is still limited to three
steps. Large may still not be large enough for users with low vision.
B. Replace the presets with a UI scale factor (recommended).
A single "Text size" setting, as a percentage (e.g. 80–200 %, in 10 % steps,
or a slider). Everything is derived from it:
global app font = base size × scale
TEXT_SIZE_MAP values × scale (row height and icons follow automatically)
hint_style() and the hardcoded sizes become relative to the app font
(e.g. "0.85 × base") instead of fixed px
QWebEngineView.setZoomFactor(scale) for the Description tab and the map,
which makes the HTML/Leaflet sizes follow without touching their CSS
Small/Medium/Large can remain as quick presets (e.g. 85 / 100 / 130 %), and
existing settings migrate to the matching percentage. Everything applies live,
without a restart, like the current setting.
C. Qt's global scaling (QT_SCALE_FACTOR).
Scales everything (fonts, icons, spacing, web views) with almost no code
changes. However, it must be set before QApplication is created, so it
requires a restart, and fractional factors can look slightly blurry on some
platforms. It could be offered as an extra "Advanced → Interface scaling"
option for users who need more than B provides, but it should not be the
main mechanism.
Base size: in all options, start from the system's default font size
rather than a fixed pt value, so a user who has already enlarged system text
gets that respected out of the box.
Suggested phasing
Quick win: central ui_scale() helper. Scale the global app font and setZoomFactor() on the Description view and the map. This covers most of
the screenshot with a small change, and could ship in a beta quickly.
Convert hint_style(), the status bar and the remaining hardcoded font-size literals to relative sizes. Add a CI test that fails on new
hardcoded font-size: NNpx in gui/ (same idea as the existing
language-key tests).
Percentage setting in the UI (option B), migrating existing
Small/Medium/Large values. Optionally, the base size from the system font.
Optional: QT_SCALE_FACTOR as an advanced, restart-required option (C).
Acceptance criteria
At the largest setting, no text in the main window (menus, toolbar,
quick-filter bar, column headers, status bar, detail captions, tabs,
description/hint/logs, map popups) remains at the default size
Dialogs follow the setting
Changes apply live, no restart (except option C, if added)
Background
A user on Facebook reported that OpenSAK's text is "far too small" for them and
that they couldn't find a way to change it. The Text and icon size setting
(Settings → General → Display, added in v1.14.0, #286/#287/#290, range widened
in #374/#375) exists, but with Large selected large parts of the UI are
still at the default size (see screenshot, v1.21.0-beta.1, Large).
Small/Medium/Large was chosen in June as a pragmatic first step (same pattern
as the date-format setting), not as a deliberate decision against a free
setting. The values live in
TEXT_SIZE_MAP(utils/types.py), which makesextending it fairly straightforward.
What follows the setting today
country, coordinates), detail icon
What does NOT follow the setting (from the screenshot + code)
theme.py_default_font()+app.setFont()cache_table.pyfont-size: 11pxmainwindow.py(~line 100)hint_style()defaults to 10 pxcache_detail.py+theme.pyhint_style()cache_detail.pyhint_style(font_size=11)cache_detail.pyfont-size: 13pxcache_detail.py(~line 877)cache_detail.pymap_widget.pyfont-sizeliterals acrossgui/, plus 48hint_style()call sitesA related accessibility issue: because
app.setFont()sets a fixed point size,OpenSAK ignores the user's system font size preference on Linux and macOS.
Windows display scaling (%) still applies.
Options
A. Keep Small/Medium/Large, extend coverage.
Make the same three steps also scale the global font, web views and
hardcoded sizes. This is the smallest change, but it is still limited to three
steps. Large may still not be large enough for users with low vision.
B. Replace the presets with a UI scale factor (recommended).
A single "Text size" setting, as a percentage (e.g. 80–200 %, in 10 % steps,
or a slider). Everything is derived from it:
TEXT_SIZE_MAPvalues × scale (row height and icons follow automatically)hint_style()and the hardcoded sizes become relative to the app font(e.g. "0.85 × base") instead of fixed px
QWebEngineView.setZoomFactor(scale)for the Description tab and the map,which makes the HTML/Leaflet sizes follow without touching their CSS
Small/Medium/Large can remain as quick presets (e.g. 85 / 100 / 130 %), and
existing settings migrate to the matching percentage. Everything applies live,
without a restart, like the current setting.
C. Qt's global scaling (
QT_SCALE_FACTOR).Scales everything (fonts, icons, spacing, web views) with almost no code
changes. However, it must be set before
QApplicationis created, so itrequires a restart, and fractional factors can look slightly blurry on some
platforms. It could be offered as an extra "Advanced → Interface scaling"
option for users who need more than B provides, but it should not be the
main mechanism.
Base size: in all options, start from the system's default font size
rather than a fixed pt value, so a user who has already enlarged system text
gets that respected out of the box.
Suggested phasing
ui_scale()helper. Scale the global app font andsetZoomFactor()on the Description view and the map. This covers most ofthe screenshot with a small change, and could ship in a beta quickly.
hint_style(), the status bar and the remaining hardcodedfont-sizeliterals to relative sizes. Add a CI test that fails on newhardcoded
font-size: NNpxingui/(same idea as the existinglanguage-key tests).
Small/Medium/Large values. Optionally, the base size from the system font.
QT_SCALE_FACTORas an advanced, restart-required option (C).Acceptance criteria
quick-filter bar, column headers, status bar, detail captions, tabs,
description/hint/logs, map popups) remains at the default size
toolbar overflow, detail meta row wrapping)
docs/updatedRelated: roadmap item 9 (User Preferences & Theming), #735 (toolbar icons),
#654 (icon-only toolbar).