Commit graph

368 commits

Author SHA1 Message Date
7c06b808ae feat(nosignal): redesign lock screen to match handoff
Rewrite the WlSessionLockSurface visuals to the NoSignal lock design while
keeping the secure session-lock + PAM machinery (Pam buffer/handleKey/state,
WlSessionLock unlock):

- Blurred screencopy wallpaper + dark scrim; top status row (lock+Locked /
  wifi/bt/battery); centred 108px ExtraLight clock + date; gradient avatar +
  username; password field (key glyph, masked dots, peach enter glyph, error
  border) fed to pam.handleKey; bottom now-playing strip + "Press Enter to
  unlock". JetBrains Mono / Nerd Font (NsIcon) / Theme tokens.
- Escape does not dismiss; correct password (PAM) unlocks; wrong password shows
  inline error. Verified in VM: renders, masks, unlocks.
- Glyphs: add login (enter arrow) + key.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:30:20 +01:00
cf3c0d823d feat(nosignal): Nerd Font icon remap — nexus (Settings)
Convert caelestia's nexus Settings to Nerd Font icons (drop-in NsIcon).

- NsIcon hardened into a MaterialIcon drop-in: accepts fontStyle (sizes from
  it, keeps the NF Mono family), plus no-op fill/grade/animate for API parity.
- Glyphs map extended with caelestia core names: nexus static icons, nav/page
  icons (palette, wallpaper, dashboard, devices_other, extension, globe, info,
  monitor, shuffle, workspaces, ...), weather + app/device icons.
- Converted all MaterialIcon in modules/nexus/ to NsIcon; fixed icon aliases
  (NavRow/SliderRow .text -> .icon); reverted IconButton font: (it has font,
  not fontStyle, and renders its own icon).

Remaining core surfaces still Material Symbols (no breakage): launcher, osd,
lock, sidebar, utilities — to convert next with any further Glyphs entries.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:16:01 +01:00
6a933aa260 feat(nosignal): Nerd Font icon remap — bar + popouts
Route the redesign's icons through JetBrains Mono Nerd Font instead of Material
Symbols, for visual consistency with the JetBrains Mono text.

- services/Glyphs.qml: Material-Symbol-name -> Nerd Font (Font Awesome range)
  codepoint map (via String.fromCharCode), covering bar/panel icons + the
  dynamic Icons.getX() returns; get() falls back to a "?" glyph.
- components/NsIcon.qml: reactive icon component (input `icon` = name -> mapped
  glyph), so dynamic icons (volume/battery/play-pause) stay live. Uses the
  "Mono" NF variant so glyphs center in a fixed cell.
- Converted all MaterialIcon usages in NsBar + the 9 panels to NsIcon.

caelestia core (nexus/launcher/osd/lock) still uses Material Symbols — no
breakage (mixed), to be converted next with an expanded Glyphs map.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:01:44 +01:00
36f6f5a157 feat(nosignal): interface redesign — slim glass bar + floating popouts
Convert the caelestia shell to the NoSignal "design_handoff_quickshell_shell"
spec: a slim translucent top bar with floating glass popouts, fixed dark-glass
chrome + Material You dynamic accent, square corners, JetBrains Mono.

- Theme singleton (services/Theme.qml): design tokens; accent = m3primary
  (dynamic), fixed glass/text, square radii.
- New slim bar as its own PanelWindow (modules/nsbar/NsBar.qml), additive in
  shell.qml; reuses caelestia services + components. Helpers: BarPill,
  NsWorkspaces (numbered, active=accent pill), NsOverlay (popout host, one-at-a-
  time via services/NsShell.qml, outside-click + Esc), components/NsPanel +
  components/NsSwitch.
- Old caelestia frame removed: BarWrapper collapsed; ContentWindow border 0 +
  borderTop 0; Exclusions zones 0. Drawer engine kept for launcher/OSD/lock.
- 9 popouts (modules/nsbar/panels/): Calendar, QuickSettings, Network,
  Bluetooth, Notifications, Audio, SystemTray, Overview, PowerMenu.
- Clock restyled (date muted + time DemiBold).
- nexus (Settings) reskinned: dark-glass window + cards, square corners
  (Nexus.qml, common/ConnectedRect.qml) — keeps all pages/functionality.

