diff -up plasma-workspace-5.23.90/containmentactions/contextmenu/CMakeLists.txt.konsole-in-contextmenu plasma-workspace-5.23.90/containmentactions/contextmenu/CMakeLists.txt diff -up plasma-workspace-5.23.90/containmentactions/contextmenu/menu.cpp.konsole-in-contextmenu plasma-workspace-5.23.90/containmentactions/contextmenu/menu.cpp --- plasma-workspace-5.23.90/containmentactions/contextmenu/menu.cpp.konsole-in-contextmenu 2022-01-13 07:19:17.000000000 -0600 +++ plasma-workspace-5.23.90/containmentactions/contextmenu/menu.cpp 2022-01-19 16:09:26.778355795 -0600 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ ContextMenu::ContextMenu(QObject *parent, const QVariantList &args) : Plasma::ContainmentActions(parent, args) , m_runCommandAction(nullptr) + , m_runKonsoleAction(nullptr) , m_lockScreenAction(nullptr) , m_logoutAction(nullptr) , m_configureDisplaysAction(nullptr) @@ -68,6 +70,7 @@ void ContextMenu::restore(const KConfigG << QStringLiteral("configure shortcuts") << QStringLiteral("_sep1") << QStringLiteral("_context") + << QStringLiteral("_run_konsole") << QStringLiteral("_run_command") << QStringLiteral("add widgets") << QStringLiteral("_add panel") @@ -102,6 +105,10 @@ void ContextMenu::restore(const KConfigG 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)); @@ -184,6 +191,8 @@ QAction *ContextMenu::action(const QStri 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; @@ -211,6 +220,13 @@ QAction *ContextMenu::action(const QStri 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 -up plasma-workspace-5.23.90/containmentactions/contextmenu/menu.h.konsole-in-contextmenu plasma-workspace-5.23.90/containmentactions/contextmenu/menu.h --- plasma-workspace-5.23.90/containmentactions/contextmenu/menu.h.konsole-in-contextmenu 2022-01-19 16:07:20.060556636 -0600 +++ plasma-workspace-5.23.90/containmentactions/contextmenu/menu.h 2022-01-19 16:08:43.055454606 -0600 @@ -29,11 +29,13 @@ public: public Q_SLOTS: void runCommand(); + void runKonsole(); void startLogout(); void configureDisplays(); private: QAction *m_runCommandAction; + QAction *m_runKonsoleAction; QAction *m_lockScreenAction; QAction *m_logoutAction; QAction *m_configureDisplaysAction;