Commit Graph
56 Commits
Author SHA1 Message Date
David Heinemeier Hansson 3878ad3a57 Make clock's alt format include the ISO week number
Set the default formatAlt to "dd MMMM 'W'ww yyyy" (was "dd MMMM yyyy")
in shell-defaults.json, the bundled settings-panel defaults, and the
form placeholder text — clock's own widget fallback already used this
spec but the shipped config overrode it.

Qt.formatDateTime doesn't recognize `ww` and renders it literally
(`20 May Www 2026`), so add an `isoWeek` helper to clock.qml that
pre-substitutes `ww` with a Qt-quoted literal of the ISO 8601 week
number before handing the format off to Qt. Users get `20 May W21 2026`
without anyone needing to know about the substitution.
2026-05-20 21:37:48 +02:00
David Heinemeier Hansson 6090d46dfd Drop the daytime widget, use clock everywhere
Clock and daytime were near-duplicates with different click semantics
(clock toggles between formats on left-click and opens the timezone
selector on right-click; daytime was non-pressable with a hover tooltip).
Standardize on clock, since it's the more capable of the two.

- Delete widgets/daytime.qml and its FirstPartyWidgets entry.
- Migrate shell-defaults.json, shell.qml's builtin fallback, Bar.qml's
  fallback bar config, and the settings panel's builtin defaults so the
  center anchor and center-section entry both reference "clock".
- Rename the daytimeSettings form to clockSettings and rephrase
  "Tooltip format" → "Alternate format (click to toggle)" so the field
  label matches clock's actual behavior.
- Update the gallery dropdown options and bar/README docs.
2026-05-20 21:23:30 +02:00
David Heinemeier Hansson c1fca7cbe4 Use Color.foreground / Style.font.family for fallbacks
Five sites hardcoded "#cacccc" or "JetBrainsMono Nerd Font" as the
fallback when no bar context was available. Those magic strings are
the *current* palette defaults — they diverge silently when the theme
changes. Bind to the Color / Style singletons so the fallback tracks
whatever the theme says the foreground / monospace family should be.

Color.qml itself keeps the literal "#cacccc" — that's the seed value
the singleton is bootstrapped with before the theme loads.
2026-05-20 20:29:23 +02:00
David Heinemeier Hansson 16604c67b3 Lift setting / vertical / barSize onto BarWidget
Six widgets (clock, daytime, keyboardLayout, lockKeys, activeWindow,
media) shipped identical copies of `function setting(name, fallback)`.
Eight widgets reimplemented `readonly property bool vertical`, and
three reimplemented `readonly property int barSize`. Move all three
onto the BarWidget base so widgets read the same wiring everyone else
gets for free.

