DMS 1.6 "Marble Tabby" Is Here

DMS 1.6

Marble Tabby

DankMaterialShell (DMS) 1.6 "Marble Tabby" is here! This release brings significant performance improvements and resource optimizations across the shell and CLI, Dank Island - a new island-style bar instance, spring-based motion across the whole shell, GTK3 dynamic theming, a standalone greeter, unified versioning across the Dank Desktop, a big plugin ecosystem push, and hundreds of fixes and improvements across DMS.

4,600+Commits7.8k+GitHub Stars250+Contributors330+Plugins

Performance & Resource Optimizations

5.2xFaster IPC8.6xFaster Screenshots3.9xFaster Color Picker-19%Shell Memory

1.6 puts a lot of this cycle into making the shell and its companion tools faster and lighter:

  • IPC: dms ipc call used to launch a whole quickshell process just to deliver one message. Now it talks to the shell directly, and the median call dropped from 49.8 ms to 9.6 ms. Every keybind and script that goes through dms gets this for free. dms ipc is now even faster than calling quickshell ipc directly.
  • Screenshots: saving is 4-8x faster. A full 1440p screen writes in 25 ms instead of 94 ms, JPEG in 29 ms instead of 75 ms, and re-capturing a saved region in 12 ms instead of 106 ms.
  • Region selector: dragging a selection used to redraw the entire screen on every pointer move, so it couldn't keep up with the display. Now only the edges of the rectangle redraw, and drags feel instant at any refresh rate.
  • Color picker: same story for the eyedropper - it stopped copying the whole screen every time the pointer moves, so it stays smooth on big and multi-monitor setups and stops burning CPU while you drag.
  • Memory: the shell uses ~76 MB less idle memory (-19%) on a clean two-monitor setup.
    • There is additional work in DMS 1.6 that will further improve startup times and memory usage once QML Caching is implemented in Quickshell.

vs other tools

dms, grim, and hyprpicker all grab the screen from the compositor the same way, so the differences below mostly come down to what each tool does after that (Image encoding, compression, etc.).

Screenshots vs grim:

capture (PNG)grimdms 1.6
one 1440p output114.7 ms23.5 ms (4.9x)
both outputs344.3 ms71.7 ms
800x600 region26.0 ms12.1 ms

grim writes its PNG on a single core; dms uses all of them. The new PNG encoder in DMS outperforms grim even with compression enabled.

Color picker vs hyprpicker: with the picker open and the pointer sitting still, hyprpicker keeps redrawing at ~59% of a CPU core on this setup; dms color pick sits at 0% and only redraws when the pointer actually moves.

Benchmarked 1.5.3 vs 1.6 with stock settings on one machine (Ryzen AI 9 HX 370, two 1440p displays). Absolute numbers will vary with hardware and config; Tool comparisons ran on the same machine against grim (current Arch) and hyprpicker v0.4.7; hyprpicker's idle CPU likely scales with refresh rate and output count.

Dank Island

1.6 introduces Dank Island, a new bar instance built around a central island with satellite widgets.

island faces animated
A notification comes in, then media takes the face.
  • Satellites: areas for widgets on either side of the central island. The island itself hijacks the center section of the bar, and the left and right section become the "satellites."
  • Live faces: The face of the island reacts dynamically to user interactions and system events - such as notifications, media playback, and OSD triggers.
  • Spring physics: the island uses new spring-based animations that are built into DMS 1.6
  • Home face layout: a drag and drop editor in the Island settings decides what sits on the idle face and in what order. Media, clock, weather, status, notifications, plus dedicated volume and brightness activities that show as an icon, a percentage, or both
  • Media player variant: the standalone island media player got a redesign, and a Wallpaper toggle in Settings -> Media Player blurs the album art behind the player in both the island and the dashboard
  • Multiple bars: island and frame modes support multiple bar instances

Enable the Island in Settings -> Bar -> Appearance

Unified Versioning

1.6 changes how the Dank Desktop is versioned: dsearch, dgop, dcal, and dgreeter are now versioned and released together with DMS. One version number covers the whole desktop.

Rest of the Desktop Suite

dank-greeter

The greeter is its own repo now, dank-greeter. This is the first release.

  • Face unlock starts on its own if pam_howdy is in the stack
  • Launched sessions get the desktop env vars, like GDM does (fixes issue with launching GNOME sessions)
  • Follows your live DMS config instead of a copy of it (fixes issues with out-of-sync settings)

