diff --git a/share/keepassxc.ini b/share/keepassxc.ini
index b91fefb4..69f921f4 100644
--- a/share/keepassxc.ini
+++ b/share/keepassxc.ini
@@ -6,6 +6,7 @@ AutoSaveAfterEveryChange=false
AutoSaveOnExit=false
AutoReloadOnChange=true
MinimizeOnCopy=false
+MinimizeOnOpenUrl=false
UseGroupIconOnEntryCreation=true
IgnoreGroupExpansion=false
AutoTypeEntryTitleMatch=true
diff --git a/src/core/Config.cpp b/src/core/Config.cpp
index 86ed04e3..c9009236 100644
--- a/src/core/Config.cpp
+++ b/src/core/Config.cpp
@@ -178,6 +178,7 @@ void Config::init(const QString& fileName)
m_defaults.insert("UseAtomicSaves", true);
m_defaults.insert("SearchLimitGroup", false);
m_defaults.insert("MinimizeOnCopy", false);
+ m_defaults.insert("MinimizeOnOpenUrl", false);
m_defaults.insert("UseGroupIconOnEntryCreation", false);
m_defaults.insert("AutoTypeEntryTitleMatch", true);
m_defaults.insert("AutoTypeEntryURLMatch", true);
diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp
index fce35223..30b0dd53 100644
--- a/src/gui/ApplicationSettingsWidget.cpp
+++ b/src/gui/ApplicationSettingsWidget.cpp
@@ -148,6 +148,7 @@ void ApplicationSettingsWidget::loadSettings()
m_generalUi->useAtomicSavesCheckBox->setChecked(config()->get("UseAtomicSaves").toBool());
m_generalUi->autoReloadOnChangeCheckBox->setChecked(config()->get("AutoReloadOnChange").toBool());
m_generalUi->minimizeOnCopyCheckBox->setChecked(config()->get("MinimizeOnCopy").toBool());
+ m_generalUi->minimizeOnOpenUrlCheckBox->setChecked(config()->get("MinimizeOnOpenUrl").toBool());
m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation").toBool());
m_generalUi->autoTypeEntryTitleMatchCheckBox->setChecked(config()->get("AutoTypeEntryTitleMatch").toBool());
m_generalUi->autoTypeEntryURLMatchCheckBox->setChecked(config()->get("AutoTypeEntryURLMatch").toBool());
@@ -247,6 +248,7 @@ void ApplicationSettingsWidget::saveSettings()
config()->set("UseAtomicSaves", m_generalUi->useAtomicSavesCheckBox->isChecked());
config()->set("AutoReloadOnChange", m_generalUi->autoReloadOnChangeCheckBox->isChecked());
config()->set("MinimizeOnCopy", m_generalUi->minimizeOnCopyCheckBox->isChecked());
+ config()->set("MinimizeOnOpenUrl", m_generalUi->minimizeOnOpenUrlCheckBox->isChecked());
config()->set("UseGroupIconOnEntryCreation", m_generalUi->useGroupIconOnEntryCreationCheckBox->isChecked());
config()->set("IgnoreGroupExpansion", m_generalUi->ignoreGroupExpansionCheckBox->isChecked());
config()->set("AutoTypeEntryTitleMatch", m_generalUi->autoTypeEntryTitleMatchCheckBox->isChecked());
diff --git a/src/gui/ApplicationSettingsWidgetGeneral.ui b/src/gui/ApplicationSettingsWidgetGeneral.ui
index 784b8c7c..ccdbee88 100644
--- a/src/gui/ApplicationSettingsWidgetGeneral.ui
+++ b/src/gui/ApplicationSettingsWidgetGeneral.ui
@@ -255,6 +255,13 @@
+ -
+
+
+ Minimize when opening a URL
+
+
+
-
diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp
index d4688caa..d73b2a0f 100644
--- a/src/gui/DatabaseWidget.cpp
+++ b/src/gui/DatabaseWidget.cpp
@@ -656,15 +656,10 @@ void DatabaseWidget::openUrlForEntry(Entry* entry)
QString cmdString = entry->resolveMultiplePlaceholders(entry->url());
if (cmdString.startsWith("cmd://")) {
// check if decision to execute command was stored
- if (entry->attributes()->hasKey(EntryAttributes::RememberCmdExecAttr)) {
- if (entry->attributes()->value(EntryAttributes::RememberCmdExecAttr) == "1") {
- QProcess::startDetached(cmdString.mid(6));
- }
- return;
- }
+ bool launch = (entry->attributes()->value(EntryAttributes::RememberCmdExecAttr) == "1");
// otherwise ask user
- if (cmdString.length() > 6) {
+ if (!launch && cmdString.length() > 6) {
QString cmdTruncated = cmdString.mid(6);
if (cmdTruncated.length() > 400) {
cmdTruncated = cmdTruncated.left(400) + " […]";
@@ -687,18 +682,28 @@ void DatabaseWidget::openUrlForEntry(Entry* entry)
});
int result = msgbox.exec();
- if (result == QMessageBox::Yes) {
- QProcess::startDetached(cmdString.mid(6));
- }
+ launch = (result == QMessageBox::Yes);
if (remember) {
entry->attributes()->set(EntryAttributes::RememberCmdExecAttr, result == QMessageBox::Yes ? "1" : "0");
}
}
+
+ if (launch) {
+ QProcess::startDetached(cmdString.mid(6));
+
+ if (config()->get("MinimizeOnOpenUrl").toBool()) {
+ window()->showMinimized();
+ }
+ }
} else {
QUrl url = QUrl::fromUserInput(entry->resolveMultiplePlaceholders(entry->url()));
if (!url.isEmpty()) {
QDesktopServices::openUrl(url);
+
+ if (config()->get("MinimizeOnOpenUrl").toBool()) {
+ window()->showMinimized();
+ }
}
}
}