diff --git a/desktop/sessionui.rc b/desktop/sessionui.rc
--- a/desktop/sessionui.rc
+++ b/desktop/sessionui.rc
@@ -19,6 +19,7 @@
+
diff --git a/src/SessionController.h b/src/SessionController.h
--- a/src/SessionController.h
+++ b/src/SessionController.h
@@ -249,6 +249,7 @@
void monitorActivity(bool monitor);
void monitorSilence(bool monitor);
void renameSession();
+ void saveTabAsImage();
void switchProfile(const Profile::Ptr &profile);
void handleWebShortcutAction();
void configureWebShortcuts();
diff --git a/src/SessionController.cpp b/src/SessionController.cpp
--- a/src/SessionController.cpp
+++ b/src/SessionController.cpp
@@ -678,6 +678,10 @@
action->setIcon(QIcon::fromTheme(QStringLiteral("edit-rename")));
collection->setDefaultShortcut(action, Konsole::ACCEL + Qt::ALT + Qt::Key_S);
+ // Save Tab as Image
+ QAction* saveTabImageAction = collection->addAction(QStringLiteral("save-tab-image"), this, SLOT(saveTabAsImage()));
+ saveTabImageAction->setText(i18n("Save Tab as Image"));
+
// Copy input to ==> all tabs
auto* copyInputToAllTabsAction = collection->add(QStringLiteral("copy-input-to-all-tabs"));
copyInputToAllTabsAction->setText(i18n("&All Tabs in Current Window"));
@@ -885,6 +889,20 @@
}
}
+void SessionController::saveTabAsImage()
+{
+ QFileDialog dialog(nullptr);
+ dialog.setFileMode(QFileDialog::AnyFile);
+ dialog.setAcceptMode(QFileDialog::AcceptSave);
+ dialog.setNameFilter(tr("Images (*.png)"));
+
+ if (dialog.exec()) {
+ QStringList selectedFiles = dialog.selectedFiles();
+ if (selectedFiles.length() > 0)
+ view()->grab().save(selectedFiles[0]);
+ }
+}
+
bool SessionController::confirmClose() const
{
if (_session->isForegroundProcessActive()) {