dgop

dgop tui
dgop with process search open.
  • Process CPU% is per sample interval now (cwelsys)
  • GPU reclaimable memory no longer counted as used
  • Falls back to per-core temps when there is no package sensor
  • TUI search and custom keybinds
  • FreeBSD support

dsearch

  • Survives a corrupted index or metastore db instead of dying
  • Fixed watcher churn and a few search panics
  • FreeBSD support

dcal

dcal drag to create
Dragging out a new event in week view.
  • Drag to create events in day and week views
  • Multi-select, context actions, copy/paste (artrixdotdev)
  • RSVP to one occurrence of a recurring invite, chips show RSVP state
  • Completing a recurring task moves it to the next occurrence
  • Default calendar, date/time locale override, ctrl+n for a new event
  • CalDAV fixes for non-compliant servers (JCapucho)
  • Fixed rescheduled series on Microsoft and all-day events on Google
  • All-day events and exported ics keep the right timezone
  • French and Bulgarian translations

Screenshots & Capture

Beyond the encoder speedups above, capture itself got better:

region across two outputs
One region across two monitors.
  • Drag a region across outputs, alt to restrict to one output, ctrl to drag the selection or resize it from any corner (hthienloc)
  • Native cursor shapes in the selector (hthienloc)
  • Initial scroll capture mode, with a live preview of the stitched result beside the capture area (hthienloc)
  • dms screenshot -g prints the selected region as X,Y WxH and skips the capture, exit code 1 on cancel, so scripts that used slurp can swap it in (hthienloc)
  • 10-bit color/HDR support via wp_color_manager_v1
  • --json flag for capture metadata

Theming

  • GTK3 dynamic theming: with adw-gtk3 installed, DMS copies the light and dark variants into ~/.local/share/themes and patches the copies with your generated colors. GTK3 apps then follow the system color scheme and switch live, no restart. Without adw-gtk3 it falls back to the dank-colors.css import. A gtk.css or dconf gtk-theme you set yourself is no longer overwritten. (euletheia)
  • Qt: qtengine works as a platform theme (Conava), and so does QT_PLATFORMTHEME=kde.
  • Source color: Settings -> Theme & Colors has a Source Color dropdown for wallpaper palettes. Dominant is the default and matches previous behavior. Colorful quantizes the image and scores toward a vivid, well-lit color, so a warm wallpaper with a large muted region no longer produces a cold palette. Five more modes map to matugen's --prefer and need matugen 4.1. Also --source-mode on dms matugen generate. (Conava)
  • matugen: smart mode and scheme type are configurable (haikalllp), dank16 emits the full matugen color format (pdf), and there are new templates for Fcitx5 and Vesktop (hthienloc).
  • Contrast: registry themes ship a contrast report and the theme browser badges each one AA or AAA. The levels are WCAG, the W3C accessibility spec: AA is body text at 4.5:1 or better against its background, AAA is 7:1. The report covers body text, accents, and non-text bits like borders and icons in both dark and light, and the badge is the worst of them.
  • Settings -> Theme Color has an Extract button that writes the live theme out as one dark and light JSON file. (hthienloc)

Network

  • WiFi hotspot: share the machine's connection from the shell (ronharel02)
  • WiFi list: refresh button in the control center (YewFence)
  • Cellular: modem support on the NetworkManager backend (kmf)
  • OWE: open networks with opportunistic wireless encryption connect, including transition mode
  • Fortinet: password profiles authenticate inside DMS with openconnect --authenticate and hand the short-lived cookie to NetworkManager. An untrusted server certificate shows its fingerprint for confirmation, and the fingerprint is only saved once the tunnel actually connects (Grant07)
  • 802.1x: EAP method selection, and credential persistence works again

Config & Backup

settings.json and session.json only store what differs from the defaults now, so your config is the diff and not a dump of every value DMS knows about. Machine-specific state moved out of settings.json into session.json, which makes the settings half portable between machines.

dms backup create writes a tar.gz of ~/.config/DankMaterialShell, and dms backup restore puts it back.

Fewer Dependencies

1.6 keeps shedding external dependencies:

  • The quickshell configuration is now embedded in the DMS binary and mounted at runtime
  • dgop is built in instead of a separate process
  • curl dropped, bluetooth audio codec support built in
  • Initial FreeBSD support landed along the way

