github duxlabs-dev/dux-shell v2.1.0
Release v2.1.0

2 hours ago

Installation

curl -fsSL https://install.duxlabs.dev | sh

Assets

Complete Packages

  • dms-full-amd64.tar.gz - Complete package for x86_64 systems (CLI binaries + QML source + shell completions + installation guide)
  • dms-full-arm64.tar.gz - Complete package for ARM64 systems (CLI binaries + QML source + shell completions + installation guide)
  • dms-full-freebsd-amd64.tar.gz - Complete package for FreeBSD x86_64 systems
  • dms-full-freebsd-arm64.tar.gz - Complete package for FreeBSD ARM64 systems

Individual Components

  • dms-cli-amd64.gz - DMS CLI binary for x86_64 systems
  • dms-cli-arm64.gz - DMS CLI binary for ARM64 systems
  • dms-cli-freebsd-amd64.gz - DMS CLI binary for FreeBSD x86_64 systems
  • dms-cli-freebsd-arm64.gz - DMS CLI binary for FreeBSD ARM64 systems
  • dms-distropkg-amd64.gz - DMS CLI binary built with distro_package tag for AMD64 systems
  • dms-distropkg-arm64.gz - DMS CLI binary built with distro_package tag for ARM64 systems
  • dms-distropkg-freebsd-amd64.gz - DMS CLI binary built with distro_package tag for FreeBSD x86_64 systems
  • dms-distropkg-freebsd-arm64.gz - DMS CLI binary built with distro_package tag for FreeBSD ARM64 systems
  • duxinstall-amd64.gz - Installer binary for x86_64 systems
  • duxinstall-arm64.gz - Installer binary for ARM64 systems
  • dms-cli-<version>.tar.gz - Go source code with vendored modules (for distro packaging)
  • dms-qml.tar.gz - QML source code only
  • dms-source.tar.gz - Full repository source with bundled DCommon (for distro packaging)

Checksums

  • *.sha256 - SHA256 checksums for verifying download integrity

Installation: Extract the dms-full-*.tar.gz package for your architecture and follow the INSTALL.md instructions inside.


What's Changed

Features

  • Add opt-in administrator lock restrictions by @alvarosth in #3869
  • cc: allow sliders to shrink to 0.5 height by @bbedward (6bd0e24)
  • feat(screenshot): add island snap targets by @hthienloc in #3881
  • feat(duxinstall): config support for immutable image-based hosts by @purian23 (696be97)
  • Add translation information and Discord to README by @apollo79 in #3944
  • sysupdate: add a never option to the update check interval by @purian23 (28d5d56)
  • feat(density): interface density setting for shell surfaces by @purian23 (7602503)
  • feat(density): text and search fields follow interface density by @purian23 (170e8f5)
  • feat(dash): adjustable clock card font weight to match desktop/lockscreen by @purian23 (59ede53)
  • feat(theme): introduce dms classic interface style by @purian23 (7479d4b)
  • feat(theme): add themable tooltip surface colors by @hthienloc in #3967
  • feat(dash): restore optional settings shortcut in the tab bar by @purian23 (2af1c4c)
  • add missing theme values, update changed ones by @apollo79 in #3978
  • feat(clock): clock: per-widget click action w/overview as optional by @purian23 (d367e7e)
  • feat(packaging): dual-series migration publishing & dms migrate dux by @purian23 (095d1c6)
  • dash: add live property to the user info card by @purian23 (6f68c94)
  • feat(widget-editor): resize square with shift by @hthienloc in #4030
  • fix #3863 and allow user to disable / enable audio cards by @cmleon51 in #4019
  • feat(osd): add keyboard layout OSD by @hthienloc in #4034
  • feat(osd): add num lock indicator by @hthienloc in #4046
  • feat(packaging): dual-series OBS publishing & dms migrate dux for debian/opensuse by @purian23 (f297cb0)
  • scripts: add copyable port command to audit by @purian23 (21ad179)
  • feat(sysmon): rework the system monitor window by @Conava in #3768
  • Expressive media player design / Bento rework / Lyrics features by @apollo79 in #3932
  • feat(niri): support upcoming niri press/release/passthrough binds & config behind a validate probe by @purian23 (417db47)
  • feat(duxinstall): add dux-files support & remaining rebranded packages by @purian23 (63eeddf)
  • wallpaper: play video wallpapers in the shell by @KadirJeager in #4037
  • bar: let widgets set an overflow priority by @colonelpanic8 in #4060
  • osd: add OSD popup for fcitx5 IME changes by @DaniCatGames in #4072
  • hyprland: expose wobble damping, mass and mesh in layout settings by @alamin147 in #4033
  • clock: add option to hide am/pm in 12-hour mode by @purian23 (ed2b57f)
  • dock: reorder widgets from settings in the dock's real order by @KadirJeager in #4083
  • weather: add MET Norway and an ordered provider fallback list by @joshii-h in #4086
  • feat(media): restore card background opt w/new swaying square & spinning vinyl record art by @purian23 (c0e1813)
  • dms: fill in the optional device argument for brightness ipc calls by @Mario-Mohar in #4096
  • feat(dock): configure middle-click action by @hthienloc in #4101
  • feat(notification center): selectable button placement & design updates by @purian23 (7595be8)
  • enable changelog by @bbedward (d77bb95)
  • scripts: add suite scraping all dux repos by @purian23 (694dcaa)
  • feat(lock): preview the mapped lock screen layout in settings - live lock widgets scaled over the lock wallpaper, blur and fill mode Port 2.0 by @purian23 (e978bae)

