137 Commits

Author SHA1 Message Date
Max 86fec5c049 changed minimum number of threads in the QThreadPool from 2 to 3 2026-05-20 09:36:36 -05:00
Sami Vänttinen 7c7ca4575e WIP: Qt6 transition (#11651)
Update KeePassXC to use Qt 6.
2026-05-04 15:16:51 +03:00
Janek Bevendorff 12ef38c192 Also override OPENSSL_ENGINES to prevent DLL injection (#13124) 2026-03-10 00:38:06 +01:00
Jonathan White b7ad8b4761 Security: Prevent loading of openssl.cnf (#13118)
* Security: Prevent loading of openssl.cnf

Prevent loading openssl.cnf from the originating vcpkg folder tree to avoid DLL injections. This patch force sets the OPENSSL_CONF and OPENSSL_MODULES env vars to an invalid directory. This prevents openssl from attempting to load a cnf file which can contain settings to load arbitrary DLL files into KeePassXC memory space.

Thank you to zdi-disclosures for reporting this finding!
2026-03-09 23:42:25 +01:00
outfoxxed c9a64be699 Add --minimized CLI option 2025-02-09 14:37:53 -05:00
Jonathan White b1180b3341 CLI: Restore the original codepage on windows
* Fixes #11465
2024-12-03 14:32:27 -05:00
Jonathan White 6a9ed21079 Prevent long-running threads from deadlocking the program with only 1 CPU
* Fixes #10391
2024-08-12 06:16:38 -04:00
Carlo Teubner 88b76244cf Fix all Qt 5.15 deprecation warnings (#7783)
* Deprecated qSort() -> std::sort()
* Replace QDateTime::toString(Qt::DefaultLocaleShortDate) with Clock::toString()
* Replace QDateTime::toString(Qt::SystemLocaleShortDate) with QLocale::system().toString(..., QLocale::ShortFormat)
* Use QDateTime::startOfDay() instead of QDate(QDateTime) 
  Note: QDateTime::startOfDay() is only available in Qt 5.14, we need to guard it
* Replace QString::SkipEmptyParts with Qt::SkipEmptyParts
  Note: Its designated replacement, Qt::SplitBehavior, was only added in Qt 5.14.
* Don't call deprecated QFlags(nullptr) constructor
* QSet::{toList->values}
* Replace QList::toSet, QSet::fromList with Tools::asSet()
* QHash::insertMulti -> QMultiHash::insert
* QProcess::startDetached: non-deprecated overload
* QProcess::{pid->processId}
* QPainter::{HighQuality->}Antialiasing
* QPalette::{background->window}()
* Use Qt::{Background,Foreground}Role
* endl -> Qt::endl, flush -> Qt::flush
* Make YubiKey::s_interfaceMutex non-recursive
* OpenSSHKeyGenDialog: use non-deprecated QComboBox::sizeAdjustPolicy setting
2024-06-22 07:22:44 -04:00
Carlo Teubner 07f565aa49 Require Qt >= 5.12
Bump the minimum required Qt version up to 5.12, as per
https://github.com/keepassxreboot/keepassxc/issues/10859#issuecomment-2148477826.
Previously, the minimum version was 5.2.0 based on the CMakeLists.txt
check, though it's unclear if such old versions would actually work.

With this, we are able to remove a whole bunch of #ifdef'd code.
2024-06-22 00:01:23 -04:00
Jonathan White 19d4f7334c Correct minor issues in translations 2024-04-28 18:16:10 -04:00
Janek Bevendorff 0acb15de0f Set test locale to C 2024-03-08 10:55:22 -05:00
Jonathan White 8199bf0869 Linux: Fix warning message about --allow-screencapture (#9638)
* Fixes #9420
2023-07-19 16:12:25 -04:00
Jonathan White b612476c56 Windows: Prevent white flicker when showing main window (#9637)
* Fixes #9603
2023-07-19 16:12:11 -04:00
Jonathan White 0a2e716525 Add menu option to allow screenshots
* Fix #7580
* Also refactor the code to move everything into MainWindow
2023-02-18 14:56:51 -08:00
chandi Langecker 03ad6c52c0 Fix unexpected behavior of --lock when keepassxc is not running (#8889)
currently, when keepassxc is not running, the command `keepassxc --lock` opens a new keepass window and blocks until the window is closed.

Especially in locking scripts this is rather unexpected and  Ican't think of a case where someone explicitly starts keepass with --lock and wants this behaviour.

Rather --lock should always ensure, that there are no unlocked instances and exiting afterwards
2023-01-29 10:50:37 -05:00
jNullj afc7dcd83c Add Unicode support for database filenames on Windows (#8782)
Fixes #8751
2022-11-11 11:21:30 +01:00
mckeema dd15db721a Set correct case for database file path on Windows
* Fix #7139 - when opening database files from the command line, ensure the correct case is fed to the program to prevent case changes during saves.
* Cleanup old code (checking for .json extension) from when KeePassXC app could act as a proxy.
2022-09-10 13:35:54 -04:00
hka 692c95b11e Normalize path (slashes to be precise) when opening a database or saving the last used database paths (#7864)
Fixes #7821
2022-04-12 21:05:06 +02:00
Joan Bruguera e6bf8463d9 Fix unlocking multiple databases with pw-stdin when input is a pipe
This works:

```
$ keepassxc test1.kdbx test2.kdbx --pw-stdin
Database password: <manual input 1234>
Database password: <manual input 4321>
```

But this doesn't (only `test1.kdbx` is unlocked):

```
$ printf '%s\n' 1234 4321 | keepassxc test1.kdbx test2.kdbx --pw-stdin
Database password:
Database password:
```

The problem is that `Utils::setDefaultTextStreams()` is called multiple times
when unlocking multiple databases with `--pw-stdin`, which appears to break the
pipe. Simply call it once to avoid the problem.

Fixes: #5012 (as far as I can tell by simulating the script in Linux)
Signed-off-by: Joan Bruguera <joanbrugueram@gmail.com>
2021-09-28 07:05:50 -04:00
peter 6b14b5dc27 Optimize includes across code base 2021-07-13 22:08:33 -04:00
wundrweapon 60adcacaaa Add command line option to lock open databases (#6511)
Closes #6126
2021-05-15 09:48:59 -04:00
Jonathan White ed0ece304d Reorder startup sequence to display debug information early 2021-04-05 22:56:03 -04:00
Toni Spets 46f5596e59 Initialize Application before parser arguments (#6177)
Co-authored-by: Jonathan White <support@dmapps.us>
2021-02-24 23:10:13 -05:00
smlu a5094dd3ea Prevent screen capture on Windows and macOS
* Closes #5859
2021-02-05 15:10:54 -05:00
louib 48d9fb3e79 Remove GUI bootstraping from core/ (#5513) 2020-10-08 22:48:45 -04:00
Jonathan White 9886b1075f Cleanup config initialization, add local config options
* Fix #5313, allow specifying local config path using environment variable and command line flag
* Add command line flag `--localconfig <path>` to specify a file path to use for the local configuration settings.
* Add environment variable support to set config files paths: `KPXC_CONFIG` and `KPXC_CONFIG_LOCAL` to override default locations.
* Reorder startup sequence to load specified config files earlier to allow for theme settings and other early options to be picked up.
* Removed old command line option `--pw`, no longer used.

* Attempt a fix of application not closing when last window is gone. Only set `QApplication::setQuitOnLastWindowClosed(true)` when tray icon is enabled instead of always.
2020-09-26 09:26:10 -04:00
Jonathan White 9042ef7557 Correct scaling on Linux and other minor fixes
* Fixes #5081 - Initialize MessageWidget::m_animate prior to use

* Fixes #5021 - Don't change tray icon type with unfocused mouse wheel

* Fixes #5029 - Only use HighDpiScaleFactorRoundingPolicy::PassThrough on Windows platforms. Prevents significant scaling bugs on Linux. MacOS does not support fractional scaling.
2020-08-01 09:01:12 -04:00
Jonathan White 13c86cbdc5 Fix auto-restart when a space is in the file path 2020-07-06 21:09:59 -04:00
database64128 790b3382a3 Call QGuiApplication::setHighDpiScaleFactorRoundingPolicy to fix #2815 2020-06-28 23:07:22 -04:00
Sven Grewe 3596fabc78 Fix --pw-stdin by initializing text streams (#4912)
Co-authored-by: Sven qoreQyaS Grewe <sven.grewe@akquinet.de>
2020-06-28 16:24:37 -04:00
Jonathan White 4bf6d8d94d Introduce View Menu
* Move user interface settings from the settings widget into the view menu.
* Add auto-restart prompt to make theme changes easy
2020-06-28 16:21:50 -04:00
Jonathan White 2073f2ddc3 Fix theming with Qt 5.15
* Fixes #4765
* Fixes #4766
2020-06-04 10:03:40 -04:00
Janek Bevendorff 4ba8ef30f2 Add option to launch KeePassXC at system startup
Fixes #1218
2020-05-06 10:44:53 +02:00
Jonathan White 1d7ef5d4eb Move theme detection into Application
* Add function to Application to quickly determine if in light or dark theme
* Add kpxcApp symbol
* Explicitly define main function for GUI tests to improve performance and use custom Application.
2020-03-09 18:03:20 -04:00
Janek Bevendorff 557736ea5e Add custom light and dark UI themes 2020-03-05 09:24:11 +01:00
Wolfram Rösler 05ef937e92 Use Qt::AA_UseHighDpiPixmaps on all platforms
... not only on Linux, in order to prevent icons from being fuzzy.

Fixes #475
2020-01-11 19:00:15 +01:00
guihkx 6339d61419 Properly stylize the application name (#3775)
This is just a cosmetic change. On KDE Plasma, the title of the tray icon is set by either the name of the binary, or by calling `setApplicationName()`. So having it properly stylized looks better.
2019-11-08 23:54:56 +01:00
Elvis Angelaccio 1722397040 Show application icon in Plasma Wayland sessions (#3777)
This is required to show the keepassxc icon on Wayland windows in a
Plasma Wayland session.

kwin_wayland fetches application icons from .desktop files and it
expects the desktop filename to be set on the QGuiApplication instance.

Without this, kwin sets a generic Wayland icon as fallback.
2019-11-03 12:00:16 +01:00
Gigadoc2 82cfedfa43 re-enable wayland 2019-10-13 22:00:50 -04:00
Chih-Hsuan Yen 65cec901d5 Skip the Wayland warning if QT_QPA_PLATFORM already set 2019-07-07 14:23:01 -04:00
therealfarfetchd 12f42a555e Fix icon scaling for HiDPI displays (#3332)
* Only apply hidpi icons on Linux
2019-06-30 11:06:58 -04:00
Jonathan White 2ee97ed191 Code formatting 2019-05-19 18:21:34 -04:00
Jack Thomasson 1cbd395d71 multiple database with --pw-stdin (#2916)
* Updated utilities to unlock KDBX with OS password manager on macOS and Linux
* Use a static stream on stdin for --pw-stdin otherwise buffer loss eliminates subsequent passwords
* Update INSTALL requirements
2019-04-25 10:37:13 -04:00
louib a58e3d5ee0 Adding debug info to CLI.
Adding debug info to the CLI and the general option
of the main Qt app. Also took time to:
* use `EXIT_SUCCESS`/`EXIT_FAILURE` constants
for main.cpp (this is what is used in `src/cli`);
* fixed `m_initalized` typo;
* added info on debugging mode being disabled
or not;
* regrouped Qt related stuff in the debug output.
2019-03-24 08:35:33 -04:00
Jonathan White fb5faf0ff5 Ran make format 2019-03-19 18:56:17 -04:00
Jonathan White 5a34f90319 Update translations
* Corrected use of QCoreApplication::translate -> QObject::tr
* Corrected plural usage in EntryAttachmentsWidget.cpp
2019-01-30 20:54:35 -05:00
Jonathan White f446774605 Prevent use of wayland theme on Linux
* Wayland theme is buggy yet enforced by default
on Qt 5.11+ on Gnome desktop environment
* Resolves #2006
2019-01-28 22:39:20 -05:00
Gianluca Recchia 395a88a5ef Prevent post-compilation Qt downgrades (#2576)
* Abort the app if a Qt downgrade is detected

The app will now exit immediately if it was compiled with a Qt version
higher than the one present on the machine.

* Add function for checking the Qt version at runtime

* Re-register global D-Bus menu only if DE is Unity
2019-01-24 22:45:05 -05:00
Gianluca Recchia fc930bae69 Restore correct formatting
Many lines were not conformant with the project's formatting rules.
This patch should fix all formatting and whitespace issues in the code
base.
A clang-format directive was put around the connect() calls containing
SIGNALs and SLOTs whose signatures would be denormalized because of the
formatting rules.
2018-11-28 18:29:15 -05:00
Jonathan White 880c3aeb34 Add search help pop-up
* Support ! modifier (same as '-')
* Create reusable PopupHelpWidget as self-contained popup that can
be positioned around a parent widget and will follow the movement
and sizing of the window
* Eliminated KEEPASSXC_MAIN_WINDOW macro and replaced with
getMainWindow() function
* Add tests to cover search help show/hide
2018-11-17 09:04:15 -05:00