Notes for Package Maintainers

  • The quickshell UI is embedded in the dms binary and mounted at runtime. Packages no longer install /usr/share/quickshell/dms, and XDG auto-discovery of ~/.config/quickshell/dms is removed: -c or DMS_SHELL_DIR explicitly override the embedded config.
  • Shared widgets live in the dank-qml-common git submodule. Building from a clone needs git submodule update --init --recursive first. GitHub's auto-generated "Source code" archive never contains submodule content, so build from dms-source.tar.gz on the release instead: it ships with DankCommon bundled and needs no submodule step. dms-cli-.tar.gz carries the Go source with vendored modules.
  • The embedded shell is staged into core/internal/shellembed/dist by make sync-shell. make dist and make build run it for you. If you call go build directly, run make sync-shell first or the withshell tag fails with pattern all:dist: no matching files found. Pass tags as one list: -tags 'distro_binary,withshell'.
  • Release binaries and all -git packages build with the embedded shell.
  • The greeter is its own package now, dank-greeter, with its own release artifacts. dms greeter install expects the dms-greeter binary from that package.
  • dsearch, dgop, dcal, and dgreeter tag and release together with DMS from this release on.

Plugins

The plugin ecosystem got numerous updates this cycle

  • New grid-style plugin browser, and runtime plugins are searchable from settings (hthienloc)
  • Portable plugin lockfile for reproducing a plugin set across machines (artrixdotdev)
  • Support for multiple plugin & theme registries: dms registry add , or Settings → Plugins → Registries. Themes resolve from extra registries too. Started by louzt via env vars
  • Plugin translations: drop a translations/ directory next to plugin.json and wrap strings in I18n.trFor("myPlugin", "..."). Nothing has to land in the DMS repo, users get your translations by installing the plugin
  • Desktop widgets: runtime resize API, so a widget can change its own size (SunPodder)
  • Plugins are a step in the first-start wizard now, and the launcher's power options moved to a built-in plugin

The registry is past 335 plugins and 42 themes, 86 of the plugins added this cycle. The directory ranks them by 👍 on each plugin's tracking issue in the registry repo. If a plugin earned a spot in your setup, go upvote it so other people find it.

Translations

DMS ships 22 languages besides English. The term catalog got an overhaul this cycle: around 160 dead terms deleted, context added where one English word was doing two jobs, and a mechanism for carrying the same term under different contexts. Arabic, Bulgarian, and Ukrainian are new. Time and date formatting can follow the system locale instead of the DMS format options.

Plugins carry their own catalogs on top of that, so a plugin can be translated without anything landing in the DMS repo. Settings option rows that overflowed in longer languages are dropdowns now.

Everything Else

  • Bluetooth: multi-adapter support, soft rfkill unblock
  • Notifications: DnD bypass globally and per-app, an option to ignore app-requested timeouts (tkroll-ionos), and running the default action on body click instead of expanding the text
  • Launcher: ctrl-tab to cycle modes, a spotlight style for the niri overview, and IPC parity between spotlight-bar and the full launcher (hthienloc)
  • Dock: separate pinned and running apps, cycle grouped windows (hthienloc), minimize support
  • Clipboard: drop content in to store it, an overlay layer option (hthienloc), clearing only what the filter matches (Mario-Mohar), and copy as plain text for entries that have one
  • Bar: corner style and length padding, a focused window details popout (hthienloc), configurable tray icon spacing (tassiovirginio), popout variants for the power menu and color picker
  • Lock screen: vertical clock style (hthienloc), a separate text input for IMEs, an option to hide weather
  • Settings: Niri keyboard and mouse/touchpad tabs (hthienloc), location search for theme and gamma coordinates (Curious-r)
  • Gamma: configurable transition duration for time-based night mode, values below 2500k, a suspend-aware scheduler that stops losing track across sleep, and gamma and contrast sliders that work with night mode off
  • Power menu: user-defined custom buttons (FormalSnake), soft reboot on systemd
  • Battery: optionally lower refresh rate on battery (atimofeev), estimated end time (hthienloc), charge and discharge rate in the bar widget (SpyrosPsarras), and a circle style per bar instance with theme or step colors
  • Wallpaper: folder-based selection, shuffle (greenbugx), random cycling order (hthienloc)
  • Install: dms setup headless and a non-interactive dankinstall script (JDKamalakar)
  • IPC: settings dump for the full live config as JSON (sweenu), dumpSession, notification dismiss (euletheia), tray menu open (lankong0522), and openAt/toggleAt for opening popouts at a location

