diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts
index 2b97b6dc5..97aab6cc1 100644
--- a/share/translations/keepassxc_en.ts
+++ b/share/translations/keepassxc_en.ts
@@ -577,6 +577,10 @@
Skip confirmation for main window Auto-Type actions
+
+ Auto-generate password for new entries
+
+
ApplicationSettingsWidgetSecurity
diff --git a/src/core/Config.cpp b/src/core/Config.cpp
index 04b724fb1..0a0815661 100644
--- a/src/core/Config.cpp
+++ b/src/core/Config.cpp
@@ -69,6 +69,7 @@ static const QHash configStrings = {
{Config::OpenURLOnDoubleClick, {QS("OpenURLOnDoubleClick"), Roaming, true}},
{Config::HideWindowOnCopy,{QS("HideWindowOnCopy"), Roaming, false}},
{Config::MinimizeOnCopy,{QS("MinimizeOnCopy"), Roaming, true}},
+ {Config::AutoGeneratePasswordForNewEntries,{QS("AutoGeneratePasswordForNewEntries"), Roaming, false}},
{Config::MinimizeAfterUnlock,{QS("MinimizeAfterUnlock"), Roaming, false}},
{Config::DropToBackgroundOnCopy,{QS("DropToBackgroundOnCopy"), Roaming, false}},
{Config::UseGroupIconOnEntryCreation,{QS("UseGroupIconOnEntryCreation"), Roaming, true}},
diff --git a/src/core/Config.h b/src/core/Config.h
index 9385f9ef1..f08ea72fd 100644
--- a/src/core/Config.h
+++ b/src/core/Config.h
@@ -53,6 +53,7 @@ public:
HideWindowOnCopy,
MinimizeOnCopy,
MinimizeAfterUnlock,
+ AutoGeneratePasswordForNewEntries,
DropToBackgroundOnCopy,
UseGroupIconOnEntryCreation,
AutoTypeEntryTitleMatch,
diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp
index c7bea73f3..cb2ee3af1 100644
--- a/src/gui/ApplicationSettingsWidget.cpp
+++ b/src/gui/ApplicationSettingsWidget.cpp
@@ -226,6 +226,8 @@ void ApplicationSettingsWidget::loadSettings()
!config()->get(Config::Security_NoConfirmMoveEntryToRecycleBin).toBool());
m_generalUi->EnableCopyOnDoubleClickCheckBox->setChecked(
config()->get(Config::Security_EnableCopyOnDoubleClick).toBool());
+ m_generalUi->autoGeneratePasswordForNewEntriesCheckBox->setChecked(
+ config()->get(Config::AutoGeneratePasswordForNewEntries).toBool());
m_generalUi->languageComboBox->clear();
QList> languages = Translator::availableLanguages();
@@ -399,6 +401,8 @@ void ApplicationSettingsWidget::saveSettings()
config()->set(Config::Security_NoConfirmMoveEntryToRecycleBin,
!m_generalUi->ConfirmMoveEntryToRecycleBinCheckBox->isChecked());
config()->set(Config::Security_EnableCopyOnDoubleClick, m_generalUi->EnableCopyOnDoubleClickCheckBox->isChecked());
+ config()->set(Config::AutoGeneratePasswordForNewEntries,
+ m_generalUi->autoGeneratePasswordForNewEntriesCheckBox->isChecked());
auto language = m_generalUi->languageComboBox->currentData().toString();
if (config()->get(Config::GUI_Language) != language) {
diff --git a/src/gui/ApplicationSettingsWidgetGeneral.ui b/src/gui/ApplicationSettingsWidgetGeneral.ui
index 17c75d994..0e297e0ec 100644
--- a/src/gui/ApplicationSettingsWidgetGeneral.ui
+++ b/src/gui/ApplicationSettingsWidgetGeneral.ui
@@ -59,7 +59,7 @@
0
0
568
- 1202
+ 1226
@@ -539,6 +539,13 @@
+ -
+
+
+ Auto-generate password for new entries
+
+
+
-
diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp
index 05a52c3ff..4c98b099b 100644
--- a/src/gui/entry/EditEntryWidget.cpp
+++ b/src/gui/entry/EditEntryWidget.cpp
@@ -38,6 +38,7 @@
#include "core/EntryAttributes.h"
#include "core/Group.h"
#include "core/Metadata.h"
+#include "core/PasswordGenerator.h"
#include "core/TimeDelta.h"
#ifdef WITH_XC_SSHAGENT
#include "sshagent/OpenSSHKey.h"
@@ -948,6 +949,12 @@ void EditEntryWidget::loadEntry(Entry* entry,
// Force the user to Save/Discard new entries
showApplyButton(!m_create);
+ // Set an initial password for new entries if the option is enabled
+ if (create && config()->get(Config::AutoGeneratePasswordForNewEntries).toBool()) {
+ PasswordGenerator generator;
+ m_mainUi->passwordEdit->setText(generator.generatePassword());
+ }
+
setModified(false);
}