From 59ff382856e6622af7147512af1e618b542eeb57 Mon Sep 17 00:00:00 2001 From: Albert S Date: Sun, 4 Oct 2020 22:16:49 +0200 Subject: [PATCH] Implement basic 'Terminal=' support for .desktop files --- entryprovider.cpp | 4 ++++ entryprovider.h | 1 + settingsprovider.cpp | 5 +++++ settingsprovider.h | 1 + window.cpp | 11 ++++++++++- 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/entryprovider.cpp b/entryprovider.cpp index cd26305..5387d43 100644 --- a/entryprovider.cpp +++ b/entryprovider.cpp @@ -79,6 +79,10 @@ EntryConfig EntryProvider::readFromDesktopFile(const QString &path) { result.hidden = args == "true"; } + if(key == "terminal") + { + result.isTerminalCommand = args == "true"; + } } result.type = EntryType::SYSTEM; return result; diff --git a/entryprovider.h b/entryprovider.h index 40f1339..3251c02 100644 --- a/entryprovider.h +++ b/entryprovider.h @@ -27,6 +27,7 @@ class EntryConfig public: EntryType type = SYSTEM; bool hidden = false; + bool isTerminalCommand = false; QString entryPath; QString key; QString name; diff --git a/settingsprovider.cpp b/settingsprovider.cpp index 535b321..1b7368d 100644 --- a/settingsprovider.cpp +++ b/settingsprovider.cpp @@ -28,3 +28,8 @@ bool SettingsProvider::singleInstanceMode() const { return settings->value("singleInstance", true).toBool(); } + +QString SettingsProvider::getTerminalCommand() const +{ + return settings->value("terminal", "/usr/bin/x-terminal-emulator -e %c").toString(); +} diff --git a/settingsprovider.h b/settingsprovider.h index ceb81f5..48e3ea5 100644 --- a/settingsprovider.h +++ b/settingsprovider.h @@ -15,6 +15,7 @@ class SettingsProvider virtual QStringList systemApplicationsEntriesPaths() const; virtual int getMaxCols() const; virtual bool singleInstanceMode() const; + QString getTerminalCommand() const; }; #endif // SETTINGSPROVIDER_H diff --git a/window.cpp b/window.cpp index a728f53..d06ae95 100644 --- a/window.cpp +++ b/window.cpp @@ -120,7 +120,16 @@ void Window::populateGrid(const QVector &list) void Window::executeConfig(const EntryConfig &config) { - QProcess::startDetached(config.command, config.arguments); + if(config.isTerminalCommand) + { + QString cmd = settingsProvider->getTerminalCommand(); + cmd.replace("%c", config.command); + QProcess::startDetached(cmd); + } + else + { + QProcess::startDetached(config.command, config.arguments); + } this->closeWindow(); }