Launcher kept as-is. Font (JetBrainsMono) + rounding.scale=0 + Super+Alt+Space
nexus bind are caelestia/hypr CONFIG and ship in the OS, not this fork.
Next: full Material Symbols -> Nerd Font icon remap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:36:33 +01:00
dark3txr
397ae4cd6e
fix: vpn disconnection toast (#1521) 2026-06-08 13:08:39 +10:00
2 * r + 2 * t
36adb25231 feat: set featured wall as default if no wall set 2026-06-08 01:03:00 +10:00
2 * r + 2 * t
027ab59ee5 feat: impl changing network via nexus 2026-06-06 02:17:29 +10:00
2 * r + 2 * t
da3b58118f feat: add browse and random buttons to wall select 2026-06-05 22:03:23 +10:00
2 * r + 2 * t
0bbb1c04b7 feat: actually impl wall selector w/ categories 2026-06-05 21:39:05 +10:00
2 * r + 2 * t
c85dfc6a1b
fix: format ci (#1513)
* fix: remove _-prefixed ids

qmlformat crashes cause of them

* fix: pin ci image to Qt 6.11.0

6.11.1 is the broken qmlformat version

* chore: format c++

* ci: print tool versions at start of ci
2026-06-04 23:07:20 +10:00
2 * r + 2 * t
318d20fec2 feat: add hourly forecast to lock weather
Shows if screen is large
2026-06-02 18:24:08 +10:00
Soramane
f5692c485c feat: improve lock weather 2026-05-31 20:56:34 +08:00
2 * r + 2 * t
8425e6f109 chore: remove old lyrics service & components 2026-05-04 18:38:33 +10:00
2 * r + 2 * t
a28316ad5a feat: improve dashboard media tab 2026-05-04 03:47:03 +10:00
2 * r + 2 * t
bb44aa0fbe fix: transparency blur rule debouncing
Trigger on initial change + shorten cooldown to 30
Also wait for colour anim to finish before triggering when opacity
increases
2026-05-03 01:46:54 +10:00
2 * r + 2 * t
1eac4e4bcb Merge branch 'main' into feat/m3-revamp 2026-04-26 15:13:51 +10:00
2 * r + 2 * t
53dd959f5e feat: always expire notifs if fullscreen
Also faster expire timeout when fullscreen
2026-04-26 15:13:28 +10:00
2 * r + 2 * t
81fc9dda02 feat: split SystemUsage into separate C++ services 2026-04-26 01:38:22 +10:00
2 * r + 2 * t
3ae676c040 feat: improve dash perf storage card 2026-04-25 23:04:49 +10:00
2 * r + 2 * t
89cb3b9d7c fix: don't cache icons + fix bg colour when transparent image
Also don't double cache
2026-04-20 00:53:43 +10:00
2 * r + 2 * t
982bb9759a fix: EVEN MORE non global access
Also Tokens.sizes.notifs.image -> global
2026-04-13 18:25:24 +10:00
2 * r + 2 * t
8106aca173 fix: even more non global access 2026-04-13 16:42:00 +10:00
2 * r + 2 * t
7e4b14f6ba fix: per monitor props not having ancestor scope 2026-04-13 00:07:55 +10:00
2 * r + 2 * t
666d451f4b fix: global config use for rest of global props 2026-04-12 23:02:00 +10:00
2 * r + 2 * t
b8d17ad8ef fix: use global config for global properties 2026-04-12 22:47:30 +10:00
2 * r + 2 * t
fc1b3ca2d6 chore: remove unused import 2026-04-12 03:47:42 +10:00
2 * r + 2 * t
42b9e57eae fix: use singleton for conf writes 2026-04-12 03:46:37 +10:00
2 * r + 2 * t
3d012e86b3 chore: remove old Config.save() 2026-04-12 03:45:17 +10:00
2 * r + 2 * t
41ba4f6271 feat: add per monitor enabled prop
Enabled prop should be used in favour of general.excludedScreens. The
latter has been removed
2026-04-12 03:39:58 +10:00
2 * r + 2 * t
71dd7b4db8 chore: format QML imports 2026-04-11 22:17:24 +10:00
2 * r + 2 * t
b5dcd07ab8 fix: use correct size tokens in QML 2026-04-11 21:24:16 +10:00
2 * r + 2 * t
3a37d77d1f feat: replace qml config module with c++ module 2026-04-11 21:18:56 +10:00
2 * r + 2 * t
e3b3a66877 fix: notif fileview warnings on first launch 2026-04-09 21:56:51 +10:00
Robin Seger
673b096261
fix: iface -> interface in VPN service (#1376) 2026-04-06 19:18:30 +10:00
İlyas
9fa889536c
fix: reset lyrics when player is killed (#1359)
Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-04-02 21:49:22 +11:00
İlyas
ffe9bb851a
fix: notif image and vpn serialisation (#1370)
* fix: serialize VPN interface name when configured via UI

* fix: override last icon notification history

* screw qmlls

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-04-02 21:37:45 +11:00
2 * r + 2 * t
4714fe8795 feat: use logging categories 2026-04-02 15:29:40 +11:00
Robin Seger
5c59e4490a
feat: VPN fixes & improvements (#1116)
* feat: add VPN settings and management UI

- Add VPN configuration UI
- Update VPN toggle visibility to check enabled providers

* controlcenter: VPN modal transitions & cleanup

* controlcenter: VPN modal styling

* controlcenter: VPN modal scrim

* controlcenter: VPN modal padding

* controlcenter: VPN modal enter & exit behaviour

* vpn: reworked managment & fixes

       - Switched to primarily use provider status json
         - Emitting more detailed toasts and errors/states
       - Authentication prompt button to open in browser
       - Better resets and provider change

* vpn: replace use of qt5compat

* fixing providers, status and adding custom option

* local qml-lint script lied to me

* format

* section order

* linting

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-03-29 15:25:52 +11:00
Robin Seger
c588794b20
feat: fullscreen notification & toasts overlay (#1276)
* reworked fullscreen mode as transforming shell

* controlcenter configuring of toasts & notifs

* fix animation on fs switch

* border rounding & shadow animation

* change controlcenter notifications layout

* stay on WlrLayer.Overlay, use Anim

* ci: update action versions

* qmlformat

* format take two

* third time's the charm

* fix: special workspace fullscreen

* fix: bar width border.thickness on non-persistent behaviour

* merge fix

* stop layout shift on close

* last few conventions sorted

* linting

* maximized state to fullscreen

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-03-29 15:22:00 +11:00
Chloé Legué
b5f761666d
fix: weather not using system timezone (#1346)
* adjusted weather.qml to ensure that it tracks system local time and date while ignoring API times if using VPN

* adjusted weather.qml to ensure that it tracks system local time and date while ignoring API times if using VPN

---------

Co-authored-by: Chris <102560999+ItsABigIgloo@users.noreply.github.com>
Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-03-29 02:56:38 +11:00
2 * r + 2 * t
793cc8234c feat: set hypr blur configs dynamically 2026-03-29 01:24:52 +11:00
İlyas
c64119a22b
fix: YouTube thumbnail fallback for missing mpris:artUrl (#1347)
* fix: YouTube thumbnail fallback for missing mpris:artUrl

* fix

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-03-28 21:58:16 +11:00
2 * r + 2 * t
42a1f34ddb chore: fix property-override linter warnings 2026-03-28 18:17:36 +11:00
Robin Seger
49695f8fd0
audio: add default output sink cycle ipc (#1200)
* [CI] chore: update flake

* [CI] chore: update flake

* [CI] chore: update flake

* [CI] chore: update flake

* audio: added default audio output cycle IPC

* fix format

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-03-27 18:47:05 +11:00
Chloé Legué
148417baa1
fix: weather service using UTC instead of locale timezone (#1343) 2026-03-27 14:46:13 +11:00
Robin Seger
6fa80bd857
dashboard: lyrics enhancements (#1321)
* dual lrc file search strategies, UI adjustments

* qml conventions & order

* format

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2026-03-26 17:13:57 +11:00
2 * r + 2 * t
25515fd32b chore: fix rest of formatting issues 2026-03-22 16:08:57 +11:00
2 * r + 2 * t
d0f2df9bae chore: fix all import formats 2026-03-22 06:02:19 +11:00
2 * r + 2 * t
2a54c089a4 chore: fix rest of linter warnings 2026-03-22 01:31:52 +11:00
2 * r + 2 * t
b64421d614 chore: misc fixes 2026-03-21 16:47:38 +11:00