summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-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/LauncherExample/LauncherExampleLauncher.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml140
1 files changed, 140 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/LauncherExample/LauncherExampleLauncher.qml
new file mode 100644
index 0000000..81040b6
--- /dev/null
+++ b/raveos-hyprland-theme/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)
+ }
+ }
+}