diff options
| author | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
|---|---|---|
| committer | nippy <you@example.com> | 2026-04-18 13:49:56 +0200 |
| commit | 5d94c0a7d44a2255b81815a52a7056a94a39842d (patch) | |
| tree | 759bdea9645c6a62f9e1e4c001f7d81cccd120d2 /raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml | |
| parent | e79cdf210b267f21a186255ce1a4d50029439d54 (diff) | |
| download | RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.tar.gz RaveOS-PKGBUILD-5d94c0a7d44a2255b81815a52a7056a94a39842d.zip | |
update Raveos themes
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml')
| -rw-r--r-- | raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml new file mode 100644 index 0000000..81040b6 --- /dev/null +++ b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml @@ -0,0 +1,140 @@ +import QtQuick +import Quickshell +import qs.Services + +Item { + id: root + + // Plugin properties + property var pluginService: null + property string trigger: "#" + + // Plugin interface signals + signal itemsChanged() + + Component.onCompleted: { + console.info("LauncherExample: Plugin loaded") + + // Load custom trigger from settings + if (pluginService) { + trigger = pluginService.loadPluginData("launcherExample", "trigger", "#") + } + } + + // Required function: Get items for launcher + function getItems(query) { + const baseItems = [ + { + name: "Test Item 1", + icon: "material:lightbulb", + comment: "This is a test item that shows a toast notification", + action: "toast:Test Item 1 executed!", + categories: ["LauncherExample"] + }, + { + name: "Test Item 2", + icon: "material:star", + comment: "Another test item with different action", + action: "toast:Test Item 2 clicked!", + categories: ["LauncherExample"] + }, + { + name: "Test Item 3", + icon: "material:favorite", + comment: "Third test item for demonstration", + action: "toast:Test Item 3 activated!", + categories: ["LauncherExample"] + }, + { + name: "Unicode Icon Example", + icon: "unicode:🚀", + comment: "Demonstrates unicode/emoji icon support", + action: "toast:Unicode icons work great!", + categories: ["LauncherExample"] + }, + { + name: "Example Copy Action", + icon: "material:content_copy", + comment: "Demonstrates copying text to clipboard", + action: "copy:This text was copied by the launcher plugin!", + categories: ["LauncherExample"] + }, + { + name: "Example Script Action", + icon: "material:terminal", + comment: "Demonstrates running a simple command", + action: "script:echo 'Hello from launcher plugin!'", + categories: ["LauncherExample"] + } + ] + + if (!query || query.length === 0) { + return baseItems + } + + // Filter items based on query + const lowerQuery = query.toLowerCase() + return baseItems.filter(item => { + return item.name.toLowerCase().includes(lowerQuery) || + item.comment.toLowerCase().includes(lowerQuery) + }) + } + + // Required function: Execute item action + function executeItem(item) { + if (!item || !item.action) { + console.warn("LauncherExample: Invalid item or action") + return + } + + console.log("LauncherExample: Executing item:", item.name, "with action:", item.action) + + const actionParts = item.action.split(":") + const actionType = actionParts[0] + const actionData = actionParts.slice(1).join(":") + + switch (actionType) { + case "toast": + showToast(actionData) + break + case "copy": + copyToClipboard(actionData) + break + case "script": + runScript(actionData) + break + default: + console.warn("LauncherExample: Unknown action type:", actionType) + showToast("Unknown action: " + actionType) + } + } + + // Helper functions for different action types + function showToast(message) { + if (typeof ToastService !== "undefined") { + ToastService.showInfo("LauncherExample", message) + } else { + console.log("LauncherExample Toast:", message) + } + } + + function copyToClipboard(text) { + Quickshell.execDetached(["dms", "cl", "copy", text]) + showToast("Copied to clipboard: " + text) + } + + function runScript(command) { + console.log("LauncherExample: Would run script:", command) + showToast("Script executed: " + command) + + // In a real plugin, you might create a Process component here + // For demo purposes, we just show what would happen + } + + // Watch for trigger changes + onTriggerChanged: { + if (pluginService) { + pluginService.savePluginData("launcherExample", "trigger", trigger) + } + } +} |