waffles: context menus for app buttons

This commit is contained in:
end-4
2025-12-07 00:04:24 +01:00
parent 13968db31c
commit 6c460b209c
13 changed files with 155 additions and 20 deletions
@@ -0,0 +1,41 @@
pragma Singleton
import qs.modules.common
import QtQuick
import Quickshell
Singleton {
id: root
function isPinned(appId) {
return Config.options.launcher.pinnedApps.indexOf(appId) !== -1;
}
function togglePin(appId) {
if (root.isPinned(appId)) {
Config.options.launcher.pinnedApps = Config.options.launcher.pinnedApps.filter(id => id !== appId)
} else {
Config.options.launcher.pinnedApps = Config.options.launcher.pinnedApps.concat([appId])
}
}
function moveToFront(appId) {
if (!root.isPinned(appId)) return;
const pinnedApps = Config.options.launcher.pinnedApps;
Config.options.launcher.pinnedApps = [appId].concat(pinnedApps.filter(id => id !== appId));
}
function moveLeft(appId) {
const pinnedApps = Config.options.launcher.pinnedApps;
const index = pinnedApps.indexOf(appId);
if (index === -1 || index === 0) return;
Config.options.launcher.pinnedApps = pinnedApps.slice(0, index - 1).concat([appId]).concat(pinnedApps[index - 1]).concat(pinnedApps.slice(index + 1));
}
function moveRight(appId) {
const pinnedApps = Config.options.launcher.pinnedApps;
const index = pinnedApps.indexOf(appId);
if (index === -1 || index === pinnedApps.length - 1) return;
Config.options.launcher.pinnedApps = pinnedApps.slice(0, index).concat(pinnedApps[index + 1]).concat([appId]).concat(pinnedApps.slice(index + 2));
}
}
@@ -8,8 +8,12 @@ import Quickshell.Wayland
Singleton {
id: root
function isPinned(appId) {
return Config.options.dock.pinnedApps.indexOf(appId) !== -1;
}
function togglePin(appId) {
if (Config.options.dock.pinnedApps.indexOf(appId) !== -1) {
if (root.isPinned(appId)) {
Config.options.dock.pinnedApps = Config.options.dock.pinnedApps.filter(id => id !== appId)
} else {
Config.options.dock.pinnedApps = Config.options.dock.pinnedApps.concat([appId])