Skip to content

fix: improve weather, configuration, and shell interactions - #3

Open
TroyMitchell911 wants to merge 9 commits into
StatIndet:mainfrom
TroyMitchell911:main
Open

fix: improve weather, configuration, and shell interactions#3
TroyMitchell911 wants to merge 9 commits into
StatIndet:mainfrom
TroyMitchell911:main

Conversation

@TroyMitchell911

Copy link
Copy Markdown

Summary

This PR consolidates a set of fixes and performance improvements discovered while deploying and testing Clavis in a live Niri session.

It improves Niri configuration isolation, weather configuration and credential storage, file picker focus, Keystone popup dismissal, launcher selection, left-sidebar performance, and configuration reload feedback.

Changes

Niri configuration isolation

  • Write generated cursor settings to ~/.config/niri/clavis/cursor.kdl instead of the DMS-managed configuration directory.
  • Document the optional Niri include required to load the Clavis cursor configuration.
  • Avoid modifying or depending on files managed by another desktop shell.

Existing Niri configurations should include:

include optional=true "clavis/cursor.kdl"

Weather location and forecast presentation

  • Make the weather location edit button open the weather page in Control Center.
  • Add Material-styled fields for location name, latitude, and longitude.
  • Validate latitude and longitude before applying them.
  • Add support for restoring automatic network-based location detection.
  • Synchronize location changes with the running shell through a dedicated weather IPC handler.
  • Centralize WMO weather-code formatting.
  • Display localized weather condition labels in the current, daily, and hourly forecasts.

Weather credential storage

  • Detect whether a Secret Service provider is available on the session D-Bus.
  • Fall back to KWallet 6 when Secret Service is unavailable.
  • Respect an explicitly configured QTKEYCHAIN_BACKEND.
  • Link the weather-map backend against Qt DBus.
  • Include the underlying QtKeychain error message when credential operations fail.

This does not add a new external package dependency because Qt DBus is provided by the already-required Qt 6 base package.

File picker activation

  • Raise and activate the themed file picker after making it visible.
  • Ensure image and directory pickers receive keyboard focus under tiling Wayland compositors.

Keystone popup dismissal

  • Expand the Keystone input region while a closable popup is active.
  • Dismiss the active popup on the first pointer press outside the pill.
  • Preserve Escape-key dismissal.
  • Ensure only one Keystone window owns the active popup state.

Launcher selection

  • Reset the launcher selection after the query or launcher mode changes.
  • Select the first result once the filtered model has been updated.
  • Prevent stale selection indices from highlighting unrelated results.

Left-sidebar performance

  • Replace the 600 ms opening animation with a 350 ms spatial transition.
  • Use a 200 ms accelerated exit transition.
  • Stop updating the compositor blur region while the sidebar is moving.
  • Submit the stationary blur region only after the sidebar reaches its final position.
  • Delay services and content animations by one additional frame window so they do not compete with the final transition frame.
  • Stop weather animations immediately when the sidebar starts closing.
  • Apply the rounded off-screen mask only to the weather background instead of the entire scrolling page.
  • Reduce the animated weather Canvas update rate from approximately 60 FPS to 30 FPS.
  • Pause Canvas, card, and Lottie animations while the weather page is scrolling.
  • Play forecast Lottie animations only for items near the visible viewport.
  • Remove redundant trend Canvas repaint requests during horizontal scrolling.

Reload notifications

  • Suppress the native Quickshell top-left reload popup.
  • Route successful and failed reload results through the standard desktop notification protocol.
  • Display reload feedback through the existing NotificationManager and Keystone pill.
  • Use a short-lived low-urgency notification for successful reloads.
  • Use a critical notification containing the error details when a reload fails.

Validation

The following checks were run against the complete branch:

  • Qt 6 qmllint on every changed QML file — completed successfully.
  • cmake --build core/build — completed successfully.
  • env -u QT_QPA_PLATFORMTHEME QT_QPA_PLATFORM=offscreen ctest --test-dir core/build --output-on-failure — all 8 tests passed.
  • git diff --check origin/main...HEAD — completed successfully.

Manual validation was also performed in the running Niri/Clavis session:

  • Weather location editing and automatic-location fallback.
  • OpenWeather and MapTiler credential storage with the available session keychain backend.
  • Wallpaper image and directory picker activation.
  • Keystone outside-click dismissal.
  • Launcher selection after query changes.
  • Opening and closing all three left-sidebar pages.
  • Weather-page vertical scrolling.
  • Two real configuration hot reloads using the system notification path.

The sidebar transition and weather scrolling improvements were additionally confirmed by the user.

Screenshots and recordings

The following UI evidence will be added during review:

  • Weather location editor.
  • Wallpaper file picker.
  • Keystone outside-click and reload-notification behavior.
  • Left-sidebar opening, closing, and weather scrolling.

Write generated Niri cursor settings to the Clavis namespace instead of the DMS configuration directory. Document the include path required to load the generated settings.
Open the weather settings page from the sidebar editor and provide validated manual location controls with automatic-location fallback. Synchronize location changes with the running shell through IPC.
Raise and activate the floating picker after it becomes visible so image and folder selection dialogs receive focus under tiling compositors.
Expand the input region while a Keystone popup is open and close the active popup on the first pointer press outside the pill.
Prefer an already running Secret Service and fall back to KWallet 6 when libsecret has no provider. Include the backend error detail when credential operations fail.
@StatIndet StatIndet added enhancement New feature or request bug Something isn't working labels Aug 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants