diff -Nurr plasma-workspace-5.24.90-new/containmentactions/contextmenu/menu.cpp plasma-workspace-5.24.90/containmentactions/contextmenu/menu.cpp --- plasma-workspace-5.24.90-new/containmentactions/contextmenu/menu.cpp 2022-05-21 16:42:05.980661922 +0200 +++ plasma-workspace-5.24.90/containmentactions/contextmenu/menu.cpp 2022-05-21 16:47:43.503606798 +0200 @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ ContextMenu::ContextMenu(QObject *parent, const QVariantList &args) : Plasma::ContainmentActions(parent, args) + , m_runKonsoleAction(nullptr) , m_session(new SessionManagement(this)) { } @@ -61,6 +63,7 @@ << QStringLiteral("configure shortcuts") << QStringLiteral("_sep1") << QStringLiteral("_context") + << QStringLiteral("_run_konsole") << QStringLiteral("_run_command") << QStringLiteral("add widgets") << QStringLiteral("_add panel") @@ -97,6 +100,10 @@ m_runCommandAction->setShortcut(KGlobalAccel::self()->globalShortcut(QStringLiteral("krunner.desktop"), QStringLiteral("_launch")).value(0)); connect(m_runCommandAction, &QAction::triggered, this, &ContextMenu::runCommand); + m_runKonsoleAction = new QAction(i18n("Konsole"), this); + m_runKonsoleAction->setIcon(QIcon::fromTheme("utilities-terminal")); + connect(m_runKonsoleAction, &QAction::triggered, this, &ContextMenu::runKonsole); + m_lockScreenAction = new QAction(i18nc("plasma_containmentactions_contextmenu", "Lock Screen"), this); m_lockScreenAction->setIcon(QIcon::fromTheme(QStringLiteral("system-lock-screen"))); m_lockScreenAction->setShortcut(KGlobalAccel::self()->globalShortcut(QStringLiteral("ksmserver"), QStringLiteral("Lock Session")).value(0)); @@ -179,6 +186,8 @@ if (KAuthorized::authorizeAction(QStringLiteral("run_command")) && KAuthorized::authorize(QStringLiteral("run_command"))) { return m_runCommandAction; } + } else if (name == QLatin1String("_run_konsole")) { + return m_runKonsoleAction; } else if (name == QLatin1String("_lock_screen")) { if (KAuthorized::authorizeAction(QStringLiteral("lock_screen"))) { return m_lockScreenAction; @@ -212,6 +221,13 @@ return nullptr; } +void ContextMenu::runKonsole() +{ + auto job = new KTerminalLauncherJob(QString()); + job->setWorkingDirectory(QDir::homePath()); + job->start(); +} + void ContextMenu::runCommand() { if (!KAuthorized::authorizeAction(QStringLiteral("run_command"))) { diff -Nurr plasma-workspace-5.24.90-new/containmentactions/contextmenu/menu.h plasma-workspace-5.24.90/containmentactions/contextmenu/menu.h --- plasma-workspace-5.24.90-new/containmentactions/contextmenu/menu.h 2022-05-21 16:42:05.980661922 +0200 +++ plasma-workspace-5.24.90/containmentactions/contextmenu/menu.h 2022-05-21 16:48:39.122597718 +0200 @@ -29,11 +29,13 @@ public Q_SLOTS: void runCommand(); + void runKonsole(); void startLogout(); void configureDisplays(); private: QAction *m_runCommandAction = nullptr; + QAction *m_runKonsoleAction = nullptr; QAction *m_lockScreenAction = nullptr; QAction *m_logoutAction = nullptr; QAction *m_configureDisplaysAction = nullptr;