diff -up plasma-workspace-5.6.1/containmentactions/contextmenu/menu.cpp.konsole-in-contextmenu plasma-workspace-5.6.1/containmentactions/contextmenu/menu.cpp --- plasma-workspace-5.6.1/containmentactions/contextmenu/menu.cpp.konsole-in-contextmenu 2016-03-29 09:22:11.000000000 -0500 +++ plasma-workspace-5.6.1/containmentactions/contextmenu/menu.cpp 2016-04-08 16:43:57.737164018 -0500 @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,7 @@ ContextMenu::ContextMenu(QObject *parent, const QVariantList &args) : Plasma::ContainmentActions(parent, args), + m_runKonsoleAction(0), m_runCommandAction(0), m_lockScreenAction(0), m_logoutAction(0), @@ -74,7 +76,7 @@ void ContextMenu::restore(const KConfigG m_actionOrder << QStringLiteral("add widgets") << QStringLiteral("_add panel") << QStringLiteral("lock widgets") << QStringLiteral("_context") << QStringLiteral("configure") << QStringLiteral("remove"); } else { actions.insert(QStringLiteral("configure shortcuts"), false); - m_actionOrder << QStringLiteral("_context") << QStringLiteral("_run_command") << QStringLiteral("add widgets") << QStringLiteral("_add panel") + m_actionOrder << QStringLiteral("_context") << QStringLiteral("_run_konsole") << QStringLiteral("_run_command") << QStringLiteral("add widgets") << QStringLiteral("_add panel") << QStringLiteral("manage activities") << QStringLiteral("remove") << QStringLiteral("lock widgets") << QStringLiteral("_sep1") <setIcon(QIcon::fromTheme("utilities-terminal")); + connect(m_runKonsoleAction, &QAction::triggered, this, &ContextMenu::runKonsole); + m_runCommandAction = new QAction(i18nc("plasma_containmentactions_contextmenu", "Run Command..."), this); m_runCommandAction->setIcon(QIcon::fromTheme(QStringLiteral("system-run"))); setGlobalActionShortcut(m_runCommandAction, QStringLiteral("krunner"), QStringLiteral("run command")); @@ -158,6 +164,8 @@ QAction *ContextMenu::action(const QStri if (c->corona() && c->corona()->immutability() == Plasma::Types::Mutable) { return c->corona()->actions()->action(QStringLiteral("add panel")); } + } else if (name == QLatin1String("_run_konsole")) { + return m_runKonsoleAction; } else if (name == QLatin1String("_run_command")) { if (KAuthorized::authorizeKAction(QStringLiteral("run_command"))) { return m_runCommandAction; @@ -185,6 +193,11 @@ QAction *ContextMenu::action(const QStri return 0; } +void ContextMenu::runKonsole() +{ + KToolInvocation::invokeTerminal(QString(), QDir::homePath()); +} + void ContextMenu::runCommand() { if (!KAuthorized::authorizeKAction(QStringLiteral("run_command"))) { diff -up plasma-workspace-5.6.1/containmentactions/contextmenu/menu.h.konsole-in-contextmenu plasma-workspace-5.6.1/containmentactions/contextmenu/menu.h --- plasma-workspace-5.6.1/containmentactions/contextmenu/menu.h.konsole-in-contextmenu 2016-03-29 09:22:11.000000000 -0500 +++ plasma-workspace-5.6.1/containmentactions/contextmenu/menu.h 2016-04-08 16:44:43.030386670 -0500 @@ -40,6 +40,7 @@ public: void save(KConfigGroup &config) override; public Q_SLOTS: + void runKonsole(); void runCommand(); void lockScreen(); void startLogout(); @@ -47,6 +48,7 @@ public Q_SLOTS: private: void setGlobalActionShortcut(QAction * action, const QString & component, const QString & actionId); + QAction *m_runKonsoleAction; QAction *m_runCommandAction; QAction *m_lockScreenAction; QAction *m_logoutAction;