Commit Graph
757 Commits
Author SHA1 Message Date
bbedward d8aca6ab48 grids: hand committed layouts and display picks to callbacks, not var signals
fixes #3746
2026-10-10 18:00:39 -04:00
Marlon Kranzandpurian23 6d331b8fde fix(settings): show what frame mode controls (#3654)
* fix(settings): show what frame mode controls

With frame mode on, many settings did nothing or were hidden while
still applying, and nothing said so. The frame takes its color and
opacity from the first non-island bar, but that bar's Surface card is
hidden while the frame styles it, so neither had a visible control.

Add Background and Override/Opacity rows to the Appearance Frame card,
bound to the same frame bar the renderer reads. Settings the frame
provides in connected mode get a "Managed by Frame in Connected Mode"
note (Interface style border, corner style, background blur and dock
opacity, shadow targets, launcher border); settings with no effect get
"Disabled by Frame Mode" (maximize detection, bar shadow, the bar's
overlay layer in separate mode). Bar size, the bar's overlay layer in
connected mode, dock Over fullscreen and the controls of overlay-layer
docks and launchers are shown again, since they still apply.
Notification Over fullscreen shows as forced on when the frame covers
every display, and launcher rows the Spotlight style ignores are
disabled.

Also relabel the frame Width row as Thickness, raise the inset padding
maximum to its automatic range, and drop a FrameWindow handler for the
removed frameOpacity signal. No new strings.

* settings: show what frame mode controls, fix review findings

---------

Co-authored-by: purian23 <[email protected]>
2026-10-10 00:37:54 -04:00
Marlon Kranzandpurian23 0444835016 fix(frame): make connected mode honor the settings it overrides (#3665)
* fix(frame): make connected mode honor the settings it overrides

Several frame-mode behaviors contradicted what the settings UI shows:

- Frame -> Blur gated blur for every shell surface in connected mode,
  including the Settings window, polkit, context menus, OSDs and toasts.
  WindowBlur now defaults to Background blur; only surfaces painted
  with the frame color (connected popouts, slideouts, Control Center)
  follow Frame -> Blur, and frame-owned surfaces are blurred by the
  frame as before.
- The notepad slideout painted its own fill at the notepad
  transparency. On screens where the frame owns connected chrome it now
  claims a frame surface (new connected_arc slot 5), so the frame paints
  it flush with the cutout, with fillets, and follows the slide.
- Notification popups painted a card surface on top of the frame body,
  stacking fills. That layer is transparent when the frame paints it.
- Connected mode stripped shadow, border and corner styling from every
  bar, including bars on displays without a frame, and hid the rows.
  Styling is now stripped and restored per bar based on whether it
  covers a frame display, re-checked on screen, frame display and
  display-name-mode changes.
- Auto popup gaps and Gap size were hidden in separate mode although
  they still apply there; they now hide only in connected mode.
- The launcher style picker was hidden in connected mode while Island
  still overrode the connected launcher. Connected mode now always uses
  the connected launcher; the picker shows Full, disabled, with a note
  linking to the Bar layout picker.
- The frame shadow ignored Shadows -> Apply to -> Bars.

* fix(frame): address review feedback on connected mode

- Skip bar style reconciliation while the screen list is empty, so a
  hotplug doesn't restore and re-strip every bar.
- Replace the 16 copies of the connector blur anchor and cutout in
  FrameWindow with a ConnectorBlurRegion inline component.
- Let connected mode use the island launcher again now that the island
  can sit in any bar. The picker offers Full and Island there and hides
  Spotlight, which opens the full launcher in that mode anyway; the note
  and the SettingsControlledBy bar target are dropped.

* frame: address review findings on connected mode

---------

Co-authored-by: purian23 <[email protected]>
2026-10-10 00:04:17 -04:00
purian23 938971e758 (settings): moar cleanup work on inactive sliders 2026-10-09 22:59:31 -04:00
Huỳnh Thiện Lộc 400f62316c feat(wallpaper): allow recursive cycling through subdirectories (#3739)
* feat(wallpaper): allow recursive cycling through subdirectories

* fix(wallpaper): persist root folder when recursively cycling without folder set
2026-10-09 22:53:29 -04:00
purian23 be26a06c2a feat(dbar): freedom to remove the only bar with hint warnings 2026-10-09 22:13:45 -04:00
bbedward d0f9954361 settings: move hero to qml-common 2026-10-09 16:20:59 -04:00
bbedward f988a57494 settings: some mild refactors based on feedback 2026-10-09 16:11:53 -04:00
bbedward aef801fc4b wallpaper: import material layouts, dms://wallpaper/install uri, profiles 2026-10-09 14:51:07 -04:00
bbedward 534913dc0b wheel: use WheelInput horizontal helper, make default action cycle
window on WS pill
2026-10-09 12:45:27 -04:00
purian23 e10102edc0 feat(mango): native mouse/touchpad & keyboard input support
- Hide blur toggle options until mango support is added
2026-10-09 05:55:47 -04:00
purian23 ea68399ef3 feat(blur): add configurable blur strength slider in all supported compositors
- Updated Hyprland defaults
2026-10-09 05:19:46 -04:00
purian23 2747a75198 hyprland: bring up features parity overhaul w/0.56+ and upcoming stable releases
- new blur variants, glow, wobble, motion blur and groupbar support
- new inputs support for mouse, touchpad and keyboard settings
- greeter, cheatsheet and scroll capture dispatch in Lua
- scrolling workspace screenshot focus fix
- fix scrolling screenshots from being cut-off on fractional-scale displays
- workspaces are keyed by address on the beta branch and upcoming stable release where named workspaces have no id
- bind flags, per-device binds, new window-rule keys and effects
- outputs default to preferred/auto/auto and gate HDR/VRR on hardwareDetails
- new dms setup/installer systemd session support on hyprland-session.target
2026-10-09 05:14:55 -04:00
purian23 39b0d40877 mango: bring up newly supported config dialects, systemd sessions & setups
- Auto detect the snake_case dialect of Mango master from the binary, write configs and respell existing fragments with:
 `dms config mango-migrate`
- Setup backs up and replaces config.conf, moves binds and rules into dms/
- Start DMS from mango-session.target with systemd or exec-once without
- fix cheatsheet run action and bind precedence, window-rule and display save updates
- Support urgent active tag, greeter loading  /etc/mango, per-screen overviews
2026-10-08 20:50:53 -04:00
bbedward 474b723faf keybinds: capture pressed shortcuts in the search fields
settings: add a cheatsheet button to the keyboard shortcuts page

fixes #3631
fixes #3632
2026-10-08 16:03:55 -04:00
bbedward 1a0e4b9979 settings: tweak sidebar shadow style to work better with opacity 2026-10-08 12:57:09 -04:00
bbedward f61a5d1211 lists: restore faded edges everywhere 2026-10-08 12:26:13 -04:00
purian23 c0f08f08cb refactor(island/settings): update notch mode & radius defaults
- Merge island satellites and standard bar goth corner options in shared code
- Update bar settings to collapse inactive sliders
2026-10-08 03:44:42 -04:00
purian23 f9d91cd21f feat(island): implement notch mode variant 2026-10-07 21:55:07 -04:00
bbedward b1dde74e4d settings: improve transition behavior 2026-10-07 19:22:24 -04:00
bbedward 4b0dfa67a0 desktop: add right click context menu for actions on compositors where
it doesnt interfere, with a setting to turn it off

Some compositors like kwin/labwc/sway cannot have this without breaking
some built in layering they do.

niri can have this, but for focus follow mouse it may need to be disabled.

fixes #3717
2026-10-07 15:18:39 -04:00
Marlon Kranz 72c23161e7 fix(hyprland): write window rules Hyprland 0.56 accepts, keep DMS windows opaque (#3655)
* fix(hyprland): write window rules Hyprland 0.56 accepts, keep DMS windows opaque

The Lua window-rule writer emitted match keys and effects Hyprland 0.56
does not know: `floating`/`pinned`/`initialised` as match keys and
`noborder`/`norounding` as effects. It now writes `float`/`pin` and
`border_size = 0`/`rounding = 0`; the parser still reads the old
spellings, so existing files load and are rewritten on the next save.
"No Rounding" now suppresses the corner radius so a rule has one
`rounding` key.

The rule editor no longer offers fields the Hyprland writer drops
(Window Opening output/workspace, Size Constraints, the Initialised
match), and Save is disabled while only one half of a move or size
pair is filled. Every window-rule write now reloads the compositor
through one helper, which also covers Hyprland.

DMS windows draw their own translucent background, so any compositor
opacity rule or decoration opacity multiplied on top of it. DMS now
keeps a hidden rule for its own app id: `opaque = true` on Hyprland
(applied after rule and decoration opacity, independent of order, and
leaving the window's own alpha alone) and `opacity 1.0` on niri, which
the store keeps last. It is re-added on start when missing and hidden
from the rules list and the focused-window menu.

Compositor layout gains a Hyprland "Window opacity" slider writing
decoration.active_opacity/inactive_opacity; 100 leaves the user's own
config in charge.

HyprlandService.reloadConfig queues callbacks: Proc keeps one callback
per id, so a reload requested while the layout writer's reload was
pending dropped its callback and left layout generation stuck.

* fix(windowrules): cap corner radius at 20

Hyprland 0.56's Lua window_rule rejects rounding above 20 ("value 24
is more than the maximum of 20") and the rule loses its rounding. The
Hyprland writer now clamps to 20, and the editor slider stops at 20
for every compositor.
2026-10-07 14:09:49 -04:00
Spyros Psarras 66e37ff843 network monitor: add hide when idle and compact mode options (#3569)
* network monitor: add hide when idle and compact mode options

* network monitor: keep the idle widget out of center layout spacing
2026-10-07 13:59:21 -04:00
bbedward b42fe6643f perf: gate idle work behind feature and capability state 2026-10-07 11:55:29 -04:00
Lars Artmannandbbedward 8e59341c50 feat(notifications): timed per-app popup mutes (1h / 4h) (#3628)
* feat(notifications): timed per-app popup mutes (1h / 4h) with expiry

* fix test assertions

* notifications: let a timed mute expire without taking the rule's other settings

---------

Co-authored-by: bbedward <[email protected]>
2026-10-07 10:25:38 -04:00
purian23 650b731164 feat(island): new workspace switcher activity 2026-10-07 03:20:25 -04:00
bbedward 98bf56cbcd windows: drop the qt decoration env, add a title bars toggle and go frameless for own chrome
fixes #3679
fixes #3572
2026-10-06 22:57:21 -04:00
purian23 54eb0ccaed plugins: stipe dupe plugin previews & add fallback support 2026-10-06 17:57:16 -04:00
bbedward 089dc98166 network: set routing preference only from settings
fixes #3068
2026-10-06 15:02:12 -04:00
bbedward 9cceff29dd default apps: disambiguate apps with the same name in desktop entry and
show icon
2026-10-06 11:28:35 -04:00
purian23 9d938cfed0 settings: collapse sliders when inactive 2026-10-06 03:42:55 -04:00
purian23 1276418f6e settings: compact toggle/slider design updates & interface organization 2026-10-06 03:24:58 -04:00
Aldair Meneses c8d9a8617e bar: add configurable middle and right click actions on empty space (#3582)
Revives PR 2710 using in-process PopoutService toggles per review, extended
with a right click action and a follow-mouse option for anchored popouts.
2026-10-06 02:11:21 -04:00
bbedward 4265ea1620 freebsd: gate audio and battery polling on consumer refs instead of popout bindings 2026-10-05 22:23:34 -04:00
bbedward b81373aae8 auth: use the expressive text field for polkit, network prompts, greeter and settings password fields 2026-10-05 22:09:37 -04:00
Zer0TraceXandclaude[bot] 87a4da9e13 feat(freebsd): Add initial native FreeBSD support (#3559)
* feat(freebsd): add comprehensive native FreeBSD support

* Update BatteryService.qml

* Add battery probe completion and fallback updates

* Add isVideoSource function and update PwObjectTracker filter

* Add isPipewireVideoSource function to AudioService

Added a function to check if a Pipewire node is a video source.

* Refactor video source check to use AudioService

* Remove unnecessary call in BatteryService.qml

* Add call to updateFreeBsdBatteryFallback on completion

* Simplify AudioService by eliminating redundant bindings

Removed unnecessary bindings in the AudioService loader to streamline the loading process.

* Improve error handling in CheckUpdates function

Handle specific exit error for package upgrade check.

* Enhance FreeBSD network detection logic

* Implement FreeBSD Wi-Fi hardware discovery in Initialize

Added FreeBSD Wi-Fi hardware discovery and updated initialization logic to handle cases where no wpa_supplicant control socket is found.

* Implement Ethernet state monitoring in StartMonitoring

Added monitoring for Ethernet state updates in StartMonitoring function.

* Add Ethernet management functions to backend

* Remove unimplemented Ethernet control methods

Removed unimplemented Ethernet control methods from WpaSupplicantBackend.

* Implement SetWiFiEnabled method for WiFi control

Add error handling and state management for WiFi control

* Update core/internal/server/network/backend_wpa_ethernet.go

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>

* Implement Ethernet monitoring in WpaSupplicantBackend

* Refactor startEthernetMonitor and add debounce logic

Refactor the startEthernetMonitor function to improve readability and maintainability. Introduce a debounce mechanism for processing relevant FreeBSD route events.

* Reorder import statements in backend_pkg.go

* Remove unnecessary blank line in backend_wpa_ethernet.go

* Implement FreeBSD audio polling based on UI visibility

Introduce a polling mechanism for FreeBSD audio device updates based on visibility of UI elements.

* Add readonly freeBsdPollingRequested property and optimize polling

Introduce a readonly property to determine if FreeBSD polling is requested based on various UI conditions. Update command execution to prioritize polling efficiency.

* Simplify freeBsdPollingRequested logic

Removed unnecessary conditions from freeBsdPollingRequested property.

* Implement reference counting for battery consumers

Added reference counting to manage battery information consumers and updated related functions for better battery state handling.

---------

Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
2026-10-05 22:03:32 -04:00
bbedward 9ec48c4f13 ui: rename internal widgets with D prefix to match qml-common change 2026-10-05 18:05:07 -04:00
bbedward f8b25bc43c launcher: add an option to disable history
widgets: delete plugin compatibility shims that arrived after 1.6
2026-10-05 16:58:39 -04:00
bbedward ccbf1d38ad widgets: bump qml-common, rename Dank* prefixed widgets to D, add
deprecation notice to plugin compatibility shims

- When qml-common became a thing, we left qs.Widgets shims in place for
  plugin compatibility
- It's annoying to need to maintain them when qml-common has any change,
  add a warning so we can safely deprecate them in the future
- One shot rename the common stuff to D to make it shorter and nicer to
  write
2026-10-05 16:47:19 -04:00
bbedward 0ac7233c4d settings: one-line sidebar hints, slimmer rows
wellbeing: page through past weeks in the chart
2026-10-05 14:42:19 -04:00
euletheia 2f5a438e1e feat(gamma): add exceptions (fullscreen and excluded apps) 2026-10-05 14:01:12 -04:00
bbedward 9b7c0eddd7 greeter: own widget list, state-driven sync page, clock typography fix 2026-10-05 13:39:49 -04:00
bbedward d11075d154 i18n: sync 2026-10-05 11:27:43 -04:00
bbedward 7eee3dcbe7 window rules: percent sizing for niri column width and height, explain float default
fixes #3687
2026-10-05 09:56:35 -04:00
purian23 74628450fc settings: fix the dot behavior card shadowing its own store 2026-10-05 02:47:03 -04:00
KadirandClaude Opus 5.5 dfa19b9237 settings: hide include setup banners on compositors without includes (#3699)
On compositors with no include support (sway, labwc, ...) the displays page
showed a setup banner whose fix button can never succeed.

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-05 00:49:54 -04:00
bbedward 076288604e widgets: share the lock editor with the desktop, adjust overlapping
face, share desktop clock widget with lock screen
2026-10-04 22:23:14 -04:00
apollo79 2b01926e31 settings: add a link to the source code in plugin details (#3690)
* settings: add a link to the source code in plugin details

* style: remove unnecessary whitespace, add empty line

* show link to the plugin source instead of explanation

* fix: check for empty string instead of undefined
2026-10-04 21:36:37 -04:00
bbedward d7dc8ae5d2 lock: allow customization, including any desktop widget, to be added and
arranged on lock screen
2026-10-04 15:46:56 -04:00
EmiOnFlux 375aa2f492 add portage backend (#3676)
* add portage backend

* portage: add excludes
2026-10-04 15:10:36 -04:00