1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 21:42:51 -05:00

launcher: Dank Launcher V2 (beta)

- Aggregate plugins/extensions in new "all" tab
- Quick tab actions
- New tile mode for results
- Plugins can enforce/require view mode, or set preferred default
- Danksearch under "files" category
This commit is contained in:
bbedward
2026-01-20 17:54:30 -05:00
parent 3c39162016
commit 1d5d876e16
31 changed files with 5778 additions and 216 deletions

View File

@@ -0,0 +1,113 @@
import QtQuick
import Quickshell
import qs.Services
QtObject {
id: root
property var pluginService: null
property string trigger: "img"
signal itemsChanged
readonly property var images: [
{
name: "DankDash",
imageUrl: "https://danklinux.com/img/dankdash.png",
comment: "DankMaterialShell Dashboard"
},
{
name: "Control Center",
imageUrl: "https://danklinux.com/img/cc.png",
comment: "System Control Center"
},
{
name: "Desktop",
imageUrl: "https://danklinux.com/img/desktop.png",
comment: "Desktop Environment"
},
{
name: "Search",
imageUrl: "https://danklinux.com/img/dsearch.png",
comment: "Application Search"
},
{
name: "Theme Registry",
imageUrl: "https://danklinux.com/img/blog/v1.2/themeregistry.png",
comment: "Theme Registry Browser"
},
{
name: "Monitor Settings",
imageUrl: "https://danklinux.com/img/blog/v1.2/monitordark.png",
comment: "Display Configuration"
}
]
function getItems(query) {
const lowerQuery = query ? query.toLowerCase().trim() : "";
if (lowerQuery.length === 0) {
return images.map(img => ({
name: img.name,
icon: "material:image",
comment: img.comment,
action: "view:" + img.imageUrl,
categories: ["Image Gallery"],
imageUrl: img.imageUrl
}));
}
return images.filter(img => img.name.toLowerCase().includes(lowerQuery) || img.comment.toLowerCase().includes(lowerQuery)).map(img => ({
name: img.name,
icon: "material:image",
comment: img.comment,
action: "view:" + img.imageUrl,
categories: ["Image Gallery"],
imageUrl: img.imageUrl
}));
}
function executeItem(item) {
if (!item?.action)
return;
const actionParts = item.action.split(":");
const actionType = actionParts[0];
const actionData = actionParts.slice(1).join(":");
if (actionType === "view") {
if (typeof ToastService !== "undefined") {
ToastService.showInfo("Image Gallery", "Viewing: " + item.name);
}
}
}
function getContextMenuActions(item) {
if (!item)
return [];
return [
{
icon: "open_in_new",
text: "Open in Browser",
action: () => {
const url = item.imageUrl || "";
if (url) {
Qt.openUrlExternally(url);
}
}
},
{
icon: "content_copy",
text: "Copy URL",
action: () => {
const url = item.imageUrl || "";
if (url) {
Quickshell.execDetached(["dms", "cl", "copy", url]);
if (typeof ToastService !== "undefined") {
ToastService.showInfo("Copied", url);
}
}
}
}
];
}
}

View File

@@ -0,0 +1,43 @@
# LauncherImageExample
Example launcher plugin demonstrating tile mode with URL-based images.
## Features
- **Tile Mode**: Uses `viewMode: "tile"` in plugin.json to display results as image tiles
- **Enforced View Mode**: Uses `viewModeEnforced: true` to lock the view to tile mode (users cannot change it)
- **URL Images**: Demonstrates using `imageUrl` property for remote images
## Usage
1. Open the launcher (DankLauncherV2)
2. Type `img` to activate the plugin
3. Browse DankMaterialShell screenshots in tile view
## Plugin Configuration
```json
{
"viewMode": "tile",
"viewModeEnforced": true
}
```
- `viewMode`: Sets the default view mode ("list", "grid", or "tile")
- `viewModeEnforced`: When true, users cannot switch view modes for this plugin
## Item Data Structure
To display images in tile mode, set `imageUrl` directly on the item:
```javascript
{
name: "Image Title",
icon: "material:image",
comment: "Image description",
categories: ["Category"],
imageUrl: "https://example.com/image.png"
}
```
The `imageUrl` property supports remote URLs or local files, use `file://` prefix for local files.

View File

@@ -0,0 +1,14 @@
{
"id": "launcherImageExample",
"name": "Image Gallery Example",
"description": "Example launcher plugin demonstrating tile mode with images",
"version": "1.0.0",
"author": "DMS Team",
"icon": "photo_library",
"type": "launcher",
"trigger": "img",
"viewMode": "tile",
"viewModeEnforced": true,
"component": "./LauncherImageExample.qml",
"permissions": []
}