Text & icon size: make it apply to the whole UI, and make it freely adjustable
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
- Área
- desktop-dev, frontend
Línea de trabajo
This is a design decision before it is code: the maintainers must choose between options A, B and C. Start by reading TEXT_SIZE_MAP in utils/types.py, _default_font() and hint_style() in theme.py, and the hardcoded font-size literals in mainwindow.py, cache_detail.py, cache_table.py and map_widget.py. Done means the agreed scaling approach is documented and the largest setting leaves no main-window text at the default size.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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 makes
extending it fairly straightforward.
What follows the setting today
- Cache list: row font, row height, type/container icons, header height
- Detail panel: cache title, the meta values (GC code, type, D/T, container,
country, coordinates), detail icon - Filter dialog: cache-type icons (capped at 16 px)
What does NOT follow the setting (from the screenshot + code)
| Area | Why it stays small | Where |
|---|---|---|
| Menu bar, toolbar, quick-filter bar (GC code / Name / Where), combo boxes, tabs, bottom status line | Global app font is fixed: Segoe UI 10 pt / SF Pro 13 pt / Ubuntu 10 pt | theme.py _default_font() + app.setFont() |
| Column header text | Only the header height scales, not its font | cache_table.py |
| Status bar (Filter / caches in database / Center point / Count) | Hardcoded font-size: 11px |
mainwindow.py (~line 100) |
| Detail panel captions ("GC Code", "Type", "D/T", …) | hint_style() defaults to 10 px |
cache_detail.py + theme.py hint_style() |
| "Add corrected coordinates…" link | Hardcoded 10 px | cache_detail.py |
| "Placed by / Date" line | hint_style(font_size=11) |
cache_detail.py |
| Description tab | QWebEngineView HTML with fixed font-size: 13px |
cache_detail.py (~line 877) |
| Hint and Logs tabs | QTextBrowser using the global font | cache_detail.py |
| Map popups and labels | Hardcoded 9/11/16 px in the Leaflet CSS/JS | map_widget.py |
| Dialogs (Settings, Waypoint, Trip Planner, Welcome Wizard, GPS, …) | Global font + hardcoded sizes | 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_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 pxQWebEngineView.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-sizeliterals to relative sizes. Add a CI test that fails on new
hardcodedfont-size: NNpxingui/(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_FACTORas 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)
- Layout doesn't break at the maximum scale (dialog height clamp #816,
toolbar overflow, detail meta row wrapping) - Existing Small/Medium/Large users keep their current look after upgrade
- User Guide +
docs/updated
Related: roadmap item 9 (User Preferences & Theming), #735 (toolbar icons),
#654 (icon-only toolbar).
- Lenguaje dominante
- Python
- Estrellas
- 37
- Forks
- 17
- Merge medio
- 21 h 5 min
- PR fusionados (30 d)
- 131
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OpenSAK-Org/OpenSAK
-
Make it clear that the Windows ZIP download is portable (no installer, not in Apps & Features)Abiertoarea: documentation documentation good first issue OS: windows
Dificultad 2/5 Medio día Aptitud para principiantes 78/100
OpenSAK-Org/OpenSAK#1289 ·
Los mantenedores suelen responder en 1 día
-
area: geo-data improvement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
OpenSAK-Org/OpenSAK#1285 ·
Los mantenedores suelen responder en 1 día
-
area: geo-data good first issue improvement
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
OpenSAK-Org/OpenSAK#789 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
area: UI improvement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
OpenSAK-Org/OpenSAK#729 ·
Los mantenedores suelen responder en 1 día
-
area: import improvement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
OpenSAK-Org/OpenSAK#648 ·
Los mantenedores suelen responder en 1 día
Todos los issues de OpenSAK-Org/OpenSAK
Issues similares
-
enhancement good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Community
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
kedro-org/kedro-plugins#1575 ·
Los mantenedores suelen responder en 1 día
-
hive size:simple
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Significant-Gravitas/AutoGPT#16733 ·
Los mantenedores suelen responder en 1 día
-
changelog investigate
Dificultad 1/5 Menos de una hora Aptitud para principiantes 74/100
ramnes/notion-sdk-py#444 ·