diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip | |
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin')
4 files changed, 316 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/EmojiSettings.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/EmojiSettings.qml new file mode 100644 index 0000000..aa38bc9 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/EmojiSettings.qml @@ -0,0 +1,97 @@ +import QtQuick +import qs.Common +import qs.Widgets +import qs.Modules.Plugins + +PluginSettings { + id: root + pluginId: "exampleEmojiPlugin" + + // Header section to explain what this plugin does + StyledText { + width: parent.width + text: "Emoji Cycler Settings" + font.pixelSize: Theme.fontSizeLarge + font.weight: Font.Bold + color: Theme.surfaceText + } + + StyledText { + width: parent.width + text: "Configure which emojis appear in your bar, how quickly they cycle, and how many show at once." + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + wrapMode: Text.WordWrap + } + + // Dropdown to select which emoji set to use + SelectionSetting { + settingKey: "emojiSet" + label: "Emoji Set" + description: "Choose which collection of emojis to cycle through" + options: [ + {label: "Happy & Sad", value: "happySad"}, + {label: "Hearts", value: "hearts"}, + {label: "Hand Gestures", value: "hands"}, + {label: "All Mixed", value: "mixed"} + ] + defaultValue: "happySad" + + // Update the actual emoji array when selection changes + onValueChanged: { + const sets = { + "happySad": ["๐", "๐ข", "๐", "๐ญ", "๐", "๐ก"], + "hearts": ["โค๏ธ", "๐งก", "๐", "๐", "๐", "๐", "๐ค", "๐ค"], + "hands": ["๐", "๐", "๐", "โ๏ธ", "๐ค", "๐", "โ", "๐ค"], + "mixed": ["๐", "โค๏ธ", "๐", "๐", "๐ฅ", "โจ", "๐", "๐ฏ"] + } + const newEmojis = sets[value] || sets["happySad"] + root.saveValue("emojis", newEmojis) + } + + Component.onCompleted: { + // Initialize the emojis array on first load + const currentSet = value || defaultValue + const sets = { + "happySad": ["๐", "๐ข", "๐", "๐ญ", "๐", "๐ก"], + "hearts": ["โค๏ธ", "๐งก", "๐", "๐", "๐", "๐", "๐ค", "๐ค"], + "hands": ["๐", "๐", "๐", "โ๏ธ", "๐ค", "๐", "โ", "๐ค"], + "mixed": ["๐", "โค๏ธ", "๐", "๐", "๐ฅ", "โจ", "๐", "๐ฏ"] + } + const emojis = sets[currentSet] || sets["happySad"] + root.saveValue("emojis", emojis) + } + } + + // Slider to control how fast emojis cycle (in milliseconds) + SliderSetting { + settingKey: "cycleInterval" + label: "Cycle Speed" + description: "How quickly emojis rotate (in seconds)" + defaultValue: 3000 + minimum: 500 + maximum: 10000 + unit: "ms" + leftIcon: "schedule" + } + + // Slider to control max emojis shown in the bar + SliderSetting { + settingKey: "maxBarEmojis" + label: "Max Bar Emojis" + description: "Maximum number of emojis to display in the bar at once" + defaultValue: 3 + minimum: 1 + maximum: 8 + unit: "" + rightIcon: "emoji_emotions" + } + + StyledText { + width: parent.width + text: "๐ก Tip: Click the emoji widget in your bar to open the emoji picker and copy any emoji to your clipboard!" + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + wrapMode: Text.WordWrap + } +} diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/EmojiWidget.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/EmojiWidget.qml new file mode 100644 index 0000000..6142692 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/EmojiWidget.qml @@ -0,0 +1,151 @@ +import QtQuick +import Quickshell +import qs.Common +import qs.Services +import qs.Widgets +import qs.Modules.Plugins + +PluginComponent { + id: root + + layerNamespacePlugin: "emoji-cycler" + + property var enabledEmojis: pluginData.emojis || ["๐", "๐ข", "โค๏ธ"] + property int cycleInterval: pluginData.cycleInterval || 3000 + property int maxBarEmojis: pluginData.maxBarEmojis || 3 + + property int currentIndex: 0 + property var displayedEmojis: [] + + Timer { + interval: root.cycleInterval + running: true + repeat: true + onTriggered: { + if (root.enabledEmojis.length > 0) { + root.currentIndex = (root.currentIndex + 1) % root.enabledEmojis.length + root.updateDisplayedEmojis() + } + } + } + + function updateDisplayedEmojis() { + const maxToShow = Math.min(root.maxBarEmojis, root.enabledEmojis.length) + let emojis = [] + for (let i = 0; i < maxToShow; i++) { + const idx = (root.currentIndex + i) % root.enabledEmojis.length + emojis.push(root.enabledEmojis[idx]) + } + root.displayedEmojis = emojis + } + + Component.onCompleted: { + updateDisplayedEmojis() + } + + onEnabledEmojisChanged: updateDisplayedEmojis() + onMaxBarEmojisChanged: updateDisplayedEmojis() + + horizontalBarPill: Component { + Row { + id: emojiRow + spacing: Theme.spacingXS + + Repeater { + model: root.displayedEmojis + StyledText { + text: modelData + font.pixelSize: Theme.fontSizeLarge + } + } + } + } + + verticalBarPill: Component { + Column { + id: emojiColumn + spacing: Theme.spacingXS + + Repeater { + model: root.displayedEmojis + StyledText { + text: modelData + font.pixelSize: Theme.fontSizeMedium + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + } + + popoutContent: Component { + PopoutComponent { + id: popoutColumn + + headerText: "Emoji Picker" + detailsText: "Click an emoji to copy it to clipboard" + showCloseButton: true + + property var allEmojis: [ + "๐", "๐", "๐", "๐", "๐", "๐
", "๐คฃ", "๐", "๐", "๐", + "๐", "๐", "๐", "๐ฅฐ", "๐", "๐คฉ", "๐", "๐", "๐", "๐", + "๐", "๐", "๐", "๐คช", "๐", "๐ค", "๐ค", "๐คญ", "๐คซ", "๐ค", + "๐ค", "๐คจ", "๐", "๐", "๐ถ", "๐", "๐", "๐", "๐ฌ", "๐คฅ", + "๐", "๐", "๐ช", "๐คค", "๐ด", "๐ท", "๐ค", "๐ค", "๐คข", "๐คฎ", + "๐คง", "๐ฅต", "๐ฅถ", "๐ถโ๐ซ๏ธ", "๐ต", "๐ตโ๐ซ", "๐คฏ", "๐ค ", "๐ฅณ", "๐", + "๐ค", "๐ง", "๐", "๐", "๐", "โน๏ธ", "๐ฎ", "๐ฏ", "๐ฒ", "๐ณ", + "๐ฅบ", "๐ฆ", "๐ง", "๐จ", "๐ฐ", "๐ฅ", "๐ข", "๐ญ", "๐ฑ", "๐", + "๐ฃ", "๐", "๐", "๐ฉ", "๐ซ", "๐ฅฑ", "๐ค", "๐ก", "๐ ", "๐คฌ", + "โค๏ธ", "๐งก", "๐", "๐", "๐", "๐", "๐ค", "๐ค", "๐ค", "๐", + "โค๏ธโ๐ฅ", "โค๏ธโ๐ฉน", "๐", "๐", "๐", "๐", "๐", "๐", "๐", "๐", + "๐", "๐", "๐", "โ", "๐ค", "๐ค", "๐ค", "โ๏ธ", "๐ค", "๐ค", + "๐", "๐ค", "๐ค", "๐", "๐", "๐", "๐", "โ๏ธ", "โ", "๐ค" + ] + + Item { + width: parent.width + implicitHeight: root.popoutHeight - popoutColumn.headerHeight - popoutColumn.detailsHeight - Theme.spacingXL + + DankGridView { + id: emojiGrid + anchors.horizontalCenter: parent.horizontalCenter + width: Math.floor(parent.width / 50) * 50 + height: parent.height + clip: true + cellWidth: 50 + cellHeight: 50 + model: popoutColumn.allEmojis + + delegate: StyledRect { + width: 45 + height: 45 + radius: Theme.cornerRadius + color: emojiMouseArea.containsMouse ? Theme.surfaceContainerHighest : Theme.surfaceContainerHigh + border.width: 0 + + StyledText { + anchors.centerIn: parent + text: modelData + font.pixelSize: Theme.fontSizeXLarge + } + + MouseArea { + id: emojiMouseArea + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + + onClicked: { + Quickshell.execDetached(["dms", "cl", "copy", modelData]) + ToastService.showInfo("Copied " + modelData + " to clipboard") + popoutColumn.closePopout() + } + } + } + } + } + } + } + + popoutWidth: 400 + popoutHeight: 500 +} diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/README.md b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/README.md new file mode 100644 index 0000000..9102dda --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/README.md @@ -0,0 +1,52 @@ +# Emoji Cycler Plugin + +An example dms plugin that displays cycling emojis in your bar with an emoji picker popout. + +## Features + +- **Cycling Emojis**: Automatically rotates through your selected emoji set in the bar +- **Emoji Picker**: Click the widget to open a grid of 120+ emojis +- **Copy to Clipboard**: Click any emoji in the picker to copy it to clipboard +- **Customizable**: Choose emoji sets, cycle speed, and max emojis shown + +## Installation + +1. Copy this directory to `~/.config/DankMaterialShell/plugins/ExampleEmojiPlugin` +2. Open DMS Settings โ Plugins +3. Click "Scan for Plugins" +4. Enable "Emoji Cycler" +5. Add `exampleEmojiPlugin` to your DankBar widget list + +## Settings + +### Emoji Set +Choose from different emoji collections: +- **Happy & Sad**: Mix of emotional faces +- **Hearts**: Various colored hearts +- **Hand Gestures**: Thumbs up, peace signs, etc. +- **All Mixed**: A bit of everything + +### Cycle Speed +Control how fast emojis rotate (500ms - 10000ms) + +### Max Bar Emojis +How many emojis to display at once (1-8) + +## Usage + +**In the bar**: Watch emojis cycle through automatically +**Click the widget**: Opens emoji picker with 120+ emojis +**Click any emoji**: Copies it to clipboard and shows toast + +## Example Code Highlights + +This plugin demonstrates: +- Using `PluginComponent` for bar integration +- `SelectionSetting`, `SliderSetting` for configuration +- Timer-based animation +- Popout content with grid layout +- External command execution (`Quickshell.execDetached`) +- Toast notifications (`ToastService.show`) +- Dynamic settings loading/saving + +Perfect template for creating your own DMS plugins! diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/plugin.json b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/plugin.json new file mode 100644 index 0000000..ef16d01 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleEmojiPlugin/plugin.json @@ -0,0 +1,16 @@ +{ + "id": "exampleEmojiPlugin", + "name": "Emoji Cycler", + "description": "Display cycling emojis in your bar with a handy emoji picker popout", + "version": "1.0.0", + "author": "AvengeMedia", + "type": "widget", + "capabilities": ["emoji-search", "clipboard", "dankbar-widget"], + "component": "./EmojiWidget.qml", + "icon": "mood", + "settings": "./EmojiSettings.qml", + "permissions": [ + "settings_read", + "settings_write" + ] +} |