From 5d94c0a7d44a2255b81815a52a7056a94a39842d Mon Sep 17 00:00:00 2001 From: nippy Date: Sat, 18 Apr 2026 13:49:56 +0200 Subject: update Raveos themes --- .../PLUGINS/PopoutControlExample/README.md | 208 +++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/README.md (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/PopoutControlExample/README.md') 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 -- cgit v1.3