summaryrefslogtreecommitdiff
path: root/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample
diff options
context:
space:
mode:
authornippy <you@example.com>2026-04-18 13:49:56 +0200
committernippy <you@example.com>2026-04-18 13:49:56 +0200
commit5d94c0a7d44a2255b81815a52a7056a94a39842d (patch)
tree759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample
parente79cdf210b267f21a186255ce1a4d50029439d54 (diff)
downloadRaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz
RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip
update Raveos themes
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample')
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlSettings.qml98
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlWidget.qml93
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/README.md208
-rw-r--r--raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/plugin.json13
4 files changed, 412 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlSettings.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlSettings.qml
new file mode 100644
index 0000000..374af30
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlSettings.qml
@@ -0,0 +1,98 @@
+import QtQuick
+import qs.Common
+import qs.Widgets
+import qs.Modules.Plugins
+
+PluginSettings {
+ id: root
+ pluginId: "popoutControlExample"
+
+ StyledText {
+ width: parent.width
+ text: "Popout Control Settings"
+ font.pixelSize: Theme.fontSizeLarge
+ font.weight: Font.Bold
+ color: Theme.surfaceText
+ }
+
+ StyledText {
+ width: parent.width
+ text: "Choose which popout/modal will open when clicking the widget"
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.surfaceVariantText
+ wrapMode: Text.WordWrap
+ }
+
+ SelectionSetting {
+ settingKey: "selectedPopout"
+ label: "Popout to Open"
+ description: "Select which popout or modal opens when you click the widget"
+ options: [
+ {
+ label: "Control Center",
+ value: "controlCenter"
+ },
+ {
+ label: "Notification Center",
+ value: "notificationCenter"
+ },
+ {
+ label: "App Drawer",
+ value: "appDrawer"
+ },
+ {
+ label: "Process List",
+ value: "processList"
+ },
+ {
+ label: "DankDash",
+ value: "dankDash"
+ },
+ {
+ label: "Battery Info",
+ value: "battery"
+ },
+ {
+ label: "VPN",
+ value: "vpn"
+ },
+ {
+ label: "System Update",
+ value: "systemUpdate"
+ },
+ {
+ label: "Settings",
+ value: "settings"
+ },
+ {
+ label: "Clipboard History",
+ value: "clipboardHistory"
+ },
+ {
+ label: "Spotlight",
+ value: "spotlight"
+ },
+ {
+ label: "Power Menu",
+ value: "powerMenu"
+ },
+ {
+ label: "Color Picker",
+ value: "colorPicker"
+ },
+ {
+ label: "Notepad",
+ value: "notepad"
+ }
+ ]
+ defaultValue: "controlCenter"
+ }
+
+ StyledText {
+ width: parent.width
+ text: "💡 Tip: The widget displays the name of the selected popout and opens it when clicked!"
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.surfaceVariantText
+ wrapMode: Text.WordWrap
+ }
+}
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlWidget.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlWidget.qml
new file mode 100644
index 0000000..fdbf89f
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/PopoutControlWidget.qml
@@ -0,0 +1,93 @@
+import QtQuick
+import qs.Common
+import qs.Widgets
+import qs.Modules.Plugins
+
+PluginComponent {
+ id: root
+
+ property var popoutService: null
+
+ property string selectedPopout: pluginData.selectedPopout || "controlCenter"
+
+ property var popoutActions: ({
+ "controlCenter": (x, y, w, s, scr) => popoutService?.toggleControlCenter(x, y, w, s, scr),
+ "notificationCenter": (x, y, w, s, scr) => popoutService?.toggleNotificationCenter(x, y, w, s, scr),
+ "appDrawer": (x, y, w, s, scr) => popoutService?.toggleAppDrawer(x, y, w, s, scr),
+ "processList": (x, y, w, s, scr) => popoutService?.toggleProcessList(x, y, w, s, scr),
+ "dankDash": (x, y, w, s, scr) => popoutService?.toggleDankDash(0, x, y, w, s, scr),
+ "battery": (x, y, w, s, scr) => popoutService?.toggleBattery(x, y, w, s, scr),
+ "vpn": (x, y, w, s, scr) => popoutService?.toggleVpn(x, y, w, s, scr),
+ "systemUpdate": (x, y, w, s, scr) => popoutService?.toggleSystemUpdate(x, y, w, s, scr),
+ "settings": () => popoutService?.openSettings(),
+ "clipboardHistory": () => popoutService?.openClipboardHistory(),
+ "spotlight": () => popoutService?.toggleDankLauncherV2(),
+ "powerMenu": () => popoutService?.togglePowerMenu(),
+ "colorPicker": () => popoutService?.showColorPicker(),
+ "notepad": () => popoutService?.toggleNotepad()
+ })
+
+ property var popoutNames: ({
+ "controlCenter": "Control Center",
+ "notificationCenter": "Notification Center",
+ "appDrawer": "App Drawer",
+ "processList": "Process List",
+ "dankDash": "DankDash",
+ "battery": "Battery Info",
+ "vpn": "VPN",
+ "systemUpdate": "System Update",
+ "settings": "Settings",
+ "clipboardHistory": "Clipboard",
+ "spotlight": "Spotlight",
+ "powerMenu": "Power Menu",
+ "colorPicker": "Color Picker",
+ "notepad": "Notepad"
+ })
+
+ pillClickAction: (x, y, width, section, screen) => {
+ if (popoutActions[selectedPopout]) {
+ popoutActions[selectedPopout](x, y, width, section, screen);
+ }
+ }
+
+ horizontalBarPill: Component {
+ Row {
+ spacing: Theme.spacingXS
+
+ DankIcon {
+ name: "widgets"
+ color: Theme.primary
+ font.pixelSize: Theme.iconSize - 6
+ anchors.verticalCenter: parent.verticalCenter
+ }
+
+ StyledText {
+ text: popoutNames[selectedPopout] || "Popouts"
+ color: Theme.primary
+ font.pixelSize: Theme.fontSizeMedium
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+ }
+
+ verticalBarPill: Component {
+ Column {
+ spacing: Theme.spacingXS
+
+ DankIcon {
+ name: "widgets"
+ color: Theme.primary
+ font.pixelSize: Theme.iconSize - 6
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ StyledText {
+ text: popoutNames[selectedPopout] || "Popouts"
+ color: Theme.primary
+ font.pixelSize: Theme.fontSizeSmall
+ anchors.horizontalCenter: parent.horizontalCenter
+ horizontalAlignment: Text.AlignHCenter
+ }
+ }
+ }
+}
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/README.md b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/README.md
new file mode 100644
index 0000000..d1fb54a
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/README.md
@@ -0,0 +1,208 @@
+# Popout Control Example Plugin
+
+This example plugin demonstrates:
+- Using `PopoutService` to trigger positioned popouts and modals
+- Using `pillClickAction` with position parameters
+- Using `PluginSettings` with dropdown selection
+- Dynamic widget text based on settings
+
+The `pillClickAction` receives position parameters `(x, y, width, section, screen)` which are passed to PopoutService functions to properly position popouts relative to the widget.
+
+## PopoutService API
+
+The `PopoutService` is automatically injected into plugin widgets and daemons as `popoutService`. It provides access to all shell popouts and modals.
+
+### Available Popouts
+
+#### Control Center
+```qml
+popoutService.openControlCenter()
+popoutService.closeControlCenter()
+popoutService.toggleControlCenter()
+```
+
+#### Notification Center
+```qml
+popoutService.openNotificationCenter()
+popoutService.closeNotificationCenter()
+popoutService.toggleNotificationCenter()
+```
+
+#### App Drawer
+```qml
+popoutService.openAppDrawer()
+popoutService.closeAppDrawer()
+popoutService.toggleAppDrawer()
+```
+
+#### Process List (Popout)
+```qml
+popoutService.openProcessList()
+popoutService.closeProcessList()
+popoutService.toggleProcessList()
+```
+
+#### DankDash
+```qml
+popoutService.openDankDash(tabIndex) // tabIndex: 0=Calendar, 1=Media, 2=Weather
+popoutService.closeDankDash()
+popoutService.toggleDankDash(tabIndex)
+```
+
+#### Battery Popout
+```qml
+popoutService.openBattery()
+popoutService.closeBattery()
+popoutService.toggleBattery()
+```
+
+#### VPN Popout
+```qml
+popoutService.openVpn()
+popoutService.closeVpn()
+popoutService.toggleVpn()
+```
+
+#### System Update Popout
+```qml
+popoutService.openSystemUpdate()
+popoutService.closeSystemUpdate()
+popoutService.toggleSystemUpdate()
+```
+
+### Available Modals
+
+#### Settings Modal
+```qml
+popoutService.openSettings()
+popoutService.closeSettings()
+```
+
+#### Clipboard History Modal
+```qml
+popoutService.openClipboardHistory()
+popoutService.closeClipboardHistory()
+```
+
+#### Launcher Modal
+```qml
+popoutService.openDankLauncherV2()
+popoutService.closeDankLauncherV2()
+popoutService.toggleDankLauncherV2()
+```
+
+#### Power Menu Modal
+```qml
+popoutService.openPowerMenu()
+popoutService.closePowerMenu()
+popoutService.togglePowerMenu()
+```
+
+#### Process List Modal (fullscreen)
+```qml
+popoutService.showProcessListModal()
+popoutService.hideProcessListModal()
+popoutService.toggleProcessListModal()
+```
+
+#### Color Picker Modal
+```qml
+popoutService.showColorPicker()
+popoutService.hideColorPicker()
+```
+
+#### Notification Modal
+```qml
+popoutService.showNotificationModal()
+popoutService.hideNotificationModal()
+```
+
+#### WiFi Password Modal
+```qml
+popoutService.showWifiPasswordModal()
+popoutService.hideWifiPasswordModal()
+```
+
+#### Network Info Modal
+```qml
+popoutService.showNetworkInfoModal()
+popoutService.hideNetworkInfoModal()
+```
+
+#### Notepad Slideout
+```qml
+popoutService.openNotepad()
+popoutService.closeNotepad()
+popoutService.toggleNotepad()
+```
+
+## Usage in Plugins
+
+### Widget Plugins
+
+```qml
+import QtQuick
+import qs.Common
+import qs.Widgets
+
+Rectangle {
+ id: root
+
+ property var popoutService: null // REQUIRED: Must declare for injection
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ popoutService?.toggleControlCenter()
+ }
+ }
+}
+```
+
+### Daemon Plugins
+
+```qml
+import QtQuick
+import qs.Services
+
+Item {
+ id: root
+
+ property var popoutService: null // REQUIRED: Must declare for injection
+
+ Connections {
+ target: NotificationService
+ function onNotificationReceived() {
+ popoutService?.openNotificationCenter()
+ }
+ }
+}
+```
+
+**Important**: The `popoutService` property **must** be declared in your plugin component. Without it, you'll get errors like:
+```
+Error: Cannot assign to non-existent property "popoutService"
+```
+
+## Example Use Cases
+
+1. **Custom Launcher**: Create a widget that opens the app drawer
+2. **Quick Settings**: Toggle control center from a custom button
+3. **Notification Manager**: Open notification center on new notifications
+4. **System Monitor**: Open process list on high CPU usage
+5. **Power Management**: Trigger power menu from a custom widget
+
+## Installation
+
+1. Copy the plugin directory to `~/.config/DankMaterialShell/plugins/`
+2. Open Settings → Plugins
+3. Click "Scan for Plugins"
+4. Enable "Popout Control Example"
+5. Add `popoutControlExample` to your DankBar widget list
+
+## Notes
+
+- The `popoutService` property is automatically injected - no manual setup required
+- Always use optional chaining (`?.`) when calling methods to handle null cases
+- Popouts are lazily loaded - first access may activate the loader
+- Some popouts require specific system features to be available
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/plugin.json b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/plugin.json
new file mode 100644
index 0000000..02042a0
--- /dev/null
+++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/plugin.json
@@ -0,0 +1,13 @@
+{
+ "id": "popoutControlExample",
+ "name": "Popout Control Example",
+ "description": "Example widget demonstrating PopoutService usage with pillClickAction",
+ "version": "1.0.0",
+ "author": "DankMaterialShell",
+ "type": "widget",
+ "capabilities": ["dankbar-widget"],
+ "component": "./PopoutControlWidget.qml",
+ "icon": "widgets",
+ "settings": "./PopoutControlSettings.qml",
+ "permissions": ["settings_read", "settings_write"]
+}