DMS Common Components

May 16, 2026 ยท View on GitHub

Shared UI components for Dank Material Shell (DMS) plugins. This library provides a unified design system to ensure a consistent, premium user experience across all DMS plugins.

Installation

To use these components, this repository must be cloned into your DMS plugins directory:

git clone https://github.com/hthienloc/dms-common ~/.config/DankMaterialShell/plugins/dms-common

Usage for Developers

1. Importing components

In your plugin's QML files (e.g., PluginWidget.qml or PluginSettings.qml), import the common directory:

import "../dms-common"

Note: Since dms-common is usually a sibling directory to your plugin, ../dms-common is the standard relative path.

2. Basic Example

import QtQuick
import qs.Modules.Plugins
import "../dms-common"

PluginSettings {
    id: root
    
    PluginHeader {
        title: "My Awesome Plugin"
    }

    SettingsCard {
        SectionTitle { text: "Instructions" }
        
        UsageGuide {
            items: [
                "<b>Left-click</b> to trigger the primary action.",
                "<b>Right-click</b> to open settings or reset."
            ]
        }
    }
}

Component Reference

ComponentDescription
PluginHeaderStandard header with title and consistent styling.
SettingsCardA container for grouping related settings with a subtle background and padding.
SectionTitleStyled text for labeling sections within a card.
UsageGuideAutomatically formatted list of instructions with bullet points.
ActionTileInteractive tile for executing commands or opening links.
InfoTileDisplay tile for showing data (e.g., system stats, weather).
CopyBoxA text field accompanied by a "Copy" button for easy clipboard access.
StatusDisplayA complex component for showing multiple status fields with icons and labels.
OutlineButtonA modern, transparent button with an outline, perfect for secondary actions.
TagChipSmall, rounded badges for categories or status indicators.
HintSectionA standardized way to show tips at the bottom of a popout.
MediaHeaderSpecialized header for plugins that handle media (e.g., sound, music).

Contributing

If you create a reusable UI pattern that could benefit other plugins, feel free to submit a pull request to add it to dms-common.

License

GPL-3.0

Roadmap / TODO

  • Animation Wrappers: Standardized QML components for consistent transitions (Fade, Slide, Scale).
  • IPC Utility Suite: More robust and type-safe wrappers for common DMSService calls.
  • Adaptive Layouts: Helpers for building responsive UI that works across different bar positions and widths.
  • State Persistence Helpers: Standardized methods for caching and syncing UI state between widget instances.
  • Expanded Component Kit: Richer widgets like TabBars, ProgressBars, and unified ScrollView wrappers.