diff --git a/bin/omarchy-capture-screenrecording b/bin/omarchy-capture-screenrecording index fb67d880..05d802e2 100755 --- a/bin/omarchy-capture-screenrecording +++ b/bin/omarchy-capture-screenrecording @@ -255,7 +255,7 @@ stop_screenrecording() { } toggle_screenrecording_indicator() { - omarchy-shell -q indicators refresh + omarchy-shell -q Indicators refresh } screenrecording_active() { diff --git a/bin/omarchy-notification-weather b/bin/omarchy-notification-weather index 52835cdd..8187e4c9 100755 --- a/bin/omarchy-notification-weather +++ b/bin/omarchy-notification-weather @@ -2,4 +2,4 @@ # omarchy:summary=Show the current weather notification -omarchy-shell weatherFlyout show +omarchy-shell Weather show diff --git a/bin/omarchy-shell b/bin/omarchy-shell index 51c80435..29e870f1 100755 --- a/bin/omarchy-shell +++ b/bin/omarchy-shell @@ -24,7 +24,7 @@ Options: Examples: omarchy-shell shell ping omarchy-shell shell summon omarchy.settings "{}" - omarchy-shell -q indicators refresh + omarchy-shell -q Indicators refresh omarchy-shell shell listPlugins omarchy-shell menu toggle root USAGE diff --git a/bin/omarchy-toggle-idle b/bin/omarchy-toggle-idle index df1bb37e..cd734e63 100755 --- a/bin/omarchy-toggle-idle +++ b/bin/omarchy-toggle-idle @@ -3,4 +3,4 @@ # omarchy:summary=Toggle idle behavior so the system either idles normally or stays awake omarchy-shell idle toggle -omarchy-shell -q indicators refresh +omarchy-shell -q Indicators refresh diff --git a/bin/omarchy-toggle-nightlight b/bin/omarchy-toggle-nightlight index 30c86173..b835bff6 100755 --- a/bin/omarchy-toggle-nightlight +++ b/bin/omarchy-toggle-nightlight @@ -45,4 +45,4 @@ else hyprctl hyprsunset temperature $OFF_TEMP fi -omarchy-shell -q indicators refresh >/dev/null 2>&1 || true +omarchy-shell -q Indicators refresh diff --git a/bin/omarchy-toggle-notification-silencing b/bin/omarchy-toggle-notification-silencing index bff86131..ee336e3d 100755 --- a/bin/omarchy-toggle-notification-silencing +++ b/bin/omarchy-toggle-notification-silencing @@ -3,4 +3,4 @@ # omarchy:summary=Toggle notification do-not-disturb mode state=$(omarchy-shell notifications toggleDnd 2>/dev/null || echo "") -omarchy-shell -q indicators refresh +omarchy-shell -q Indicators refresh diff --git a/bin/omarchy-update-available-reset b/bin/omarchy-update-available-reset index 691f870b..d2817fff 100755 --- a/bin/omarchy-update-available-reset +++ b/bin/omarchy-update-available-reset @@ -2,5 +2,5 @@ # omarchy:summary=Ensure the status bar icon offering the available update is removed -omarchy-shell -q systemUpdate refresh +omarchy-shell -q SystemUpdate refresh exit 0 diff --git a/docs/omarchy-shell.md b/docs/omarchy-shell.md index 61aa5ce6..c778e286 100644 --- a/docs/omarchy-shell.md +++ b/docs/omarchy-shell.md @@ -77,9 +77,9 @@ individual plugins (`bar`, `image-selector`, …). "centerAnchor": "calendar", "fontFamily": "JetBrainsMono Nerd Font", "layout": { - "left": [ { "id": "omarchy" } ], + "left": [ { "id": "Omarchy" } ], "center": [ { "id": "calendar", "format": "HH:mm" } ], - "right": [ { "id": "audioPanel" } ] + "right": [ { "id": "AudioPanel" } ] } }, "plugins": [ diff --git a/shell/README.md b/shell/README.md index f50899e9..e1f2191f 100644 --- a/shell/README.md +++ b/shell/README.md @@ -168,12 +168,12 @@ rewrites the `bar` subtree from the current `shell-defaults.json`. "bar": { "position": "top", "transparent": false, - "centerAnchor": "clock", + "centerAnchor": "Clock", "layout": { - "left": [ { "id": "omarchy" }, { "id": "workspaces" } ], - "center": [ { "id": "clock", "format": "HH:mm" } ], + "left": [ { "id": "Omarchy" }, { "id": "Workspaces" } ], + "center": [ { "id": "Clock", "format": "HH:mm" } ], "right": [ - { "id": "audioPanel" } + { "id": "AudioPanel" } ] } }, @@ -195,7 +195,7 @@ rewrites the `bar` subtree from the current `shell-defaults.json`. with the shell IPC. First-party plugins are always enabled. 4. **Multiple instances** are allowed when a manifest sets `allowMultiple: true`. Each instance is independent — e.g. two clock - widgets in different timezones are just two `{"id":"clock", "timezone": ...}` + widgets in different timezones are just two `{"id":"Clock", "timezone": ...}` entries with their own values. 5. **Idle timings are top-level.** `idle.screensaver` and `idle.lock` are seconds since user idle began, so the default lock fires at 300s diff --git a/shell/plugins/bar/Bar.qml b/shell/plugins/bar/Bar.qml index 437cb608..19a75074 100644 --- a/shell/plugins/bar/Bar.qml +++ b/shell/plugins/bar/Bar.qml @@ -31,7 +31,7 @@ Item { property var fallbackBarConfig: ({ position: "top", transparent: false, - centerAnchor: "clock", + centerAnchor: "Clock", layout: { left: [], center: [], right: [] } }) property var layoutConfig: fallbackBarConfig.layout @@ -130,7 +130,7 @@ Item { var trayEntry = null var result = [] for (var i = 0; i < entries.length; i++) { - if (entryId(entries[i]) === "tray") trayEntry = entries[i] + if (entryId(entries[i]) === "Tray") trayEntry = entries[i] else result.push(entries[i]) } if (trayEntry) { @@ -205,10 +205,7 @@ Item { } function canonicalWidgetId(name) { - switch (String(name)) { - case "weatherFlyout": return "weather" - default: return String(name) - } + return String(name) } function expandPath(path) { diff --git a/shell/plugins/bar/FirstPartyWidgets.qml b/shell/plugins/bar/FirstPartyWidgets.qml index 8c8bc050..7f1c8294 100644 --- a/shell/plugins/bar/FirstPartyWidgets.qml +++ b/shell/plugins/bar/FirstPartyWidgets.qml @@ -6,26 +6,26 @@ QtObject { required property var barWidgetRegistry readonly property var metadata: ({ - "omarchy": { displayName: "Omarchy menu", description: "Launches the Omarchy menu", category: "Compositor", allowMultiple: false }, - "workspaces": { displayName: "Workspaces", description: "Workspace number indicators", category: "Compositor", allowMultiple: false }, - "media": { displayName: "Media", description: "MPRIS now-playing with playback controls", category: "Media", allowMultiple: false }, - "audioPanel": { displayName: "Audio", description: "Volume slider, output picker, per-app mixer", category: "Audio", allowMultiple: false, sourceDir: "../panels", sourceName: "Audio" }, - "monitorPanel": { displayName: "Display", description: "Brightness slider and laptop display controls", category: "System", allowMultiple: false, sourceDir: "../panels", sourceName: "Monitor" }, - "networkPanel": { displayName: "Network", description: "Wi-Fi list and connection state", category: "Network", allowMultiple: false, sourceDir: "../panels", sourceName: "Network" }, - "powerPanel": { displayName: "Power", description: "Battery, power profile, and system stats", category: "System", allowMultiple: false, sourceDir: "../panels", sourceName: "Power" }, - "bluetoothPanel": { displayName: "Bluetooth", description: "Bluetooth device list with connect/disconnect", category: "Network", allowMultiple: false, sourceDir: "../panels", sourceName: "Bluetooth" }, - "clock": { displayName: "Clock", description: "Day/time label; click to toggle alternate format", category: "Time", allowMultiple: false, settingsForm: "clockSettings" }, - "indicators": { displayName: "Indicators", description: "Manual state indicators", category: "Status", allowMultiple: false }, - "notificationCenter": { displayName: "Notification center", description: "Recent notifications + DND", category: "Status", allowMultiple: false }, - "systemUpdate": { displayName: "System update", description: "Indicates available system updates", category: "System", allowMultiple: false }, - "systemStats": { displayName: "System stats", description: "CPU icon — hover for graphs, click to open btop", category: "System", allowMultiple: false }, - "tray": { displayName: "System tray", description: "Status notifier items", category: "Status", allowMultiple: false }, - "weather": { displayName: "Weather", description: "Weather pill with detail popup", category: "Info", allowMultiple: false, settingsForm: "weatherSettings" }, - "microphone": { displayName: "Microphone", description: "Mic input state and mute toggle", category: "Audio", allowMultiple: false }, - "activeWindow": { displayName: "Active window", description: "Title of the focused window", category: "Compositor", allowMultiple: false }, - "keyboardLayout": { displayName: "Keyboard layout", description: "Current xkb layout, click cycles", category: "Compositor", allowMultiple: false }, - "lockKeys": { displayName: "Lock keys", description: "Caps / Num / Scroll lock indicators", category: "System", allowMultiple: false }, - "spacer": { displayName: "Spacer", description: "Configurable blank space", category: "Layout", allowMultiple: true, settingsForm: "spacerSettings" } + "Omarchy": { displayName: "Omarchy menu", description: "Launches the Omarchy menu", category: "Compositor", allowMultiple: false }, + "Workspaces": { displayName: "Workspaces", description: "Workspace number indicators", category: "Compositor", allowMultiple: false }, + "Media": { displayName: "Media", description: "MPRIS now-playing with playback controls", category: "Media", allowMultiple: false }, + "AudioPanel": { displayName: "Audio", description: "Volume slider, output picker, per-app mixer", category: "Audio", allowMultiple: false, sourceDir: "../panels", sourceName: "Audio" }, + "MonitorPanel": { displayName: "Display", description: "Brightness slider and laptop display controls", category: "System", allowMultiple: false, sourceDir: "../panels", sourceName: "Monitor" }, + "NetworkPanel": { displayName: "Network", description: "Wi-Fi list and connection state", category: "Network", allowMultiple: false, sourceDir: "../panels", sourceName: "Network" }, + "PowerPanel": { displayName: "Power", description: "Battery, power profile, and system stats", category: "System", allowMultiple: false, sourceDir: "../panels", sourceName: "Power" }, + "BluetoothPanel": { displayName: "Bluetooth", description: "Bluetooth device list with connect/disconnect", category: "Network", allowMultiple: false, sourceDir: "../panels", sourceName: "Bluetooth" }, + "Clock": { displayName: "Clock", description: "Day/time label; click to toggle alternate format", category: "Time", allowMultiple: false, settingsForm: "clockSettings" }, + "Indicators": { displayName: "Indicators", description: "Manual state indicators", category: "Status", allowMultiple: false }, + "NotificationCenter": { displayName: "Notification center", description: "Recent notifications + DND", category: "Status", allowMultiple: false }, + "SystemUpdate": { displayName: "System update", description: "Indicates available system updates", category: "System", allowMultiple: false }, + "SystemStats": { displayName: "System stats", description: "CPU icon — hover for graphs, click to open btop", category: "System", allowMultiple: false }, + "Tray": { displayName: "System tray", description: "Status notifier items", category: "Status", allowMultiple: false }, + "Weather": { displayName: "Weather", description: "Weather pill with detail popup", category: "Info", allowMultiple: false, settingsForm: "weatherSettings" }, + "Microphone": { displayName: "Microphone", description: "Mic input state and mute toggle", category: "Audio", allowMultiple: false }, + "ActiveWindow": { displayName: "Active window", description: "Title of the focused window", category: "Compositor", allowMultiple: false }, + "KeyboardLayout": { displayName: "Keyboard layout", description: "Current xkb layout, click cycles", category: "Compositor", allowMultiple: false }, + "LockKeys": { displayName: "Lock keys", description: "Caps / Num / Scroll lock indicators", category: "System", allowMultiple: false }, + "Spacer": { displayName: "Spacer", description: "Configurable blank space", category: "Layout", allowMultiple: true, settingsForm: "spacerSettings" } }) property var registeredComponents: ({}) diff --git a/shell/plugins/bar/README.md b/shell/plugins/bar/README.md index 3155cb1c..bfef7be7 100644 --- a/shell/plugins/bar/README.md +++ b/shell/plugins/bar/README.md @@ -26,20 +26,20 @@ Example `shell.json` (bar subtree only shown): "bar": { "position": "top", "transparent": false, - "centerAnchor": "clock", + "centerAnchor": "Clock", "layout": { "left": [ - { "id": "omarchy" }, - { "id": "spacer", "size": 12 }, - { "id": "workspaces" } + { "id": "Omarchy" }, + { "id": "Spacer", "size": 12 }, + { "id": "Workspaces" } ], "center": [ - { "id": "media" }, - { "id": "clock", "format": "HH:mm" } + { "id": "Media" }, + { "id": "Clock", "format": "HH:mm" } ], "right": [ - { "id": "audioPanel" }, - { "id": "powerPanel" } + { "id": "AudioPanel" }, + { "id": "PowerPanel" } ] } } @@ -54,17 +54,17 @@ Example `shell.json` (bar subtree only shown): | Name | What it does | Interactions | |---|---|---| -| `omarchy` | Omarchy menu launcher | left = menu · right = terminal | -| `workspaces` | Hyprland workspace switcher | left = focus workspace | -| `clock` | Date/time label | left = alternate format · right = timezone selector | -| `media` | MPRIS now-playing — scrolling track + artist, cover-art popup | left = play/pause · middle = next · scroll = prev/next · right = popup | -| `indicators` | Manual state indicators | left = indicator action | -| `notificationCenter` | Bell with badge + popup with recent notifications, DND toggle | left = popup · right = toggle DND | -| `systemUpdate` | Available update indicator | left = update | -| `systemStats` | Inline CPU + memory sparklines, popup with detail | left = popup · right = terminal | -| `tray` | System tray | hover = reveal drawer · right on chevron = manage | -| `weather` | Weather icon + popup with forecast | left = popup · right = full notification | -| `microphone` | Mic icon + scroll volume | left = mute toggle · middle = audio panel · scroll = source volume | +| `Omarchy` | Omarchy menu launcher | left = menu · right = terminal | +| `Workspaces` | Hyprland workspace switcher | left = focus workspace | +| `Clock` | Date/time label | left = alternate format · right = timezone selector | +| `Media` | MPRIS now-playing — scrolling track + artist, cover-art popup | left = play/pause · middle = next · scroll = prev/next · right = popup | +| `Indicators` | Manual state indicators | left = indicator action | +| `NotificationCenter` | Bell with badge + popup with recent notifications, DND toggle | left = popup · right = toggle DND | +| `SystemUpdate` | Available update indicator | left = update | +| `SystemStats` | Inline CPU + memory sparklines, popup with detail | left = popup · right = terminal | +| `Tray` | System tray | hover = reveal drawer · right on chevron = manage | +| `Weather` | Weather icon + popup with forecast | left = popup · right = full notification | +| `Microphone` | Mic icon + scroll volume | left = mute toggle · middle = audio panel · scroll = source volume | ### First-party panels (in `../panels/`) @@ -76,7 +76,7 @@ Example `shell.json` (bar subtree only shown): | `panels.bluetooth` | Bluetooth icon + popup with device list, connect/disconnect, battery | left = popup · right = toggle radio · middle = bluetoothctl TUI | | `panels.monitor` | Brightness and laptop display controls | left = popup | -The `indicators` widget loads individual bar indicators from `indicators/`, ordered by its `items` array in `shell.json`. Rich panels such as `powerPanel`, `networkPanel`, and `audioPanel` live in `../panels/` above. +The `Indicators` widget loads individual bar indicators from `indicators/`, ordered by its `items` array in `shell.json`. Rich panels such as `PowerPanel`, `NetworkPanel`, and `AudioPanel` live in `../panels/` above. ## Orientation @@ -94,9 +94,9 @@ Command module: "bar": { "layout": { "right": [ - { "id": "tray" }, + { "id": "Tray" }, { "id": "vpn", "type": "command", "exec": "~/.config/omarchy/bar/scripts/vpn-status", "interval": 5, "tooltip": "VPN", "onClick": "nm-connection-editor" }, - { "id": "audioPanel" } + { "id": "AudioPanel" } ] } } @@ -118,7 +118,7 @@ QML module: "layout": { "right": [ { "id": "gpu", "type": "qml" }, - { "id": "audioPanel" } + { "id": "AudioPanel" } ] } } @@ -169,10 +169,10 @@ Widgets receive `bar` (the shell root), `moduleName` (string), and `settings` (o - `bar.showTooltip(target, text)` / `bar.hideTooltip(target)` — shared tooltip popup - `bar.requestPopout(owner)` / `bar.releasePopout(owner)` — one-popup-at-a-time coordinator -First-party bar widgets live in `widgets/.qml`; first-party panels -live in `../panels/.qml` and expose IPC targets such as -`panels.audio`. The compatibility bar layout ids remain `audioPanel`, -`networkPanel`, and so on, and are picked up by the shell's +First-party bar widgets live in `widgets/.qml`; first-party panels +live in `../panels/.qml` and expose IPC targets such as +`panels.audio`. Bar layout ids use UpperCamelCase names such as `AudioPanel`, +`NetworkPanel`, and so on, and are picked up by the shell's `BarWidgetRegistry` at startup; reference one by `id` in any layout list. Third-party widgets ship as separate plugins under diff --git a/shell/plugins/bar/indicators/dictation.qml b/shell/plugins/bar/indicators/Dictation.qml similarity index 100% rename from shell/plugins/bar/indicators/dictation.qml rename to shell/plugins/bar/indicators/Dictation.qml diff --git a/shell/plugins/bar/indicators/dnd.qml b/shell/plugins/bar/indicators/Dnd.qml similarity index 100% rename from shell/plugins/bar/indicators/dnd.qml rename to shell/plugins/bar/indicators/Dnd.qml diff --git a/shell/plugins/bar/indicators/nightlight.qml b/shell/plugins/bar/indicators/NightLight.qml similarity index 100% rename from shell/plugins/bar/indicators/nightlight.qml rename to shell/plugins/bar/indicators/NightLight.qml diff --git a/shell/plugins/bar/indicators/screenrecording.qml b/shell/plugins/bar/indicators/ScreenRecording.qml similarity index 100% rename from shell/plugins/bar/indicators/screenrecording.qml rename to shell/plugins/bar/indicators/ScreenRecording.qml diff --git a/shell/plugins/bar/indicators/stayAwake.qml b/shell/plugins/bar/indicators/StayAwake.qml similarity index 100% rename from shell/plugins/bar/indicators/stayAwake.qml rename to shell/plugins/bar/indicators/StayAwake.qml diff --git a/shell/plugins/bar/widgets/activeWindow.qml b/shell/plugins/bar/widgets/ActiveWindow.qml similarity index 98% rename from shell/plugins/bar/widgets/activeWindow.qml rename to shell/plugins/bar/widgets/ActiveWindow.qml index d84d96f3..580a0bf5 100644 --- a/shell/plugins/bar/widgets/activeWindow.qml +++ b/shell/plugins/bar/widgets/ActiveWindow.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "activeWindow" + moduleName: "ActiveWindow" readonly property var toplevel: ToplevelManager.activeToplevel diff --git a/shell/plugins/bar/widgets/clock.qml b/shell/plugins/bar/widgets/Clock.qml similarity index 98% rename from shell/plugins/bar/widgets/clock.qml rename to shell/plugins/bar/widgets/Clock.qml index ca4f32a6..2a5a83dc 100644 --- a/shell/plugins/bar/widgets/clock.qml +++ b/shell/plugins/bar/widgets/Clock.qml @@ -5,7 +5,7 @@ import qs.Ui BarWidget { id: root - moduleName: "clock" + moduleName: "Clock" property bool alt: false diff --git a/shell/plugins/bar/widgets/indicators.qml b/shell/plugins/bar/widgets/Indicators.qml similarity index 99% rename from shell/plugins/bar/widgets/indicators.qml rename to shell/plugins/bar/widgets/Indicators.qml index afd4825e..d842b09c 100644 --- a/shell/plugins/bar/widgets/indicators.qml +++ b/shell/plugins/bar/widgets/Indicators.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "indicators" + moduleName: "Indicators" readonly property int indicatorSlotExtent: Style.space(22) readonly property int inactiveSlotExtent: indicatorEntries.length * indicatorSlotExtent @@ -158,7 +158,7 @@ BarWidget { implicitHeight: root.vertical ? verticalIndicators.implicitHeight : horizontalIndicators.implicitHeight IpcHandler { - target: "indicators" + target: "Indicators" function refresh(): void { root.refreshRequested() diff --git a/shell/plugins/bar/widgets/keyboardLayout.qml b/shell/plugins/bar/widgets/KeyboardLayout.qml similarity index 98% rename from shell/plugins/bar/widgets/keyboardLayout.qml rename to shell/plugins/bar/widgets/KeyboardLayout.qml index b8220e5d..1bd8d784 100644 --- a/shell/plugins/bar/widgets/keyboardLayout.qml +++ b/shell/plugins/bar/widgets/KeyboardLayout.qml @@ -7,7 +7,7 @@ import qs.Commons BarWidget { id: root - moduleName: "keyboardLayout" + moduleName: "KeyboardLayout" property string layoutLabel: "" diff --git a/shell/plugins/bar/widgets/lockKeys.qml b/shell/plugins/bar/widgets/LockKeys.qml similarity index 99% rename from shell/plugins/bar/widgets/lockKeys.qml rename to shell/plugins/bar/widgets/LockKeys.qml index af67f47c..c68d62af 100644 --- a/shell/plugins/bar/widgets/lockKeys.qml +++ b/shell/plugins/bar/widgets/LockKeys.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "lockKeys" + moduleName: "LockKeys" property bool capsOn: false diff --git a/shell/plugins/bar/widgets/media.qml b/shell/plugins/bar/widgets/Media.qml similarity index 99% rename from shell/plugins/bar/widgets/media.qml rename to shell/plugins/bar/widgets/Media.qml index c9957162..ae3317c2 100644 --- a/shell/plugins/bar/widgets/media.qml +++ b/shell/plugins/bar/widgets/Media.qml @@ -6,7 +6,7 @@ import qs.Commons BarWidget { id: root - moduleName: "media" + moduleName: "Media" readonly property var players: Mpris.players ? Mpris.players.values : [] diff --git a/shell/plugins/bar/widgets/microphone.qml b/shell/plugins/bar/widgets/Microphone.qml similarity index 98% rename from shell/plugins/bar/widgets/microphone.qml rename to shell/plugins/bar/widgets/Microphone.qml index 33e84ddf..7d41843e 100644 --- a/shell/plugins/bar/widgets/microphone.qml +++ b/shell/plugins/bar/widgets/Microphone.qml @@ -5,7 +5,7 @@ import qs.Ui BarWidget { id: root - moduleName: "microphone" + moduleName: "Microphone" readonly property var source: Pipewire.defaultAudioSource diff --git a/shell/plugins/bar/widgets/notificationCenter.qml b/shell/plugins/bar/widgets/NotificationCenter.qml similarity index 99% rename from shell/plugins/bar/widgets/notificationCenter.qml rename to shell/plugins/bar/widgets/NotificationCenter.qml index 4c9202e2..6742a33e 100644 --- a/shell/plugins/bar/widgets/notificationCenter.qml +++ b/shell/plugins/bar/widgets/NotificationCenter.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "notificationCenter" + moduleName: "NotificationCenter" property bool popupOpen: false diff --git a/shell/plugins/bar/widgets/omarchy.qml b/shell/plugins/bar/widgets/Omarchy.qml similarity index 95% rename from shell/plugins/bar/widgets/omarchy.qml rename to shell/plugins/bar/widgets/Omarchy.qml index 57222008..6b1e0cf2 100644 --- a/shell/plugins/bar/widgets/omarchy.qml +++ b/shell/plugins/bar/widgets/Omarchy.qml @@ -3,7 +3,7 @@ import qs.Ui BarWidget { id: root - moduleName: "omarchy" + moduleName: "Omarchy" implicitWidth: button.implicitWidth implicitHeight: button.implicitHeight diff --git a/shell/plugins/bar/widgets/spacer.qml b/shell/plugins/bar/widgets/Spacer.qml similarity index 91% rename from shell/plugins/bar/widgets/spacer.qml rename to shell/plugins/bar/widgets/Spacer.qml index 5cb38c6a..3f555207 100644 --- a/shell/plugins/bar/widgets/spacer.qml +++ b/shell/plugins/bar/widgets/Spacer.qml @@ -3,7 +3,7 @@ import qs.Ui BarWidget { id: root - moduleName: "spacer" + moduleName: "Spacer" readonly property int span: settings && settings.size !== undefined ? Number(settings.size) : 12 diff --git a/shell/plugins/bar/widgets/systemStats.qml b/shell/plugins/bar/widgets/SystemStats.qml similarity index 99% rename from shell/plugins/bar/widgets/systemStats.qml rename to shell/plugins/bar/widgets/SystemStats.qml index 0f40b07c..971539d0 100644 --- a/shell/plugins/bar/widgets/systemStats.qml +++ b/shell/plugins/bar/widgets/SystemStats.qml @@ -6,7 +6,7 @@ import qs.Commons BarWidget { id: root - moduleName: "systemStats" + moduleName: "SystemStats" property real cpuPercent: 0 diff --git a/shell/plugins/bar/widgets/systemUpdate.qml b/shell/plugins/bar/widgets/SystemUpdate.qml similarity index 95% rename from shell/plugins/bar/widgets/systemUpdate.qml rename to shell/plugins/bar/widgets/SystemUpdate.qml index 0af485fe..f0af7fd4 100644 --- a/shell/plugins/bar/widgets/systemUpdate.qml +++ b/shell/plugins/bar/widgets/SystemUpdate.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "systemUpdate" + moduleName: "SystemUpdate" property bool updateAvailable: false @@ -18,7 +18,7 @@ BarWidget { implicitHeight: button.implicitHeight IpcHandler { - target: "systemUpdate" + target: "SystemUpdate" function refresh(): void { root.refresh() diff --git a/shell/plugins/bar/widgets/tray.qml b/shell/plugins/bar/widgets/Tray.qml similarity index 99% rename from shell/plugins/bar/widgets/tray.qml rename to shell/plugins/bar/widgets/Tray.qml index b88287db..567bcf01 100644 --- a/shell/plugins/bar/widgets/tray.qml +++ b/shell/plugins/bar/widgets/Tray.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "tray" + moduleName: "Tray" property bool expanded: false property bool managePopupOpen: false @@ -67,7 +67,7 @@ BarWidget { function persistTrayState(pinned, hidden) { if (!root.bar || !root.bar.shell || typeof root.bar.shell.updateEntryInline !== "function") return - root.bar.shell.updateEntryInline("tray", { id: "tray", pinned: pinned, hidden: hidden }) + root.bar.shell.updateEntryInline("Tray", { id: "Tray", pinned: pinned, hidden: hidden }) } function togglePin(iid) { diff --git a/shell/plugins/bar/widgets/weather.qml b/shell/plugins/bar/widgets/Weather.qml similarity index 95% rename from shell/plugins/bar/widgets/weather.qml rename to shell/plugins/bar/widgets/Weather.qml index 988b1a4f..61bff736 100644 --- a/shell/plugins/bar/widgets/weather.qml +++ b/shell/plugins/bar/widgets/Weather.qml @@ -4,7 +4,7 @@ import qs.Ui BarWidget { id: root - moduleName: "weather" + moduleName: "Weather" function injectPanel() { var target = panelLoader.item @@ -32,7 +32,7 @@ BarWidget { Loader { id: panelLoader active: true - source: Qt.resolvedUrl("../../panels/weather.qml") + source: Qt.resolvedUrl("../../panels/Weather.qml") visible: false onLoaded: { root.injectPanel() diff --git a/shell/plugins/bar/widgets/workspaces.qml b/shell/plugins/bar/widgets/Workspaces.qml similarity index 98% rename from shell/plugins/bar/widgets/workspaces.qml rename to shell/plugins/bar/widgets/Workspaces.qml index b26e5e56..ab134320 100644 --- a/shell/plugins/bar/widgets/workspaces.qml +++ b/shell/plugins/bar/widgets/Workspaces.qml @@ -6,7 +6,7 @@ import qs.Ui BarWidget { id: root - moduleName: "workspaces" + moduleName: "Workspaces" function workspaceById(id) { var values = Hyprland.workspaces.values diff --git a/shell/plugins/dev-gallery/GalleryPanel.qml b/shell/plugins/dev-gallery/GalleryPanel.qml index 7da1c8e2..61d4a77e 100644 --- a/shell/plugins/dev-gallery/GalleryPanel.qml +++ b/shell/plugins/dev-gallery/GalleryPanel.qml @@ -105,7 +105,7 @@ Item { property string choiceDemoValue: "top" property bool toggleDemoOn: true property bool toggleSquareOn: false - property string dropdownDemoValue: "clock" + property string dropdownDemoValue: "Clock" property string searchableDemoValue: "" property int numberDemoValue: 15 @@ -1523,7 +1523,7 @@ Item { width: Style.spacing.dropdownWidth label: "Center anchor" fontFamily: root.fontFamily - options: ["clock", "weather", "powerPanel"] + options: ["Clock", "Weather", "PowerPanel"] value: root.dropdownDemoValue hasCursor: root.focusSection === "dropdown" && root.selectedIndex === 0 onHovered: function(h) { @@ -1586,15 +1586,15 @@ Item { } onHasCursorChanged: if (hasCursor) root.ensureCursorVisible(this) options: [ - { value: "clock", label: "Clock", description: "Time + date display" }, - { value: "weather", label: "Weather", description: "Local conditions and forecast" }, - { value: "powerPanel", label: "Power", description: "Charge level + power profile" }, + { value: "Clock", label: "Clock", description: "Time + date display" }, + { value: "Weather", label: "Weather", description: "Local conditions and forecast" }, + { value: "PowerPanel", label: "Power", description: "Charge level + power profile" }, { value: "audio", label: "Audio", description: "Output sink + volume" }, { value: "network", label: "Network", description: "Wi-Fi + ethernet status" }, { value: "bluetooth", label: "Bluetooth", description: "Paired and nearby devices" }, { value: "monitor", label: "Monitor", description: "Brightness + scale" }, - { value: "media", label: "Media", description: "Now-playing + transport" }, - { value: "workspaces", label: "Workspaces", description: "Hyprland workspace pills" }, + { value: "Media", label: "Media", description: "Now-playing + transport" }, + { value: "Workspaces", label: "Workspaces", description: "Hyprland workspace pills" }, { value: "system-tray", label: "System tray", description: "StatusNotifierItem icons" }, { value: "omarchy-menu", label: "Omarchy menu", description: "Launcher / system menu" }, { value: "power-profiles", label: "Power profiles", description: "Performance / balanced / saver" }, diff --git a/shell/plugins/panels/Audio.qml b/shell/plugins/panels/Audio.qml index 47d4f15e..12fa8e9a 100644 --- a/shell/plugins/panels/Audio.qml +++ b/shell/plugins/panels/Audio.qml @@ -9,7 +9,7 @@ import qs.Commons Panel { id: root - moduleName: "audioPanel" + moduleName: "AudioPanel" ipcTarget: "panels.audio" readonly property var sink: Pipewire.defaultAudioSink diff --git a/shell/plugins/panels/Bluetooth.qml b/shell/plugins/panels/Bluetooth.qml index aa2411e1..b5825e57 100644 --- a/shell/plugins/panels/Bluetooth.qml +++ b/shell/plugins/panels/Bluetooth.qml @@ -8,7 +8,7 @@ import qs.Commons Panel { id: root - moduleName: "bluetoothPanel" + moduleName: "BluetoothPanel" ipcTarget: "panels.bluetooth" // Address -> true while we are waiting for a click-initiated pair to land diff --git a/shell/plugins/panels/Monitor.qml b/shell/plugins/panels/Monitor.qml index 26790a76..7241db45 100644 --- a/shell/plugins/panels/Monitor.qml +++ b/shell/plugins/panels/Monitor.qml @@ -7,7 +7,7 @@ import qs.Commons Panel { id: root - moduleName: "monitorPanel" + moduleName: "MonitorPanel" ipcTarget: "panels.monitor" manageIpc: false diff --git a/shell/plugins/panels/Network.qml b/shell/plugins/panels/Network.qml index 6b6ffad3..7c19e6c8 100644 --- a/shell/plugins/panels/Network.qml +++ b/shell/plugins/panels/Network.qml @@ -7,7 +7,7 @@ import qs.Commons Panel { id: root - moduleName: "networkPanel" + moduleName: "NetworkPanel" ipcTarget: "panels.network" // Centralized close so callers can't forget to drop the passphrase prompt. diff --git a/shell/plugins/panels/Power.qml b/shell/plugins/panels/Power.qml index b29b6925..5c024ea1 100644 --- a/shell/plugins/panels/Power.qml +++ b/shell/plugins/panels/Power.qml @@ -7,7 +7,7 @@ import qs.Ui Panel { id: root - moduleName: "powerPanel" + moduleName: "PowerPanel" ipcTarget: "panels.power" property var batteryInfo: ({}) property var systemInfo: ({}) diff --git a/shell/plugins/panels/weather.qml b/shell/plugins/panels/Weather.qml similarity index 99% rename from shell/plugins/panels/weather.qml rename to shell/plugins/panels/Weather.qml index 496684ad..88bd305d 100644 --- a/shell/plugins/panels/weather.qml +++ b/shell/plugins/panels/Weather.qml @@ -6,8 +6,8 @@ import qs.Ui Panel { id: root - moduleName: "weatherPanel" - ipcTarget: "weather" + moduleName: "WeatherPanel" + ipcTarget: "Weather" property var anchorItem: null @@ -22,7 +22,7 @@ Panel { } IpcHandler { - target: "weatherFlyout" + target: "Weather" function show(): void { root.open() } function toggle(): void { root.toggle() } } diff --git a/shell/plugins/settings/SettingsPanel.qml b/shell/plugins/settings/SettingsPanel.qml index 960bb847..bae6721a 100644 --- a/shell/plugins/settings/SettingsPanel.qml +++ b/shell/plugins/settings/SettingsPanel.qml @@ -128,16 +128,16 @@ Item { bar: { position: "top", transparent: false, - centerAnchor: "clock", + centerAnchor: "Clock", layout: { - left: [{ id: "omarchy" }, { id: "workspaces" }], + left: [{ id: "Omarchy" }, { id: "Workspaces" }], center: [ - { id: "clock", format: "dddd HH:mm", formatAlt: "dd MMMM 'W'ww yyyy", verticalFormat: "HH\n\u2014\nmm" }, - { id: "weather" }, { id: "indicators", items: [ "dnd", "nightlight", "stayAwake", "screenrecording", "dictation" ] }, { id: "systemUpdate" } + { id: "Clock", format: "dddd HH:mm", formatAlt: "dd MMMM 'W'ww yyyy", verticalFormat: "HH\n\u2014\nmm" }, + { id: "Weather" }, { id: "Indicators", items: [ "Dnd", "NightLight", "StayAwake", "ScreenRecording", "Dictation" ] }, { id: "SystemUpdate" } ], right: [ - { id: "tray" }, { id: "bluetoothPanel" }, { id: "networkPanel" }, - { id: "audioPanel" }, { id: "monitorPanel" }, { id: "powerPanel" } + { id: "Tray" }, { id: "BluetoothPanel" }, { id: "NetworkPanel" }, + { id: "AudioPanel" }, { id: "MonitorPanel" }, { id: "PowerPanel" } ] } }, @@ -145,7 +145,7 @@ Item { }) property var defaultConfig: builtinShellConfig - property var draft: ({ version: 1, bar: { position: "top", transparent: false, centerAnchor: "clock", layout: { left: [], center: [], right: [] } }, plugins: [] }) + property var draft: ({ version: 1, bar: { position: "top", transparent: false, centerAnchor: "Clock", layout: { left: [], center: [], right: [] } }, plugins: [] }) property int draftRevision: 0 property bool suppressReload: false @@ -307,10 +307,7 @@ Item { } function canonicalWidgetId(id) { - switch (String(id || "")) { - case "weatherFlyout": return "weather" - default: return String(id || "") - } + return String(id || "") } function widgetMetadata(id) { @@ -364,7 +361,7 @@ Item { function widgetAllowsMultiple(id) { var meta = widgetMetadata(id) if (meta.allowMultiple === true) return true - return String(id) === "spacer" + return String(id) === "Spacer" } function catalogIds() { diff --git a/shell/shell-defaults.json b/shell/shell-defaults.json index 2678bd21..c018dd6b 100644 --- a/shell/shell-defaults.json +++ b/shell/shell-defaults.json @@ -7,58 +7,58 @@ "bar": { "position": "top", "transparent": false, - "centerAnchor": "clock", + "centerAnchor": "Clock", "layout": { "left": [ { - "id": "omarchy" + "id": "Omarchy" }, { - "id": "workspaces" + "id": "Workspaces" } ], "center": [ { - "id": "clock", + "id": "Clock", "format": "dddd HH:mm", "formatAlt": "dd MMMM 'W'ww yyyy", "verticalFormat": "HH\n\u2014\nmm" }, { - "id": "weather" + "id": "Weather" }, { - "id": "indicators", + "id": "Indicators", "items": [ - "dnd", - "nightlight", - "stayAwake", - "screenrecording", - "dictation" + "Dnd", + "NightLight", + "StayAwake", + "ScreenRecording", + "Dictation" ] }, { - "id": "systemUpdate" + "id": "SystemUpdate" } ], "right": [ { - "id": "tray" + "id": "Tray" }, { - "id": "bluetoothPanel" + "id": "BluetoothPanel" }, { - "id": "networkPanel" + "id": "NetworkPanel" }, { - "id": "audioPanel" + "id": "AudioPanel" }, { - "id": "monitorPanel" + "id": "MonitorPanel" }, { - "id": "powerPanel" + "id": "PowerPanel" } ] } diff --git a/shell/shell.qml b/shell/shell.qml index ab27c2e9..428eba55 100644 --- a/shell/shell.qml +++ b/shell/shell.qml @@ -44,11 +44,11 @@ ShellRoot { bar: { position: "top", transparent: false, - centerAnchor: "clock", + centerAnchor: "Clock", layout: { - left: [{ id: "omarchy" }, { id: "workspaces" }], - center: [{ id: "clock", format: "dddd HH:mm" }], - right: [{ id: "audioPanel" }] + left: [{ id: "Omarchy" }, { id: "Workspaces" }], + center: [{ id: "Clock", format: "dddd HH:mm" }], + right: [{ id: "AudioPanel" }] } }, plugins: []