Commit Graph
5099 Commits
Author SHA1 Message Date
bbedward 2fd472b89a launcher/notifications: drop view transitions, fade rows via DListView.fadeIn 2026-10-08 10:47:43 -04:00
bbedward c1006f6b34 audio: wait for the sound theme before playing any event sound
ref #3723
2026-10-08 10:04:28 -04:00
bbedward 8b47d3cf70 brightness: map a dp connector's ddc bus as well as its aux bus
ref #3724
port 1.6
2026-10-08 09:34:01 -04:00
bbedward 2bf7f7c556 cups: fix 24.20 compatibility
fixes #3721
2026-10-08 09:22:47 -04:00
bbedward 4dc45185ba notifications: add 2 finger swipe gesture to dismiss on popups
fixes #3716
2026-10-08 09:05:07 -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 f2c06a3cc7 settings: add WheelHandler above Flickable 2026-10-07 16:14:47 -04:00
bbedward ed43b07d5e settings/sidebar: shrink avatar in search a bit and make accent ring off
by default and actually work when disabled
2026-10-07 15:55:58 -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
Marlon Kranz 7c6e9ed514 fix(screenshot): copy a saved screenshot as a file, not only image bytes (#3667)
dms screenshot put only image/png on the clipboard. Terminals can only
paste text, so pasting a screenshot into a terminal app (e.g. a CLI
that attaches images from a pasted path) did nothing, while a file
copied through the server's clipboard.copyFile pastes its path.

When the screenshot is saved to a file, copy it the same way:
gnome-copied-files, text/uri-list, the path as text/plain, and the
image bytes. The server is asked first so the copy lands in history;
without it, the same offers are served locally. The offer list is
shared with Manager.CopyFile through clipboard.FileOffers.

copyMultiFork now waits for the child to take the selection, like
copyForkCached, so a failed local copy is reported instead of lost.
dms cl copy --download shares this path and now falls back to a local
copy when the server is down or rejects the file. --no-file and PPM
keep the image-only copy.
2026-10-07 14:05:11 -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 6f43ece99f control center: let grid drops land where dropped 2026-10-07 13:45:21 -04:00
bbedward e9f66d6256 input: use WheelInput for touchpad detection, bump dank-qml-common
fixes QT 6.12 change with pixelDelta being present on mouse wheels
2026-10-07 12:28:06 -04:00
bbedward b42fe6643f perf: gate idle work behind feature and capability state 2026-10-07 11:55:29 -04:00
Artem Timofeev 8fedfae1dc fix(power): reconcile refresh rate after resume (#3459) 2026-10-07 11:17:12 -04:00
bbedward a8146d2ca5 bar: shrink flexible widgets before moving anything into overflow 2026-10-07 11:05:08 -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 07740cc2d5 bar: clear sticky reveal on bars without auto-hide
fixes #3714
2026-10-06 23:10:11 -04:00
dms-ci[bot] 7ffd640ef9 nix: sync flake.lock to dank-qml-common submodule 2026-10-07 02:58:34 +00: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
bbedward 8299d8fa77 bump qml-common 2026-10-06 21:41:32 -04:00
bbedward fd52e0af59 qs: add DankBar and DankDash compatibility shims 2026-10-06 21:07:11 -04:00
purian23 5eb78f1f12 notifications: restore hover to reveal closure & expansion buttons 2026-10-06 20:04:20 -04:00
bbedward 769e4455f8 settings: change page transition 2026-10-06 19:12:48 -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 d838d15e69 cc: replace right click action with long press
fixes #3709
2026-10-06 14:44:15 -04:00
Pedro Jose Soto Rivera f886789835 network(networkd): treat bridge, bond, team and vlan links as wired (#3706)
* network(networkd): treat bridge, bond, team and vlan links as wired

When the IP configuration lives on a bridge or link aggregate, the
enslaved member NIC reports opState=enslaved and the aggregate itself
was dropped by isWired() because only Type=ether was accepted, so the
widget showed Disconnected. Accept the same link types NetworkManager
already handles (#1581).

Also treat lxdbr*/incusbr* as virtual so container bridges, now of a
wired type, are not picked as the uplink.

Fixes #3463

* network(networkd): only treat a bridge as wired if it has a physical member

Name prefixes can't cover every container/VM bridge (lxcbr0, waydroid0,
...). Check the bridge's members in /sys/class/net/<br>/brif instead and
only accept it as the uplink when at least one member is not virtual
(veth*, tap*, ...). This replaces the lxdbr*/incusbr* prefixes.
2026-10-06 14:43:57 -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
bbedward 507b818a55 config: drop Before=graphical-session.target from the generated hyprland target 2026-10-06 11:05:01 -04:00
bbedward 069fa318d6 island: fix pill jumping sideways when the compact face switches
fixes #3668
2026-10-06 11:02:32 -04:00
bbedward 766708c551 core: bump dankgo 2026-10-06 10:38:01 -04:00
bbedward ebf9c5ba7b lock: keep the ime commit sink off for in-process input method modules
ref #3669
2026-10-06 10:11:16 -04:00
bbedward 5ee570557f cli/notify: add priority options 2026-10-06 10:10:42 -04:00
bbedward ca93837149 lock: allow anchoring widgets to center, x, and y axises 2026-10-06 09:05:57 -04:00
Isa Al Ula 7b144ddac1 app picker: strip desktop suffix when resolving mime handlers (#3710) 2026-10-06 08:25:55 -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
Pedro Jose Soto Rivera ff50b492b1 network(iwd): follow the Wi-Fi device when iwd recreates it (#3707)
When iwd restarts it recreates wlan0 under a new D-Bus path. Only the
Station interface was tracked on InterfacesAdded, so devicePath kept
pointing at the dead object: the PropertiesChanged match for the new
device was never registered, updateState() read Powered from the old
path, and SetWiFiEnabled() failed with "No matching method found".
WiFiEnabled stayed false after handleStationRemoved() until DMS was
restarted.

Handle the Device interface on InterfacesAdded/InterfacesRemoved: move
devicePath and its signal match to the new object and take Name and
Powered from the signal. Process every interface in an
InterfacesRemoved signal instead of stopping at the first match.

Refs #3495
2026-10-05 22:23:01 -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
purian23 2c584c8bf7 launcher: add app editing to spotlight 2026-10-05 21:48:29 -04:00
alvarosth eeea1a633c registries: let the CLI policy turn the registries off (#3703)
* policy: load the CLI policy file from an internal package

The plugin and theme registries need to read the policy too, and
internal packages cannot import package main.

* registries: let the CLI policy turn the registries off

With disable_registries set in /usr/share/dms/cli-policy.json or
/etc/dms/cli-policy.json (the /etc file wins), the plugin and theme
registries start without sources, so nothing is cloned or pulled.
Installed plugins and themes keep working.
2026-10-05 20:41:29 -04:00
bbedward 9ec48c4f13 ui: rename internal widgets with D prefix to match qml-common change 2026-10-05 18:05:07 -04:00