Fixes

Packaging

Internationalization

Documentation

Other Changes

  • ci: cache go modules from core/go.sum, retry downloads by @bbedward (1fb9f52)
  • matugen: neovim template reads the dms config dir" by @bbedward (3284aca)
  • refactor(ui): match the dock settings page with the bar settings page by @cmleon51 in #3829
  • Keep MangoWM workspace apps on their own monitor by @tomups in #3832
  • Theme Antigravity IDE via the VS Code extension by @adarsh-67r in #3836
  • niri: only emit displayScales when a scale changed by @bbedward (90d3c97)
  • theme: skip matugen runs whose inputs match the last applied run by @bbedward (afeea48)
  • workspaces: keep the pill highlight while hovering its app icons by @bbedward (112d059)
  • bar: slide an auto-hidden island by its compact height by @bbedward (8e851b3)
  • core: only use the simple animation driver for the scrolling wallpaper by @bbedward (27a7033)
  • theme: publish typography for dux apps by @bbedward (8f2a486)
  • dash: hold panel height while dragging cards unless hung from a top bar lyrics: ignore floored position samples and shell refresh emits by @bbedward (28f921f)
  • battery: throttle pulse animation to 20fps by @bbedward (1b59a47)
  • bar: keep far-edge island hosts at sheet size so the bar never jumps on expand by @bbedward (d8786ea)
  • notifications: keep popup content while it exits after the notification closes by @purian23 (47c9d8d)
  • distos: compare ubuntu published commit by prefix by @purian23 (39a58f7)
  • greeter: remove the embedded legacy greeter (again) by @bbedward (c5d1d4f)
  • plugins: keep manifest paths inside the plugin directory by @bbedward (6e86b53)
  • plugins: label declared permissions as unenforced by @bbedward (14b3dda)
  • ci: disable background tasks in review job by @bbedward (da79eca)
  • battery: pulse only the icon when the bar has no background by @V8V88V8V88 in #3861
  • shell: restore QT disable decoration pragma by @bbedward (5b77777)
  • bar: drop pill blur region when a vertical pill collapses to zero height by @bbedward (44d498e)
  • wallpaper: push the cycling config when the service is created by @Mario-Mohar in #3874
  • idle: retry suspend when a logind sleep inhibitor is released by @guillemcanal in #3866
  • refactor(mango): deprecate pre-mango v18.0 binds & legacy management by @purian23 (d8734bb)
  • systemd: start enabled service on restart when idle by @purian23 (5a20a8f)
  • refactor(dot): major performance & stability improvements by @purian23 (0cd03e0)
  • sysupdate: hide flatpak updates when flatpak is excluded by @purian23 (efd9324)
  • powermenu: reboot into firmware setup from the power menu by @matthewyjiang in #3877
  • bump qml-common by @bbedward (b7be4a3)
  • lock: advertise hidden text from the ime sink by @bbedward (6f36e49)
  • battery popout: swap balanced and performance profile icons by @I-Azy-I in #3895
  • refactor(default apps): rewrite w/value-keyed dropdowns & xdg data/display fixes by @purian23 (66382df)
  • dep: bump qml-common by @purian23 (c5b058c)
  • ci: dispatch distro builds from Release & guard shared Void index by @purian23 (3388f78)
  • ci: update dux-repo references by @purian23 (20bcf85)
  • rebrand(installer): convert dankinstall to duxinstall by @purian23 (6d65f30)
  • installer: fall back to dankinstall assets until 2.0.1 & update arch package compat by @purian23 (e689cd2)
  • displays: show why the display profile controls are disabled while Auto is on by @Conava in #3926
  • tailscale: translate the peer "last seen" time by @Conava in #3922
  • matugen: keep user templates when config.toml has no [config] table by @Conava in #3921
  • settings: enforce administrator-managed lock settings by @alvarosth in #3897
  • compositor: prefer live wlr-output scale over the startup randr snapshot by @bbedward (b0fea51)
  • bump qml-common by @bbedward (6b32cbe)
  • Bump Go to 1.27.3 (CVE-2026-111943) by @MishowHD in #3924
  • network(networkmanager): refresh wired profiles on settings changes by @KadirJeager in #3929
  • dbus: keep match rules across subscribe socket re-dials by @bbedward (3aaab84)
  • bump qml-common, fixes animated image binding loop by @bbedward (d60fa2c)
  • cava: stop the capture stream from dragging the pipewire quantum down by @bbedward (a3c4d0a)
  • popout: commit the emptied input region when the close starts by @bbedward (4a8fc4d)
  • sysupdate(flatpak): list updates when one needs an uninstalled runtime by @purian23 (a7bd6a8)
  • settings: keep the file snapshot independent of live values so in-place edits persist by @bbedward (693d0c8)
  • updater: confirm installs on enter & keeps the upgrade log in view when inline by @purian23 (a92e60e)
  • frame: keep fused chrome blurred across the inset at low alpha by @bbedward (ca50284)
  • launcher, dash, settings: density and consistency pass by @bbedward (fc7c92f)
  • wallpaper: use the per-monitor fill mode to decide scrolling by @PandorasFox in #3957
  • systemd: keep the notifications bus name reserved by @bbedward (826477e)
  • search field: spacing adjustments by @bbedward (f56a088)
  • settings: treat an unversioned settings file as the current format by @bbedward (5cd0b61)
  • tray: resolve IconThemePath icons from theme subdirectories and the system theme by @bbedward (6a15b44)
  • island: keep the dismiss layer down for notification popups by @bbedward (5442f39)
  • matugen: don't wait on hooks by @bbedward (86dac60)
  • cc: replace detail pages with bands (1.6 style) by @bbedward (2903604)
  • notifications: use only SystemClock to update notification timestamps by @bbedward (5855b6f)
  • notifications: refresh relative times on the lock screen, in NotificationsTab and in history by @0xdeafbeef in #3965
  • lock: arm fingerprint auth after the compositor confirms the lock by @bbedward (2804183)
  • Workspace switcher widget improvements by @apollo79 in #3977
  • ubuntu: fall back to archive Hyprland when the PPA lacks the series by @purian23 (27a5534)
  • settings: reposition appearance card in the interface tab by @purian23 (07c899d)
  • Change keep awake icon to local cafe by @ronitarv in #3936
  • brightness: move every device pinned on a screen together by @SpyrosPsarras in #3939
  • wellbeing: open the screen time view from the overview card by @PandorasFox in #3980
  • island: show synced lyrics in the media slot by @PandorasFox in #3979
  • cc: stop avatar and app icon reloads from stalling the sheet, disable edit fill in edit mode by @bbedward (d2792b8)
  • settings: derive button group compact mode from its natural width by @bbedward (2dd237a)
  • network/networkmanager: own new wifi profiles per user when modify.system is not granted by @bbedward (2294832)
  • theme: restore inverse surface tooltips and index the surface role rows by @bbedward (46373f8)
  • dock: keep vector spring stable at short animation speeds by @Mario-Mohar in #3991
  • settings: keep page history when opening keybinds from the launcher tab by @Mario-Mohar in #3990
  • network: answer openvpn dynamic challenge prompts with the challenge-response secret by @bbedward (19f3e58)
  • launcher: fit grid rows in every host and drop the island inset literal by @purian23 (ff1bccb)
  • island: match control center sheet and insets to the popout by @purian23 (e97e410)
  • island: size the launcher sheet to its results by @purian23 (0b174e0)
  • widgets: drop tabular figures from bar and dash numerics theme: change light mode backdrop color by @bbedward (e4c4fe4)
  • clipboard: bind the first wl_seat only by @sijin-xb in #3989
  • displays: keep vrr on after choosing On on niri by @wongcallum in #3998
  • ci: auto label issues by @bbedward (eafb118)
  • tray: open overflow item menus at the icon by @pblcp in #4002
  • bar: keep ripple and press morph on the pressed clock segment by @bbedward (2308934)
  • cc, dash: load grid edit chrome only in edit mode by @bbedward (012237a)
  • island: keep blur regions flush with the fill and goth corners by @bbedward (791537b)
  • dbar: animate hiding overlay bars on fullscreen in niri by @steven12138 in #4000
  • plugins: route plugin popout clicks through PopoutManager by @bbedward (8e8442f)
  • screenshot: stop re-rotating frames hyprland 0.57 already delivers upright by @bbedward (a26298d)
  • control center: close the band on a second tile click instead of walking history by @bbedward (ff62d76)
  • ci: set AI review effort to high by @bbedward (f288dbc)
  • dash: settings-style keyboard between the tab row & content by @purian23 (673ceb2)
  • island: optional dash tab bar on the island faces by @purian23 (e777288)
  • settings: build week day names from local dates by @Mario-Mohar in #4026
  • island: show mic_off in the privacy group when the mic is muted by @Mario-Mohar in #4027
  • hyprland: drop legacy conf support and close 0.57 gaps by @purian23 (4927ef5)
  • core: bump qml-common by @bbedward (a0b74b2)
  • plugins: work around x/crypto rejecting ssh-mldsa44-ed25519 known_hosts entries by @bbedward (7ad1b7e)
  • lyrics: distrust the player position after a track change until the probe settles by @bbedward (8731207)
  • plugins: multi-select type chips in browser, dash browse button by @bbedward (7060c8e)
  • bump qml-common by @bbedward (d439991)
  • settings: remove legacy HUP signaling by @bbedward (1398bd8)
  • refactor(dash): kb nav tab switches tabs while arrows work the content & ctrl+tab steps in by @purian23 (d4cd0f0)
  • hyprland: write desc: identifiers when auto-applying monitor profiles by @purian23 (d76475d)
  • keybinds: notify when a hyprland action is missing its arguments by @purian23 (fe3827f)
  • scripts: plain port audit output in terminals by @purian23 (cae70d9)
  • scripts: port in history order and add all-candidates command by @purian23 (eec8fd2)
  • key binds: drop layout switch shortcuts that break common binds by @purian23 (387750b)
  • niri: also apply xray false to files/calendar by @bbedward (d70d353)
  • context menu: follow m3 expressive menu spec by @Tear4Pixelation in #4053
  • qs: remove my test pragma by @bbedward (c10c4ff)
  • bar widgets: round natural pill width up so text is not elided by a subpixel by @bbedward (c5cb0be)
  • lyrics: relayout from the item kind, not the stale isBreak binding by @bbedward (fca8c72)
  • refactor(theme): live gtk4 refresh & revised gtk theming/themed sidebars by @purian23 (f744160)
  • bar: reserve island space only when the island is not floating by @starlifezzz in #4065
  • dock: hide for floating windows moved or resized by hyprland keybinds by @purian23 (ead09fd)
  • refactor(setup): refresh hyprland binds.lua when the main config is kept by @purian23 (b74088e)
  • theme: reload dms-colors.json after the matugen worker exits by @starlifezzz in #4079
  • settings: move focus rings to a controls section by @bbedward (754a336)
  • disable changelog, bump VERSION and CODENAME by @bbedward (cd59487)
  • notifications: make popup design consistent by @bbedward (6e78bad)
  • brightness: skip kernel-triggered indicator LEDs by @starlifezzz in #4064
  • theme: skip reapplying an unchanged dms-colors.json by @purian23 (d475e03)
  • release-notes: translation counts per language by @purian23 (c205174)
  • shared: bump qml common by @purian23 (4b1d4f7)
  • sounds: stop same-url source rewrites from cancelling playback by @bbedward (7f9580c)
  • scripts: skip version and codename bumps in port audit by @purian23 (7643dad)
  • network: list owe networks as open so they connect without a password prompt by @bbedward (0478a61)
  • release: set 2.1 codename by @purian23 (64d0715)
  • clock: open the overview when no dash tab is enabled by @bbedward (11b3747)
  • dock: keep long window titles on one line in the apps dock widget by @bbedward (c78e469)
  • sysmon: show passthrough gpus as unavailable by @bbedward (2f92d43)
  • weather: move forecast parsing into a testable module by @joshii-h in #4085
  • refactor(media): close the card option background gap by @purian23 (f493bd6)
  • plugins: make the browser open fast on slow links by @bbedward (dabef66)
  • notifications: adhere to classic mode & chevron on hover card update by @purian23 (549fd8a)
  • shell: per-screen surfaces off of placeholder outputs by @bbedward (e75d787)
  • lock: make ctrl+a select all text field instead of doing emacs stuff by @bbedward (b0f5671)
  • tray: keep the icon on screen while a new pixmap loads by @colonelpanic8 in #4054
  • weather: keep the searched location name when custom coordinates are reapplied by @bbedward (257934c)
  • dsearch: re-check for installation when launcher open on files mode by @bbedward (bcfc355)
  • dsearch: log not found reason by @bbedward (2ab6411)
  • scripts: skip changelog toggles in port audit by @purian23 (e813c1b)
  • scripts: skip root version bumps in port audit by @purian23 (be395b4)
  • lyrics: more betterer smooth movements by @bbedward (68be5b0)
  • ci(release): one Release workflow for X.Y.0 and point releases by @purian23 (d27fbad)

Full Changelog: v2.0.0...v2.1.0

Don't miss a new dux-shell release

NewReleases is sending notifications on new releases.