diff --git a/quickshell/Modals/DankLauncherV2/LauncherContent.qml b/quickshell/Modals/DankLauncherV2/LauncherContent.qml index 6b596d41..106a8484 100644 --- a/quickshell/Modals/DankLauncherV2/LauncherContent.qml +++ b/quickshell/Modals/DankLauncherV2/LauncherContent.qml @@ -41,6 +41,7 @@ FocusScope { editCommentField.text = existing?.comment || ""; editEnvVarsField.text = existing?.envVars || ""; editExtraFlagsField.text = existing?.extraFlags || ""; + editDgpuToggle.checked = existing?.launchOnDgpu || false; editMode = true; Qt.callLater(() => editNameField.forceActiveFocus()); } @@ -64,6 +65,8 @@ FocusScope { override.envVars = editEnvVarsField.text.trim(); if (editExtraFlagsField.text.trim()) override.extraFlags = editExtraFlagsField.text.trim(); + if (editDgpuToggle.checked) + override.launchOnDgpu = true; SessionData.setAppOverride(editAppId, override); closeEditMode(); } @@ -232,7 +235,7 @@ FocusScope { return; case Qt.Key_Backtab: if (hasCtrl && actionPanel.expanded) { - const reverse = true + const reverse = true; actionPanel.expanded ? actionPanel.cycleAction(reverse) : actionPanel.show(); return; } @@ -578,7 +581,6 @@ FocusScope { } } } - } Item { @@ -971,6 +973,15 @@ FocusScope { keyNavigationBacktab: editEnvVarsField } } + + DankToggle { + id: editDgpuToggle + width: parent.width + text: I18n.tr("Launch on dGPU by default") + visible: SessionService.nvidiaCommand.length > 0 + checked: false + onToggled: checked => editDgpuToggle.checked = checked + } } } diff --git a/quickshell/Services/SessionService.qml b/quickshell/Services/SessionService.qml index 50adaf88..7f5a1ede 100644 --- a/quickshell/Services/SessionService.qml +++ b/quickshell/Services/SessionService.qml @@ -211,12 +211,14 @@ Singleton { function launchDesktopEntry(desktopEntry, useNvidia) { let cmd = desktopEntry.command; - if (useNvidia && nvidiaCommand) - cmd = [nvidiaCommand].concat(cmd); const appId = desktopEntry.id || desktopEntry.execString || desktopEntry.exec || ""; const override = SessionData.getAppOverride(appId); + const dgpu = useNvidia || (override?.launchOnDgpu && nvidiaCommand); + if (dgpu && nvidiaCommand) + cmd = [nvidiaCommand].concat(cmd); + if (override?.extraFlags) { const extraArgs = override.extraFlags.trim().split(/\s+/).filter(arg => arg.length > 0); cmd = cmd.concat(extraArgs); @@ -265,7 +267,11 @@ Singleton { function launchDesktopAction(desktopEntry, action, useNvidia) { let cmd = action.command; - if (useNvidia && nvidiaCommand) + + const appId = desktopEntry.id || desktopEntry.execString || desktopEntry.exec || ""; + const override = SessionData.getAppOverride(appId); + const dgpu = useNvidia || (override?.launchOnDgpu && nvidiaCommand); + if (dgpu && nvidiaCommand) cmd = [nvidiaCommand].concat(cmd); const userPrefix = SettingsData.launchPrefix?.trim() || "";