While in here, drop the dead `setting()` declaration on media.qml — it
was defined but never called.
2026-05-20 19:50:10 +02:00
David Heinemeier Hansson 2a61df0254 Fix vertical bar indicator alignment 2026-05-20 19:11:15 +02:00
David Heinemeier Hansson bdf7bf76cb Extract clock and tray bar widgets 2026-05-20 19:11:00 +02:00
David Heinemeier Hansson d9ec5b82f2 Move weather popup into panel 2026-05-20 18:43:15 +02:00
David Heinemeier Hansson e0b62f7535 Fix indicator hover reveal target 2026-05-20 18:38:21 +02:00
David Heinemeier Hansson cf4729ca2b Extract indicators bar widget 2026-05-20 18:32:00 +02:00
David Heinemeier Hansson 1e63e86133 Extract system update bar widget 2026-05-20 18:28:13 +02:00
David Heinemeier Hansson 647bb88ab2 Extract menu opener widget 2026-05-20 17:53:05 +02:00
David Heinemeier Hansson 1ff343428c Extract workspace switcher widget 2026-05-20 17:53:05 +02:00
David Heinemeier Hansson 4941fe4bf9 Replace calendar widget with daytime label 2026-05-20 16:59:38 +02:00
David Heinemeier Hansson 532db800d7 Remove legacy idle inhibitor widget 2026-05-20 16:33:48 +02:00
David Heinemeier Hansson 20ff942481 Fix bar icon positioning in horizontal mode 2026-05-20 14:56:42 +02:00
David Heinemeier Hansson ea1b0e7ced Extract panels out into their own top-level concern 2026-05-20 13:51:39 +02:00
David Heinemeier Hansson 3b9700682c Split out indicators 2026-05-20 13:05:56 +02:00
Ryan Hughes ad271c1fcb Fix stream displays 2026-05-19 20:44:54 -04:00
Ryan Hughes 1f3a827701 consolidate logic 2026-05-19 19:18:56 -04:00
Ryan Hughes ccc796a3e0 Consolidate utils 2026-05-19 19:03:11 -04:00
Ryan Hughes 15f461c1df Add tooltip color tokens 2026-05-19 15:16:10 -04:00
David Heinemeier Hansson a157b98d5b No longer need wiremix 2026-05-19 18:51:05 +02:00
David Heinemeier Hansson 0f5044167c Move from hypridle to QS 2026-05-19 12:02:28 +02:00
David Heinemeier Hansson 8fa463975a Remove dead code 2026-05-19 10:50:36 +02:00
David Heinemeier Hansson 8cd9e34294 Tweak idle inhibitor 2026-05-19 10:48:28 +02:00
David Heinemeier Hansson 8da9c27aef Consistent naming 2026-05-19 09:50:20 +02:00
David Heinemeier Hansson 2ca043c8b9 More massaging 2026-05-19 08:42:53 +02:00
David Heinemeier Hansson c6df292c80 Don't need that duplex info 2026-05-19 08:42:49 +02:00
David Heinemeier Hansson 8613ead8c1 Signify when there are multiple displays 2026-05-19 08:20:49 +02:00
David Heinemeier Hansson 2ac069e72b Drop bluetui and impala in favor of shell controls 2026-05-19 08:20:13 +02:00
Ryan Hughes 7800937b29 Use accent border for popup surfaces 2026-05-19 01:54:08 -04:00
Ryan Hughes 75962b98ea Fix audio panel scroll clipping 2026-05-19 01:32:32 -04:00
Ryan Hughes 8a74d28449 Show forget action for saved Wi-Fi networks 2026-05-19 01:15:07 -04:00
Ryan Hughes 832244c10e Refine shell cursor highlights 2026-05-19 01:02:16 -04:00
Ryan Hughes 61e7d2f307 Use singular microphone label 2026-05-18 23:10:24 -04:00
Ryan Hughes fca58df0a5 Clean up audio device choices 2026-05-18 22:46:30 -04:00
Ryan Hughes 34ff56ae19 Detect PipeWire playback streams by sink role 2026-05-18 21:51:21 -04:00
Ryan Hughes f1e6fe86b7 Remove legacy battery bar module 2026-05-18 21:27:00 -04:00
Ryan Hughes 6fa6e6cc91 Merge remote-tracking branch 'origin/omarchy-shell' into omarchy-shell
# Conflicts:
#	shell/Ui/PillButton.qml
#	shell/plugins/bar/widgets/monitorPanel.qml
#	shell/plugins/bar/widgets/networkPanel.qml
2026-05-18 21:11:37 -04:00
Ryan Hughes 8b2bb217d6 Standardize shell UI theme tokens 2026-05-18 20:13:12 -04:00
David Heinemeier Hansson 34bb950830 Keyboard nav 2026-05-18 22:50:38 +02:00
David Heinemeier Hansson bc1b824891 More tweaks 2026-05-18 22:47:06 +02:00
David Heinemeier Hansson 9daa0e6ed3 More tweaks 2026-05-18 22:10:26 +02:00
David Heinemeier Hansson 74f71236e0 More tweaking 2026-05-18 22:00:09 +02:00
David Heinemeier Hansson e8bfdbb13b Little more tweaks 2026-05-18 21:24:48 +02:00
David Heinemeier Hansson d99ccaf550 More power panel layouting 2026-05-18 21:13:42 +02:00
David Heinemeier Hansson 1dc2f1ec79 Introduce power panel 2026-05-18 20:47:38 +02:00
David Heinemeier Hansson c517997922 Spinning when scanning 2026-05-18 20:47:38 +02:00
Ryan Hughes 8b858d4093 Add outline cursor mode to CursorSurface for slider rows
Wide content rows (slider rows in audio / monitor panels) opted out of
the cursor fill by setting fill: "transparent" on their CursorSurface,
which left them with no cursor visual at all — j/k landed there
silently with no way to know what was selected.

Add an `outline: bool` flag to CursorSurface. When true, hasCursor
paints an accent border (Style.focusBorderColor at
Style.focusBorderWidth) instead of a fill, leaving the row's chrome
fully visible underneath. Use for slider rows where a fill would
obscure the track.

Audio output / input slider rows and the monitor brightness row opt
in. The dev gallery's slider section replaces its bespoke Rectangle
wrapper with the same CursorSurface { outline: true }, so what the
gallery documents is what the panels ship.
2026-05-18 12:19:23 -04:00
Ryan Hughes b5f7ba02c2 Unify PillButton, CursorPill, ChoiceButton into qs.Ui.Button + ButtonGroup
The three components were three takes on the same shape \u2014 a clickable
rectangle with text/icon, a hot/hover state, an optional persistent
border, and an optional 'selected' or 'active' highlight. CursorPill
was a 30-line PillButton wrapper that added a hovered() signal;
ChoiceButton was effectively PillButton with selected: bool painting
an accent fill+border.

Collapse them into a single qs.Ui.Button. State flags compose
independently:

  hasCursor / hover         hot fill
  active                    persistent foreground-tint fill
  selected                  accent fill + accent border
  bordered: true            persistent 1px idle border (form primaries)
  focusable: true           Tab focus paints the accent ring
  pressed                   pressed fill

The hovered(bool) signal is now built-in, so CursorPill's wrapper is
unnecessary. ButtonGroup wraps a Row+Repeater for the form-style
'pick one of N' pattern; panel-cursor-driven cases still compose
Buttons directly in a Row with per-instance hasCursor wiring.

Theme tokens move into a new [style] section in shell.toml:

  border-width        = 1
  focus-border-width  = 3
  idle-border-alpha   = 0.4
  hot-fill-alpha      = 0.08
  selected-fill-alpha = 0.18
  pressed-fill-alpha  = 0.22
  focus-fill-alpha    = 0.22

Style.qml parses these out of the same shell.toml [font] / [bar]
already reads, and exposes pre-computed Style.hotFill / selectedFill /
pressedFill / idleBorderColor / selectedAccentFill / borderWidth +
the existing focusBorder* tokens. Themes that don't ship a [style]
section get the previous defaults unchanged.

Dev gallery consolidates three sections (PillButton, CursorPill,
ChoiceButton) into Button + ButtonGroup, with the cursor model
sections renamed accordingly.
2026-05-18 12:09:13 -04:00