Commit Graph
287 Commits
Author SHA1 Message Date
purian23 e689cd2ce7 installer: fall back to dankinstall assets until 2.0.1 & update arch package compat
Port 2.0
2026-10-25 06:19:02 -04:00
purian23 7e0f110fb8 fix(clipboard): bind & release the data device when tracking is toggled
Port 2.0
2026-10-24 03:39:08 -04:00
purian23 c7692f830c fix(core): prevent clipboard & wellbeing data loss from concurrent sessions
Port 2.0
2026-10-23 01:42:07 -04:00
alvarosth 7781c207f1 Add opt-in administrator lock restrictions (#3869) 2026-10-22 14:57:29 -04:00
bbedward 789a968cde branding: rebrand to dux 2026-10-20 12:23:25 -04:00
Evgeny Zemtsov bb3e3adaab network(networkmanager): rebuild the Wi-Fi list once per scan (#3818) 2026-10-19 15:39:56 -04:00
Joseph Petersen 8628daac31 network: rediscover wifi devices before scanning (#3821) 2026-10-19 10:03:14 -04:00
cmleon51 880135da67 brightness: dim outputs without a backlight or ddc through gamma (#3813) 2026-10-18 23:02:21 -04:00
bbedward 2592e2f33e clipboard: serve selection sends off the shared wayland dispatcher
fixes #3812
2026-10-18 11:59:02 -04:00
Marlon Kranz 549cbf6d08 feat(theme): terminal background opacity and wallpaper-tinted colors (#3662) 2026-10-15 11:17:29 -04:00
purian23 c3e93ee39a feat(settings): syntax highlight built-in upgrade logs & offer reboot on kernel updates 2026-10-12 23:59:35 -04:00
Alexander 80711f1c21 systemd: use explicit shell readiness (#3514) 2026-10-12 14:33:44 -04:00
bbedward 593046064b icc: keep profiles and assignments in the dms config dir 2026-10-12 14:25:09 -04:00
Meng fb1686888d fix(network): store pending PSK in IWD ConnectWiFi to prevent double password prompt (#3743) 2026-10-12 11:11:33 -04:00
lung595 846a0ff22f plugins: ranking module and directory metadata for the plugin browser (1/3) (#3751)
* plugins: forward directory metadata (version, icon, permissions, dates) to the shell

* plugins: ranking module for recommendations, trending and picks

* plugins: mark new and recently updated plugins on the browser cards, keep badges clear of the vote count

* i18n: allow the lowercase plugin recency badge next to the New action
2026-10-11 16:45:25 -04:00
bbedward 68043277c6 sysupdate: only select the pkg backend on freebsd
clipboard: refuse copies when tracking is disabled so the cli falls back locally
2026-10-10 11:29:05 -04:00
bbedward 5113441810 core: bump to go 1.27, tailscale client 1.104, cut tests
fixes #3737
2026-10-09 11:11:07 -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
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
bbedward 089dc98166 network: set routing preference only from settings
fixes #3068
2026-10-06 15:02:12 -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 5ee570557f cli/notify: add priority options 2026-10-06 10:10:42 -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
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
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 235297898b core: bump go-udev to 0.10.0
fixes #3692
2026-10-04 23:00:20 -04:00
wowo101andClaude Opus 5.5 e26d0294c8 clipboard: restore copied folders from history (#3695)
A directory's stat size passes the MaxEntrySize check, so CopyFile tried to
read it and every folder restore failed with "is a directory". Skip the read
for directories; the uri-list and plain path offers already cover them.

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-04 22:21:49 -04:00
alvarosth 4bd3e091fe lock: take the lock back when the shell restarts into a locked session (#3685)
* lock: take the lock back when the shell restarts into a locked session

Check the state once when the module completes, on locked or lockedHint,
and handle it the way onSessionLocked does, including the wait while the
session is inactive. After a logind Unlock that the shell ignored for a
lock it started, only lockedHint still says locked; and the module loads
asynchronously, so the state can arrive before its Connections exist.

* loginctl: read LockedHint from logind on unlock

logind's Unlock signal does not clear LockedHint, only the locker does.
Forcing it false told a shell restarted in that window that the session
was no longer locked.
2026-10-04 22:17:06 -04:00
EmiOnFlux 375aa2f492 add portage backend (#3676)
* add portage backend

* portage: add excludes
2026-10-04 15:10:36 -04:00
尘世凡间 204aa1735b clipboard: decode file uris and stop failing large file copies (#3598)
EntryToFile and the preview helpers stripped file:// without
percent-decoding, so history entries whose paths contain non-ASCII
characters stat'ed a literal %E5... path and copyEntry failed with
"file not found". CopyFile additionally hard-failed any file larger
than MaxEntrySize (5MB default) right after stat, so even decoded
entries for bigger files could never be restored to the clipboard.

Decode the path in EntryToFile, uriListPreview and
tryReadImageFromURI. In CopyFile only read file content when it fits
the size cap; oversized files still get offered as uri-list /
gnome-copied-files / plain path, and the stored entry keeps the file
URI instead of an empty body.

Keep encode and decode symmetric: every URI this service stores or
offers now goes through encodeFileURI (percent-encoded) and every
read path decodes exactly once through pathFromFileURI, so a literal
%20 in a file name survives the round trip. Regression tests cover
space / literal %20 / # / CJK / oversized names across EntryToFile,
uriListPreview, the image probe and handleCopyEntry.
2026-10-03 03:30:53 -04:00
purian23 af27f0bac0 refactor(software-updates): remove confirmation modal & add action item prompt support 2026-10-02 00:52:44 -04:00
bbedward d77c4f6298 wellbeing: add Digital Wellbeing, with a built-in dash plugin 2026-10-01 15:15:37 -04:00
bbedward 0b9d931ea3 brightness: ddcutil-parity ddc probing, bounded rereads
fixes #3616
2026-10-01 09:16:23 -04:00
Hatta 3081941592 lock: lock before sleep when the command skips logind (#3587)
* lock: lock before sleep when the command skips logind

Custom hibernate never emits PrepareForSleep, so the session stayed unlocked. Wait for the compositor lock on every sleep path, and release the delay inhibitor if that lock finished first.

* lock: release the sleep inhibitor only after lockerReady

* lock: read the sleep inhibitor under its mutex in the race test
2026-09-29 16:50:13 -04:00
bbedward f482642880 sysupdate: check only on demand, run at low priority, fix the settings page
scrollbar: interface style toggle and no scrollbars in the dash
dash: never allow scrollbars
cc: widget sheet cards, header close button and content-sized dialogs
2026-09-29 16:30:04 -04:00
purian23 eda77f7816 feat(settings): dms system software updates & versioning support 2026-09-28 19:45:07 -04:00
Marcus Ramberg 05377e690a fix: scope bluez dbus match to bluezService (#3573)
Ensure the watcher only seees bluez messages
2026-09-25 16:44:28 -04:00
Marcus Ramberg 8da739a3ea feat(cellular): expose signal strength and conn type (#3533)
network manager doesn't expose this so talk to modem manager over dbus
2026-09-25 15:02:23 -04:00
Tássio Guerreiro Antunes Virgínio 10e8086874 trayrecovery: recover SNI items orphaned at first boot (#3570)
Autostart apps (e.g. KeePassXC) that call RegisterStatusNotifierItem
before the watcher owns its name fail silently and never re-register.
Until now the recovery scan only ran on suspend/resume or watcher
owner change, so first-boot orphans were never rescued.

Schedule a one-time delayed scan when the watcher first appears.
recoverTrayItems() already deduplicates via registeredConnIDs, so this
cannot double-register apps that registered normally.
2026-09-25 09:36:01 -04:00
bbedward 6e9bbc15a6 files: swith to diles shared components 2026-09-23 21:27:14 -04:00
bbedward e9498716f9 dankbar: trace goth wings and adjacent-bar seams in the border outline
fixes #3502
2026-09-21 22:14:42 -04:00
bbedward b41f0f2c4e launcher: open files through the mime handler so terminal apps get a terminal
fixes #3518
2026-09-21 19:01:22 -04:00
14Do 17ecaad8dd sysupdate: skip the obsoleted packages in dnf output (#3525)
dnf lists the packages an upgrade obsoletes indented beneath it, under a
separate heading. Those rows are removals carrying their installed
version, so they were parsed as upgrades from a version to itself and
counted as pending. Skip indented rows. The heading is translated, so
matching it would only work in English.
2026-09-21 15:27:20 -04:00
bbedward 0bd3e85150 settings: fix window rules overflow, unify popout border settings
cards: fix regression that created borders
matugen: run on a low priority worker and seeds dms-colors before other
templates
2026-09-21 11:47:52 -04:00
14Do 1c683e932f sysupdate: collapse dnf rows duplicated across repos (#3524)
dnf prints one row per (package, repo), so a package offered at the same
version by two enabled repos is listed twice and inflates the pending
count. Key the parse on (name.arch, version) and keep the first row.
2026-09-21 09:40:39 -04:00
bbedward 4d6de9cf96 settings/wallpaper: more restyle to appearance header 2026-09-20 21:09:12 -04:00
bbedward b56a53c03a settings: preserve navigation state and add notification test button 2026-09-20 15:28:18 -04:00
bbedward 5d120d5a66 dgop: sample on a niced worker thread and gate widget modules on their toggles
fixes #3107
2026-09-20 12:36:44 -04:00
purian23 79abcdfd7b feat(theme): get expressive ~ new bold color palette options 2026-09-19 00:54:53 -04:00
bbedward a8e8a22e43 core: use trash and desktop from dankgo 2026-09-18 17:07:32 -04:00