From afc00ef386c5ae063b0a95ae233cc81ac76198ba Mon Sep 17 00:00:00 2001 From: Silberengel Date: Sun, 19 Apr 2026 01:42:10 +0200 Subject: [PATCH] limit image size and increase app font size --- src/imwald/app.py | 17 +++++++++++++ src/imwald/core/md_render.py | 6 ++--- src/imwald/ui/feed_page.py | 34 ++++++++++++------------- src/imwald/ui/markdown_editor_widget.py | 7 ++++- 4 files changed, 43 insertions(+), 21 deletions(-) diff --git a/src/imwald/app.py b/src/imwald/app.py index 6e44dd2..4b7f294 100644 --- a/src/imwald/app.py +++ b/src/imwald/app.py @@ -5,6 +5,7 @@ from __future__ import annotations import logging import sys +from PySide6.QtGui import QFont from PySide6.QtWidgets import QApplication from imwald.config import db_path @@ -13,11 +14,27 @@ from imwald.core.nostr_engine import NostrEngine from imwald.ui.main_window import MainWindow +def _set_comfortable_default_font(app: QApplication) -> None: + """Slightly larger UI text than the platform default (lists, menus, dialogs, plain edits).""" + f = QFont(app.font()) + ps = f.pointSize() + if ps > 0: + f.setPointSize(ps + 2) + else: + px = f.pixelSize() + if px > 0: + f.setPixelSize(max(int(round(px * 1.12)), 14)) + else: + f.setPointSize(13) + app.setFont(f) + + def main() -> None: logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s") app = QApplication(sys.argv) app.setApplicationName("imwald") app.setOrganizationName("imwald") + _set_comfortable_default_font(app) db = Database(db_path()) db.connect() diff --git a/src/imwald/core/md_render.py b/src/imwald/core/md_render.py index 8f8db91..17a7aa1 100644 --- a/src/imwald/core/md_render.py +++ b/src/imwald/core/md_render.py @@ -120,13 +120,13 @@ def markdown_to_plain_text(md: str, *, max_source: int = 200_000) -> str: _PREVIEW_CSS = """""" diff --git a/src/imwald/ui/feed_page.py b/src/imwald/ui/feed_page.py index 3ee9e1f..9684013 100644 --- a/src/imwald/ui/feed_page.py +++ b/src/imwald/ui/feed_page.py @@ -33,13 +33,13 @@ FEED_KINDS = (1, 20, 21, 30023, 9802, 11) _FEED_DOC_CSS = """ """ @@ -76,9 +76,9 @@ def _format_engagement_html(stats: dict[str, Any]) -> str: for em, c in rx[:18]: e = html.escape(em if em != "+" else "❤", quote=False) if c > 1: - emoji_bits.append(f'{e}{c}') + emoji_bits.append(f'{e}{c}') else: - emoji_bits.append(f'{e}') + emoji_bits.append(f'{e}') em_row = "   ".join(emoji_bits) if emoji_bits else "" head = "  ·  ".join(parts) if parts else "no engagement in local DB yet" if em_row: @@ -106,7 +106,7 @@ class FeedPage(QWidget): } QLabel#ThreadTitle { font-weight: 600; color: #3d3428; padding: 4px 2px; } QPlainTextEdit#ReplyBody { - border: none; background: transparent; font-size: 14px; color: #2a241c; + border: none; background: transparent; font-size: 16px; color: #2a241c; } """ ) @@ -140,7 +140,7 @@ class FeedPage(QWidget): op_card_lay.addWidget(self._op, stretch=1) self._why = QLabel("") - self._why.setStyleSheet("color: #6b5f4f; font-size: 12px;") + self._why.setStyleSheet("color: #6b5f4f; font-size: 14px;") self._why.setWordWrap(True) self._thread_title = QLabel( @@ -297,13 +297,13 @@ class FeedPage(QWidget): if pic_url else '' ) - nip_line = f"
{nip05}
" if nip05 else "" - about_line = f"
{about}
" if about else "" + nip_line = f"
{nip05}
" if nip05 else "" + about_line = f"
{about}
" if about else "" tr = "" sr = ev.get("source_relay") or "" if sr and "nostrarchives.com" in sr: - tr = "
Trending slice (nostrarchives)
" + tr = "
Trending slice (nostrarchives)
" eid = html.escape(ev["id"]) md_body = markdown_html_fragment(ev.get("content") or "") @@ -312,13 +312,13 @@ class FeedPage(QWidget): f"{_FEED_DOC_CSS}" f"
" f"{avatar_html}" - f"
{disp}
" - f"
{npub_e} · {pk_short}
" + f"
{disp}
" + f"
{npub_e} · {pk_short}
" f"{nip_line}{about_line}
" - f"
Kind {int(ev['kind'])} · {int(ev['created_at'])}
" + f"
Kind {int(ev['kind'])} · {int(ev['created_at'])}
" f"{tr}" f"
{md_body}
" - f"

{eid}

" + f"

{eid}

" "" ) self._op.setHtml(body) @@ -341,13 +341,13 @@ class FeedPage(QWidget): vl.setContentsMargins(8, 6, 8, 8) rk = int(r["kind"]) head = QLabel( - f"k{rk}   " - f"{rname}   {rnpub}" + f"k{rk}   " + f"{rname}   {rnpub}" ) head.setTextFormat(Qt.TextFormat.RichText) head.setWordWrap(True) f_small = QFont() - f_small.setPointSize(11) + f_small.setPointSize(13) head.setFont(f_small) body_te = QPlainTextEdit() body_te.setObjectName("ReplyBody") diff --git a/src/imwald/ui/markdown_editor_widget.py b/src/imwald/ui/markdown_editor_widget.py index e024a85..9049b84 100644 --- a/src/imwald/ui/markdown_editor_widget.py +++ b/src/imwald/ui/markdown_editor_widget.py @@ -4,7 +4,7 @@ from __future__ import annotations from PySide6.QtCore import Qt, QTimer from PySide6.QtGui import QFont -from PySide6.QtWidgets import QPlainTextEdit, QSizePolicy, QSplitter, QTextBrowser, QVBoxLayout, QWidget +from PySide6.QtWidgets import QApplication, QPlainTextEdit, QSizePolicy, QSplitter, QTextBrowser, QVBoxLayout, QWidget from imwald.core.md_render import markdown_html_document @@ -20,6 +20,11 @@ class MarkdownBodyEditor(QWidget): mono = QFont("monospace") if not mono.exactMatch(): mono = QFont("Courier New") + app = QApplication.instance() + if isinstance(app, QApplication): + ps = app.font().pointSize() + if ps > 0: + mono.setPointSize(ps) self._source.setFont(mono) self._source.setMinimumHeight(260) self._source.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)