What's Next

1.6 is also a direction marker. DMS started as a shell, and the pieces around it - search, monitoring, calendar, greeter - have grown into a suite that now versions and releases as one. From here development shifts toward a full desktop environment paradigm: standalone apps that share the Dank design language and theming, on any compositor, instead of everything living inside the shell.

In development for upcoming releases:

  • Standalone file browser: the file browser graduates from a shell surface into its own app
  • DankConnect: phone integration for the Dank Desktop
  • More shell built-ins splitting into standalone suite apps, the way the greeter did this cycle

Community Contributions

540+ commits from 63 contributors this cycle. One deserves a callout:

Huỳnh Thiện Lộc landed 62 commits, including two of the performance wins above: the direct-socket IPC path and the region selector overlay cache. Also the cross-output region capture, native cursor shapes, the scroll capture live preview and --geometry flag, the dock pinned/running split and grouped window cycling, Niri keyboard and mouse/touchpad settings tabs, the QR generator launcher, and battery end-time estimates. On top of that, the Quick Capture and Emoji Picker plugins in the registry are his.

Also: GTK3 dynamic theming (euletheia), custom power menu buttons and Apple Music animated covers (FormalSnake), WiFi hotspot (ronharel02).

All Contributions

ContributorContribution
0xdeafbeef• Feat(control-center): show Bluetooth battery in quick tile (PR #3160)
• Fix(tray): prefer tooltip title in menu (PR #3181)
• Fix(bar): prevent focused app overlap (PR #3190)
14DoFix(ListViewTransitions): null transitions when duration truncates to 0ms (PR #2791)
A0-42Fix: use sleep_monitor/wakeup_monitor for DPMS to preserve monitor layout (PR #2842)
aaronjamtBar(IdleInhibitor): Color icon when activated (PR #2395)
AiraNadihFix(process-list): defer IPC actions until modal is loaded (PR #2829)
alamin147• Dankdash: add inline wallpaper search (PR #3048)
• Control-center: route Bluetooth power toggles through DMS backend (PR #3082)
Alexis12119Chore: fix indentation in niri media key bindings. (PR #2858)
arfan21Workspace switcher: fix apps icon won't re focus (PR #2830)
ArijanJOsd: click to hide some osds (PR #2927)
arqueonRefactor(mpris): enrich metadata across equivalent players (PR #2928)
artrixdotdevFeat(plugins): add portable plugin lockfile (PR #2976)
asteroidzmanCore: fix security and concurrency issues found in a backend audit (PR #2805)
atimofeev• Feat(power): lower refresh rate on battery (PR #2428)
• Fix(notifications): dismiss popups when senders close notifications (PR #2815)
bernardopgFix(doctor): explain Qt private API mismatch (PR #3131)
Conava• Feat(theme): support qtengine as a Qt platform theme (PR #3019)
• Fix(trash): keep tests off the machine's real per-mount trash dirs (PR #3100)
• Feat(theme): add a selectable source color mode for wallpaper palettes (PR #3020)
Curious-r• Feat(settings): add location search to theme & gamma coordinates (PR #3010)
• Feat(settings): echo location name in location search (PR #3040)
cwelsys• Popout: re-apply surface geometry after shouldBeVisible (PR #2983)
• Fix(dgop): stop the process list opening blank (PR #3108)
• Fix(tailscale): back off when the IPN bus read fails (PR #3142)
• Deps: bump tailscale.com to v1.102.0 (PR #3143)
• Test(plugins): isolate git config in the real git client test (PR #3144)
EbonJaegerBuild: Add support for DESTDIR (PR #2783)
elel-codeFix(matugen): honor config dir for qtengine sync (PR #3195)
euletheia• Feat(Themes): add support for GTK3 dynamic theming (PR #2523)
• Feat(ipc): add 'dismiss' function to notifications ipc (PR #2942)
• Fix(BatteryService): fix unresolved icons for notifications and dismiss alerts when plugged in (PR #2943)
• Fix(BatteryService): fix typo in notification check (PR #2944)
FaintFlowerReadme: fix broken star history chart (PR #3088)
feng-yifanFix(settings): reset AppBrowserPopup model on close to avoid crash (PR #2925)
fluxwrkFix: update Mango named scratchpad keybind (PR #3118)
FormalSnake• Location: add missing subscribe fan-out for location events (PR #2914)
• Powermenu: support user-defined custom power buttons (PR #2916)
• Media: add opt-in Apple Music animated album covers (PR #2918)
fromelicksFix(lint-qml): explain how to actually create the tooling VFS config (PR #3249)
Grant07Fix(network): authenticate Fortinet VPNs natively (PR #2959)
greenbugxFeat(wallpaper): add folder-based wallpaper selection and shuffle (PR #2990)
haikalllpFeat(theme): add support for matugen smart mode and type (PR #3109)
heckntSystemlogo: Add Zirconium (PR #2881)
hthienloc• Feat(media): add toggle for album art accent colors (#2831) (PR #2832)
• Fix(dash): resolve pointer cursor hover issue in connected mode (PR #2845)
• Fix(Modal): respect targetScreen property instead of always using focused screen (PR #2861)
• Fix(slideout): yield keyboard focus when modal is open on same screen (PR #2902)
• Feat(settings): add Mouse & Touchpad settings tab for Niri (PR #2905)
• Feat(settings): add option to suppress config reload toast (#2730) (PR #2915)
• Feat(wallpaper): support random cycling order (PR #2936)
• Feat(settings): add keyboard configuration tab for Niri (PR #2937)
• Feat: add QR Generator launcher (PR #2941)
• Fix(launcher): honor source badge setting in grid mode (PR #3002)
• Fix(settings): hide removed widget tooltip (PR #3003)
• Feat(theme): add extract dynamic theme to JSON file (PR #3009)
• Fix(dock): skip creating dock layers when dock is disabled (PR #3014)
• Feat(filebrowser): expose folder mode on surface modal (PR #3022)
• Feat(dock): cycle grouped app windows (PR #3023)
• Feat(dock): add option to separate pinned and running apps (PR #3025)
• Feat(clock): add widget date order option (PR #3028)
• Fix(dock): preserve overview-only visibility (PR #3029)
• Fix(brightness): initialize display state (PR #3035)
• Feat(clipboard): add overlay layer option (PR #3037)
• Fix(dock): cycle niri overview groups (PR #3038)
• Fix(frame): align connected chrome layer (PR #3039)
• Perf(screenshot): cache overlay background (PR #3061)
• Fix(dock): close grouped app on middle click (PR #3064)
• Fix(dock): animate overview reveal in frame mode (PR #3065)
• Fix(osd): clamp vertical brightness slider (PR #3067)
• Fix(launcher): hide spotlight placeholder during IME input (PR #3071)
• Fix(matugen): support Vesktop Flatpak themes (PR #3075)
• Feat(matugen): add Fcitx5 theme template (PR #3076)
• Perf(ipc): call Quickshell directly (PR #3081)
• Feat(dankbar): corner style & bar length padding (PR #3085)
• Fix(lock): handle ctrl-backspace (PR #3087)
• Feat(chooser): edit and copy target (PR #3094)
• Fix(notifications): keep popup above frame chrome (PR #3099)
• Fix(frame): preserve connected popout chrome (PR #3101)
• Feat(settings): improve battery status layout (PR #3103)
• Fix(settings): restore control center menu (PR #3113)
• Feat(battery): show estimated end time (PR #3117)
• Fix(displays): restore scale after revert (PR #3124)
• Fix(launcher): clip tile labels to rounded corners (PR #3126)
• Fix(dankbar): consume empty-area right clicks (PR #3127)
• Fix(screenshot): support multi-monitor region capture (PR #3132)
• Feat(settings): search runtime plugins (PR #3136)
• Feat(bar): add focused window details popout (PR #3139)
• Feat(screenshot): use native cursor shapes (PR #3155)
• Feat(screenshot): drag region with ctrl (PR #3157)
• Fix(frame): consume gutter clicks (PR #3158)
• Feat(launcher): cycle modes with ctrl-tab (PR #3204)
• Feat(spotlight): align tab navigation with full launcher (PR #3205)
• Fix(clipboard): stack clear dialog above modal (PR #3207)
• Fix(settings): keep search result visible (PR #3209)
• Feat(clipboard): accept dropped content (PR #3211)
• Feat(lock): add vertical clock style (PR #3220)
• Fix(popouts): close hover surface on click (PR #3223)
• Fix(dock): hide overlay dock over fullscreen (PR #3224)
• Feat(dock): sync background and icons in frame overview (PR #3252)
• Fix(dock): layout & indicator misalignment on orientation switch (PR #3256)
• Fix(bar): prevent focused app widget from blanking and live-sync (PR #3258)
• Feat(screenshot): support 4-corner resizing while holding Ctrl (PR #3259)
• Fix(powermenu): close on escape key, dedup action shortcuts (PR #3262)
• Feat(screenshot): add live preview panel for scroll capture (PR #3269)
• Feat(screenshot): add --geometry flag to selection coordinates (PR #3274)
jack-milFix(mpris): remove required non-null artist/title from idle condition (PR #2993)
JDKamalakarDankinstall: add non-interactive install script (PR #3063)
kanghengliu• Fix(player): combine trackid with text identity (PR #2808)
• Fix(processlist): stop polling when the popout is closed (PR #3159)
kmfAdd cellular network support (PR #3096)
korbashFeat(niri): close overview on window focus (PR #3030)
lankong0522Feat(tray): add IPC action to open tray menus (PR #2701)
Legend-017Fix(spotlight): improve file search query restoration and mode switching (PR #2887)
louztFeat(registry): support multiple plugin and theme registries via env vars (PR #2972)
Mario-Mohar• Feat(clipboard): clear only the filtered entries (PR #3235)
• Fix(theme): take sun times from the local calendar day, not the UTC one (PR #3237)
• Fix(keybinds): show hl.unbind + hl.bind overrides from user Lua modules (PR #3238)
Mark2Mac• Fix(session): persist the idle inhibitor across shell restarts (PR #3123)
• Fix(suncalc): parenthesise the sunrise-equation denominator (up to 24 min error at high latitude) (PR #3192)
Mati7235Dms doctor: detect missing XDG_MENU_PREFIX when KDE apps are installed (PR #2840)
maximal1stFeat/translation (PR #2980)
Mikilio• Feature/split move size hyprland windowrules (PR #2824)
• Fix(display): enforce at least one real monitor in profile application (PR #3106)
NeoDarknessFix: include Hyprland in minimal install logic (PR #2872)
njfletcher215Fix(settings): label primary bar spacing sliders correctly (PR #3228)
nofuturekidFix(tray): don't dismiss click-opened tray menus from the hover controller (PR #2979)
nozshFeat(keybinds): add keybind for PAM U2F on lock screen (PR #2930)
pdfFeat(dank16): Support full matugen color format output (PR #3148)
ronharel02Feat(network): initial WiFi hotspot support (PR #2825)
rredlipFix(Lockscreen) - cover pixel of the loading Spinner (PR #2989)
Salio24Fixed bluetooth UI bug mentioned in #2627 (PR #2850)
scottmckendry• Fix(settings): battery tab items not in search (PR #2794)
• Fix(plugin): support for symlinked configs (PR #3090)
scottsteelyFeat(mpris): pin preferred media source (PR #3150)
shalevc1098Keyboard layout widget: refresh once compositor detection lands (PR #3225)
SpyrosPsarrasFeat(battery): show charge/discharge rate in the bar widget (PR #3210)
SunPodderFeat(resize-api): add runtime resize functionality for desktop widgets (PR #3114)
sweenuFeat(ipc): add settings dump to print full live config as JSON (PR #2817)
tassiovirginioSystemTrayBar: add configurable icon spacing (PR #3183)
tkroll-ionos• Fix(lock): hold sleep inhibitor until compositor confirms lock (PR #2907)
• Add option to ignore app-requested notification timeout (PR #2909)
• Fix(system-update): apply saved updaterIntervalSeconds on daemon connect (PR #3093)
wongcallum• Feat(audio): add output port selection (PR #2779)
• Smooth battery time remaining estimate (PR #2854)
YewFenceFeat(controlcenter): add wifi refresh button (PR #3245)
z1-0Fix(launcher): DankLauncherV2 was missing id and genericName search (PR #3122)

Resources

Get Started with DMS →

GitHubDocumentationPluginsDiscordSponsor on GitHubSupport on Ko-fi Special thanks toYaLTeR for collaborating with the DMS team, for niri - the compositor that inspired DMS, and for hosting DMS on the niri Discord.

Thank You

To everyone who has supported DMS through feedback, contributions, sponsorships, donations, and packaging.

Polished like marble, sheds like a tabby

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论