From d4fbfaae45f129434ada1e114f0ab02d3529d841 Mon Sep 17 00:00:00 2001 From: goodboy Date: Wed, 11 Mar 2026 11:59:56 -0400 Subject: [PATCH] Save and restore window geometry via `QSettings` Seems to be required to get certain widgets to size correctly on macos like the order-mode "health bar" among other types of labels? (this commit msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-code Originally from @dnks with a weird(er) commit msg XP --- piker/ui/_window.py | 13 +++++++++++++ piker/ui/qt.py | 1 + 2 files changed, 14 insertions(+) diff --git a/piker/ui/_window.py b/piker/ui/_window.py index aa2b9ea0..e166da49 100644 --- a/piker/ui/_window.py +++ b/piker/ui/_window.py @@ -37,6 +37,7 @@ from piker.ui.qt import ( QStatusBar, QScreen, QCloseEvent, + QSettings, ) from ..log import get_logger from ._style import _font_small, hcolor @@ -181,6 +182,13 @@ class MainWindow(QMainWindow): self._status_label: QLabel = None self._size: tuple[int, int]|None = None + # restore window geometry from previous session + settings = QSettings('pikers', 'piker') + geometry = settings.value('windowGeometry') + if geometry is not None: + self.restoreGeometry(geometry) + log.debug('Restored window geometry from previous session') + @property def mode_label(self) -> QLabel: @@ -217,6 +225,11 @@ class MainWindow(QMainWindow): '''Cancel the root actor asap. ''' + # save window geometry for next session + settings = QSettings('pikers', 'piker') + settings.setValue('windowGeometry', self.saveGeometry()) + log.debug('Saved window geometry for next session') + # raising KBI seems to get intercepted by by Qt so just use the system. os.kill(os.getpid(), signal.SIGINT) diff --git a/piker/ui/qt.py b/piker/ui/qt.py index 9dbb971c..3dfaedf0 100644 --- a/piker/ui/qt.py +++ b/piker/ui/qt.py @@ -44,6 +44,7 @@ from PyQt6.QtCore import ( QItemSelectionModel, pyqtBoundSignal, pyqtRemoveInputHook, + QSettings, ) align_flag: EnumType = Qt.AlignmentFlag