feat(launcher): add configurable terminal command

The terminal command for launching applications was previously hardcoded to 'kitty', causing issues for users without it installed.

This change introduces a new setting, 'appLauncher.terminalCommand', allowing users to specify their preferred terminal emulator. The default value is set to 'xterm -e'.

The implementation includes:
- Defining the setting in 'Commons/Settings.qml'.
- Adding a text input in the launcher settings tab.
- Updating the application plugin to use the new setting.
This commit is contained in:
loner
2025-09-27 12:06:54 +08:00
parent ff1509939a
commit 256f9b4a76
5 changed files with 24 additions and 7 deletions
+9 -5
View File
@@ -2,7 +2,7 @@
"settings": {
"general": {
"title": "General",
"profile": {
"section": {
"label": "Profile",
@@ -307,6 +307,10 @@
"use-app2unit": {
"label": "Use App2Unit to launch applications",
"description": "Uses an alternative launch method to better manage app processes and prevent issues."
},
"terminal-command": {
"label": "Terminal command",
"description": "Command to launch a terminal. E.g., 'kitty -e' or 'gnome-terminal --'."
}
}
},
@@ -1073,7 +1077,7 @@
"enter-width-pixels": "Enter width in pixels",
"enter-command": "Enter command to execute (app or custom script)",
"command-example": "echo \"Hello World\"",
"search-wallpapers": "Type to filter wallpapers...",
"search-launcher": "Search entries... or use > for commands",
"search": "Search...",
@@ -1174,7 +1178,7 @@
"lock-subtitle": "Lock your session",
"end-subtitle": "End your session",
"lock": "Lock",
"suspend": "Suspend",
"suspend": "Suspend",
"reboot": "Reboot",
"logout": "Logout",
"shutdown": "Shutdown"
@@ -1291,7 +1295,7 @@
},
"weather": {
"clear-sky": "Clear sky",
"mainly-clear": "Mainly clear",
"mainly-clear": "Mainly clear",
"partly-cloudy": "Partly cloudy",
"overcast": "Overcast",
"fog": "Fog",
@@ -1301,7 +1305,7 @@
"thunderstorm": "Thunderstorm",
"unknown": "Unknown"
},
"authentication": {
"failed": "Authentication failed",
"error": "Authentication error"
+2 -1
View File
@@ -109,7 +109,8 @@
"backgroundOpacity": 1,
"pinnedExecs": [],
"useApp2Unit": false,
"sortByMostUsed": true
"sortByMostUsed": true,
"terminalCommand": "xterm -e"
},
"dock": {
"autoHide": false,
+1
View File
@@ -225,6 +225,7 @@ Singleton {
property list<string> pinnedExecs: []
property bool useApp2Unit: false
property bool sortByMostUsed: true
property string terminalCommand: "xterm -e"
}
// dock
@@ -142,7 +142,8 @@ Item {
if (app.runInTerminal) {
// If app.execute() fails for terminal apps, we handle it manually.
Logger.log("ApplicationsPlugin", "Executing terminal app manually: " + app.name)
const command = ["kitty", "-e"].concat(app.command)
const terminal = Settings.data.appLauncher.terminalCommand.split(" ")
const command = terminal.concat(app.command)
Quickshell.execDetached(command)
} else if (app.execute) {
// Default execution for GUI apps
+10
View File
@@ -99,6 +99,16 @@ ColumnLayout {
onToggled: checked => Settings.data.appLauncher.useApp2Unit = checked
}
NTextInput {
label: I18n.tr("settings.launcher.settings.terminal-command.label")
description: I18n.tr("settings.launcher.settings.terminal-command.description")
Layout.fillWidth: true
text: Settings.data.appLauncher.terminalCommand
onEditingFinished: {
Settings.data.appLauncher.terminalCommand = text
}
}
NDivider {
Layout.fillWidth: true
Layout.topMargin: Style.marginXL * scaling