Compare commits
605 Commits
2.4.0-beta
...
2.6.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07659547ce | ||
|
|
cf95f5e72e | ||
|
|
13c86cbdc5 | ||
|
|
44f2d3a3c2 | ||
|
|
9bf0d7680e | ||
|
|
d4ff927181 | ||
|
|
138378626f | ||
|
|
9b63e6a289 | ||
|
|
8ebd1ab4f4 | ||
|
|
9dde9314e8 | ||
|
|
124739fde2 | ||
|
|
3b459813ed | ||
|
|
60bb593228 | ||
|
|
ef7a4288ae | ||
|
|
790b3382a3 | ||
|
|
05a0df799e | ||
|
|
9c0fa376a1 | ||
|
|
247882eb54 | ||
|
|
3596fabc78 | ||
|
|
fd65a47d51 | ||
|
|
4bf6d8d94d | ||
|
|
1dd758c66a | ||
|
|
58e8d819c9 | ||
|
|
736df7696f | ||
|
|
c46f3d37b1 | ||
|
|
1becb6137a | ||
|
|
5f9bed6a52 | ||
|
|
ac3014378f | ||
|
|
c68f4872fa | ||
|
|
cbf7759e7c | ||
|
|
639a7f91a4 | ||
|
|
e5b0219e3f | ||
|
|
fbebf30b98 | ||
|
|
1ad0184473 | ||
|
|
6c9125402a | ||
|
|
712b8224c6 | ||
|
|
e039006667 | ||
|
|
f129768f07 | ||
|
|
b7104be689 | ||
|
|
9d10792640 | ||
|
|
2073f2ddc3 | ||
|
|
6f5e13815c | ||
|
|
c830f85c09 | ||
|
|
e36cba703e | ||
|
|
a91358e7bf | ||
|
|
2d945bc215 | ||
|
|
3095e29507 | ||
|
|
4f75432fc6 | ||
|
|
9d2e066aca | ||
|
|
5c69875b59 | ||
|
|
4de99cfe8e | ||
|
|
b5554e05d8 | ||
|
|
90d5372813 | ||
|
|
229a756d84 | ||
|
|
a1f599c7c4 | ||
|
|
b849fdead5 | ||
|
|
463bb0b03f | ||
|
|
44779bc862 | ||
|
|
af6493b07b | ||
|
|
b17b9683e1 | ||
|
|
1fbddf4149 | ||
|
|
443614a375 | ||
|
|
a83345d136 | ||
|
|
98566fec83 | ||
|
|
eb198271ac | ||
|
|
43c82ccb09 | ||
|
|
d863496f62 | ||
|
|
bcb64a231f | ||
|
|
a1b4a3f8b7 | ||
|
|
9e17d52e8e | ||
|
|
92a7fe33bd | ||
|
|
09f5a74a15 | ||
|
|
3dc8b7a5d0 | ||
|
|
e367c6df95 | ||
|
|
48bf4fb85d | ||
|
|
45848c3f61 | ||
|
|
2237cf0188 | ||
|
|
689a85a071 | ||
|
|
287e822e02 | ||
|
|
d5de042529 | ||
|
|
49487f9d4a | ||
|
|
5142981018 | ||
|
|
a145bf9119 | ||
|
|
3b4057a78c | ||
|
|
f1080d633e | ||
|
|
485852c9db | ||
|
|
612f8d2e5b | ||
|
|
560209550c | ||
|
|
dcff507e02 | ||
|
|
ce7b34e96b | ||
|
|
3c19fdd193 | ||
|
|
ce8f32e797 | ||
|
|
adc743503a | ||
|
|
c416c036ea | ||
|
|
ad1b333601 | ||
|
|
071cc856da | ||
|
|
4ba8ef30f2 | ||
|
|
26ea274259 | ||
|
|
ab6222a5f8 | ||
|
|
1b18c5d51d | ||
|
|
d9214db404 | ||
|
|
596d2cf425 | ||
|
|
5add01243d | ||
|
|
5f9b640da1 | ||
|
|
3dcac2c46c | ||
|
|
34483a1287 | ||
|
|
2f12294639 | ||
|
|
7168bcdbe5 | ||
|
|
243f68e0e8 | ||
|
|
fbd78037ff | ||
|
|
8d2f7832ed | ||
|
|
1a3dc2145d | ||
|
|
7f98323962 | ||
|
|
f7a3cee25a | ||
|
|
5795051477 | ||
|
|
730367557f | ||
|
|
7ef1ee916b | ||
|
|
0a2dd28cd8 | ||
|
|
d189f9132e | ||
|
|
dcca5aa0f0 | ||
|
|
db2cfd424b | ||
|
|
770b09cc23 | ||
|
|
a362c08613 | ||
|
|
e54f24e303 | ||
|
|
3552ba2a30 | ||
|
|
e9754efbbe | ||
|
|
6128e5d582 | ||
|
|
ef668f552e | ||
|
|
d41a37c9bc | ||
|
|
2022a5e65c | ||
|
|
7b25fe9cc6 | ||
|
|
ab9856ee88 | ||
|
|
f0709d187d | ||
|
|
e316a09a79 | ||
|
|
0a61aa0d46 | ||
|
|
83ed9a8d4e | ||
|
|
464e49d329 | ||
|
|
8e4b0fdfe8 | ||
|
|
5927b6298d | ||
|
|
e6c2c7ed93 | ||
|
|
b045160e4f | ||
|
|
4ff781fa48 | ||
|
|
b2c2f42f30 | ||
|
|
dce9af219f | ||
|
|
2359742de1 | ||
|
|
8ae718b747 | ||
|
|
fb5173cebd | ||
|
|
fe1189ea79 | ||
|
|
1d7ef5d4eb | ||
|
|
a8c02fdc3c | ||
|
|
91c6e436b3 | ||
|
|
7ac292e09b | ||
|
|
6bce5836f9 | ||
|
|
e6186b07e1 | ||
|
|
a6c3c118a7 | ||
|
|
ca471e9986 | ||
|
|
50e52df04b | ||
|
|
e26063a872 | ||
|
|
557736ea5e | ||
|
|
6d2ca74878 | ||
|
|
b9daed2055 | ||
|
|
eb88b8cc0c | ||
|
|
b188385184 | ||
|
|
409190c85a | ||
|
|
40ad211f3e | ||
|
|
cb6b0dde27 | ||
|
|
e85854aa24 | ||
|
|
9f3516a4da | ||
|
|
c306fb55ae | ||
|
|
8dbd5b11eb | ||
|
|
8dba308d54 | ||
|
|
f227a2d529 | ||
|
|
f62e0534a2 | ||
|
|
c663b5d5fc | ||
|
|
c427000184 | ||
|
|
a81c6469a8 | ||
|
|
71a39c37ec | ||
|
|
06e0f38523 | ||
|
|
792c1c94f7 | ||
|
|
0383aa104c | ||
|
|
7d8072bf8f | ||
|
|
97b034dbcb | ||
|
|
94b45ea16f | ||
|
|
d2a19f3e86 | ||
|
|
4968d95cab | ||
|
|
f170022fa3 | ||
|
|
0b6d9cb472 | ||
|
|
a41c26e9cd | ||
|
|
4dee16c9fa | ||
|
|
6fc7be78ea | ||
|
|
47ce81c9a6 | ||
|
|
b0ad4a50d9 | ||
|
|
91755fa83a | ||
|
|
0c252b6ed4 | ||
|
|
06e5f19fab | ||
|
|
4939179b9f | ||
|
|
e24a858f39 | ||
|
|
c97ee5395b | ||
|
|
b78ca924fd | ||
|
|
04be724614 | ||
|
|
c8ab3b5f4f | ||
|
|
8bac8a7163 | ||
|
|
332c133893 | ||
|
|
6ff3e8801d | ||
|
|
796b5ceacb | ||
|
|
b6ff613189 | ||
|
|
b34a8f9d94 | ||
|
|
bf8e2e5959 | ||
|
|
b2fd7f6d54 | ||
|
|
f8c962bd25 | ||
|
|
27dbc152f3 | ||
|
|
606661b271 | ||
|
|
dc37537797 | ||
|
|
08a911466e | ||
|
|
d2e76058cd | ||
|
|
6f9907a3cb | ||
|
|
0d3eb047c7 | ||
|
|
6cde2b83e8 | ||
|
|
9da07f2f66 | ||
|
|
460732097c | ||
|
|
84e3925e7b | ||
|
|
05ef937e92 | ||
|
|
2ca8dbebea | ||
|
|
36f92b7649 | ||
|
|
470838f21c | ||
|
|
247ebf5a35 | ||
|
|
cba8947ee8 | ||
|
|
39a7ce58b9 | ||
|
|
3fdafc6d25 | ||
|
|
04d6d675a5 | ||
|
|
edea88b535 | ||
|
|
ae471bea14 | ||
|
|
8ded3bdba2 | ||
|
|
62cda9dd40 | ||
|
|
062654ebdd | ||
|
|
d406b57311 | ||
|
|
7ad330eccb | ||
|
|
7250fd9313 | ||
|
|
181ad76ec9 | ||
|
|
9ab531473a | ||
|
|
87af012a97 | ||
|
|
db032831e0 | ||
|
|
2a51f2cba5 | ||
|
|
adb29dd0e4 | ||
|
|
af14929af1 | ||
|
|
3ffeab4c41 | ||
|
|
8459a216a5 | ||
|
|
2fab4d576a | ||
|
|
90cdfc4a6d | ||
|
|
12efb281f8 | ||
|
|
98ff9f1e77 | ||
|
|
1ae7e72aa8 | ||
|
|
a518f4306d | ||
|
|
0654ffc117 | ||
|
|
c0796d8fb1 | ||
|
|
7f262a1210 | ||
|
|
26afdb39d3 | ||
|
|
794cc1eeab | ||
|
|
c70ebe6dce | ||
|
|
c0f29cc790 | ||
|
|
663393d994 | ||
|
|
ed0b76813d | ||
|
|
8e76c30dd1 | ||
|
|
f9cb2bd5df | ||
|
|
7b95867378 | ||
|
|
6dd9702b79 | ||
|
|
0423bbe168 | ||
|
|
9363123047 | ||
|
|
c0b1c9e106 | ||
|
|
cb28329f14 | ||
|
|
6c65b486e4 | ||
|
|
dc6c9186c9 | ||
|
|
ed60a3dcce | ||
|
|
5c54dfe581 | ||
|
|
697f265249 | ||
|
|
024e00cc97 | ||
|
|
dc42d5dda6 | ||
|
|
56a5a129c6 | ||
|
|
a66f8ec04d | ||
|
|
e2c95f75f1 | ||
|
|
a590289900 | ||
|
|
39af47fbf9 | ||
|
|
d007ee97e3 | ||
|
|
0fd883686c | ||
|
|
db63a40461 | ||
|
|
90cf5c08ad | ||
|
|
0454f4ea4c | ||
|
|
d37e71b793 | ||
|
|
3d0964bce9 | ||
|
|
4437e6a609 | ||
|
|
7659bbb711 | ||
|
|
a07bae2530 | ||
|
|
29ca08f9ff | ||
|
|
d3978980d2 | ||
|
|
7ba9fcc0e5 | ||
|
|
440331d319 | ||
|
|
035823e414 | ||
|
|
5996ba51c9 | ||
|
|
22af66e3b5 | ||
|
|
87ca7c7f7b | ||
|
|
f9d2696046 | ||
|
|
4edb623745 | ||
|
|
cb9929712c | ||
|
|
837df4f4cb | ||
|
|
6339d61419 | ||
|
|
f9097c84e9 | ||
|
|
b96c1e92a3 | ||
|
|
329701a34e | ||
|
|
5d2766e016 | ||
|
|
eed935c923 | ||
|
|
74381dc115 | ||
|
|
1722397040 | ||
|
|
38a663163d | ||
|
|
f4d6b4d13a | ||
|
|
98badfb4a2 | ||
|
|
09d7b5db31 | ||
|
|
ac7face247 | ||
|
|
eb75985aa6 | ||
|
|
36e14157be | ||
|
|
178bea6bbc | ||
|
|
9b5a46f4b0 | ||
|
|
1ab8a9f42c | ||
|
|
b3d834acb0 | ||
|
|
0a273ba1e2 | ||
|
|
74202a86b2 | ||
|
|
744354c550 | ||
|
|
57a7720274 | ||
|
|
8c300b4fcb | ||
|
|
6a25c8dc84 | ||
|
|
ebc006c4b9 | ||
|
|
8c8c181f73 | ||
|
|
7c6c027d33 | ||
|
|
99aafe657d | ||
|
|
c2b16c663f | ||
|
|
957ba90073 | ||
|
|
34bbf8b3a1 | ||
|
|
af263fd80d | ||
|
|
b8830dfd32 | ||
|
|
a8c10cda91 | ||
|
|
62027d35ea | ||
|
|
bee861ff8f | ||
|
|
d0a7d44ec3 | ||
|
|
86a5553c3a | ||
|
|
2d44c7e462 | ||
|
|
4cc06f94c0 | ||
|
|
936bda8f71 | ||
|
|
56a3e4d680 | ||
|
|
1e694271a3 | ||
|
|
744b4abce8 | ||
|
|
6b746913e4 | ||
|
|
a876b3b72f | ||
|
|
a1e12c1b30 | ||
|
|
99a2d66086 | ||
|
|
71085838db | ||
|
|
f726d7501f | ||
|
|
e50261a99c | ||
|
|
dbe15d32e5 | ||
|
|
82cfedfa43 | ||
|
|
8afb1f17b4 | ||
|
|
ca0c4f5a3d | ||
|
|
a93b22f89a | ||
|
|
e5295b4eb0 | ||
|
|
7d0f89ef46 | ||
|
|
058b4da954 | ||
|
|
1ceacdf636 | ||
|
|
37c04f3e42 | ||
|
|
0ee4608d96 | ||
|
|
8bcec87d3a | ||
|
|
bef1b94d71 | ||
|
|
23eb13ced6 | ||
|
|
cf057b1146 | ||
|
|
b1eda37cca | ||
|
|
a07ea12ac4 | ||
|
|
19f87ca057 | ||
|
|
964478e78f | ||
|
|
77fcde875e | ||
|
|
547c246e88 | ||
|
|
344198bc2a | ||
|
|
c19703c39f | ||
|
|
c99b656279 | ||
|
|
490ef29d82 | ||
|
|
9683b7b7a1 | ||
|
|
77be468670 | ||
|
|
72c1783b5b | ||
|
|
0a75b47509 | ||
|
|
41131ae48d | ||
|
|
0a3b19edf2 | ||
|
|
018e9f30be | ||
|
|
eb1882453f | ||
|
|
79bb991a61 | ||
|
|
493b51882b | ||
|
|
fccbb98b8e | ||
|
|
c12fd369d9 | ||
|
|
2aac83d03b | ||
|
|
3b330ee2d1 | ||
|
|
58d357e9ce | ||
|
|
b9e1088f74 | ||
|
|
7cbcea18e9 | ||
|
|
726dbc004d | ||
|
|
6ae27fa47b | ||
|
|
65cec901d5 | ||
|
|
2a8b52a014 | ||
|
|
c669ecb4dd | ||
|
|
e1471cbd19 | ||
|
|
ce1f19cacc | ||
|
|
c27ee6aba8 | ||
|
|
d12f15da92 | ||
|
|
aac76ad407 | ||
|
|
4a3cfab146 | ||
|
|
32e62faf39 | ||
|
|
12f42a555e | ||
|
|
f66e9191a9 | ||
|
|
11dabfa1b7 | ||
|
|
12cefdb7d5 | ||
|
|
8e248bbde6 | ||
|
|
d49e74c1f4 | ||
|
|
a0d1304bfc | ||
|
|
0e0cba653f | ||
|
|
bb2d7bca5a | ||
|
|
41b2a013a7 | ||
|
|
f85642741d | ||
|
|
a22e8a1f40 | ||
|
|
6dcd00b609 | ||
|
|
5492b5c4f6 | ||
|
|
eb9371091a | ||
|
|
ef3c2daef1 | ||
|
|
07da5de880 | ||
|
|
37c53f326c | ||
|
|
c5a93ca215 | ||
|
|
e40f10657d | ||
|
|
7ceca8ff3c | ||
|
|
bb8377ae6a | ||
|
|
84eec03cb7 | ||
|
|
9e06dc0d5c | ||
|
|
9728df2a48 | ||
|
|
05c11d1b7c | ||
|
|
1e915eef89 | ||
|
|
09181fab13 | ||
|
|
0c2d1bcc50 | ||
|
|
04360ed552 | ||
|
|
3cf171cbf5 | ||
|
|
b4dab5d8b1 | ||
|
|
7c45d4f328 | ||
|
|
38524507d5 | ||
|
|
5d6ef0c471 | ||
|
|
9d7990b4a7 | ||
|
|
1398b9f5fc | ||
|
|
ba02bad45b | ||
|
|
72de3cf9ca | ||
|
|
430aec93d3 | ||
|
|
5f42a0b3b9 | ||
|
|
c3a8ca62c9 | ||
|
|
6d449aca49 | ||
|
|
fbf8cb3d6f | ||
|
|
293ef357fc | ||
|
|
b13454eeb4 | ||
|
|
54eafc8ebe | ||
|
|
d5e544ab32 | ||
|
|
16a11c3a7f | ||
|
|
a775031fe9 | ||
|
|
3bc78f9946 | ||
|
|
9a3481e900 | ||
|
|
b90e9ee428 | ||
|
|
c645e2e303 | ||
|
|
a747886323 | ||
|
|
6f443ee9fc | ||
|
|
96b0ea45dd | ||
|
|
91283e7c76 | ||
|
|
63aab99b9c | ||
|
|
3d5879b8ed | ||
|
|
5341a8215c | ||
|
|
6d5c6c7d17 | ||
|
|
7ead8e7290 | ||
|
|
2ee97ed191 | ||
|
|
96438a45b4 | ||
|
|
125a81f2ed | ||
|
|
7ce6f9d3b1 | ||
|
|
ecaa4fd6ce | ||
|
|
baa55d1597 | ||
|
|
63855346bf | ||
|
|
e121f4bc28 | ||
|
|
d93f33f514 | ||
|
|
fed8a56098 | ||
|
|
bc891761b6 | ||
|
|
247b85fe69 | ||
|
|
faf7a2bbb3 | ||
|
|
ebe6649683 | ||
|
|
e4eee897f9 | ||
|
|
01a3d5b0ba | ||
|
|
0f8d2986af | ||
|
|
a2caa31eca | ||
|
|
1cbd395d71 | ||
|
|
d3a53a702e | ||
|
|
13eb1c0bbd | ||
|
|
c7898fdeee | ||
|
|
53796a216e | ||
|
|
219a0f40ff | ||
|
|
bbe7e8a45a | ||
|
|
acd6847cd4 | ||
|
|
cb442f8c6e | ||
|
|
7d46ce3de1 | ||
|
|
5b28610c6a | ||
|
|
42d34a1999 | ||
|
|
12e020b7c2 | ||
|
|
7bd079d48d | ||
|
|
a0c84dbd0d | ||
|
|
ba4d68c76e | ||
|
|
7067a4d004 | ||
|
|
663467e214 | ||
|
|
04983ce4cd | ||
|
|
61b1f8c966 | ||
|
|
7546ba7406 | ||
|
|
8e19843db7 | ||
|
|
c3ae446fd9 | ||
|
|
d5d51d668f | ||
|
|
7bafe65d17 | ||
|
|
5b007ece14 | ||
|
|
0d4318e466 | ||
|
|
b97cc1d398 | ||
|
|
fbba5b1420 | ||
|
|
05bee40f0a | ||
|
|
771ecdba12 | ||
|
|
2eb82c8356 | ||
|
|
e7815787c7 | ||
|
|
cc27a367d6 | ||
|
|
bc5173bac7 | ||
|
|
c195452c54 | ||
|
|
1f28dc6013 | ||
|
|
2ffefc95ae | ||
|
|
53a57ee8c7 | ||
|
|
8bc94874a1 | ||
|
|
29c79c935a | ||
|
|
1493943e2e | ||
|
|
4b1258f585 | ||
|
|
71e375aff0 | ||
|
|
88c8cdd800 | ||
|
|
0201fcd400 | ||
|
|
791b796c23 | ||
|
|
3b0b5d85e9 | ||
|
|
ec82931573 | ||
|
|
835e1b8787 | ||
|
|
e025444c86 | ||
|
|
f49a8a7f70 | ||
|
|
b3ce7ec9c4 | ||
|
|
cb2900f5a9 | ||
|
|
edef225eab | ||
|
|
52d411f423 | ||
|
|
e786291086 | ||
|
|
d6324feafd | ||
|
|
d7660dad37 | ||
|
|
bc3a7522a2 | ||
|
|
38826a851d | ||
|
|
72f0e9ba77 | ||
|
|
28a3824d2d | ||
|
|
3404b4ac58 | ||
|
|
86e5dbda4f | ||
|
|
13a9ac8f57 | ||
|
|
a58e3d5ee0 | ||
|
|
76913a5dd1 | ||
|
|
4a0bb32c2e | ||
|
|
eb9ff677d0 | ||
|
|
bf1e5b8805 | ||
|
|
e909d1b594 | ||
|
|
31bd90a8df | ||
|
|
c51752df39 | ||
|
|
348a7e5111 | ||
|
|
f67b60623e | ||
|
|
10568f4200 | ||
|
|
ce5cf3573a | ||
|
|
fb5faf0ff5 | ||
|
|
306bf0f292 | ||
|
|
fb5746e4f7 | ||
|
|
37b18a532c | ||
|
|
e20d652cca | ||
|
|
14e868d2f7 | ||
|
|
84f5adb24a | ||
|
|
11ecaf4fa4 | ||
|
|
ebb87e6379 | ||
|
|
a2bd08ca8a | ||
|
|
f997e86869 | ||
|
|
0f1be60bda | ||
|
|
f09f00a6b8 | ||
|
|
c369130338 | ||
|
|
9d44a756bb | ||
|
|
010d44eab7 | ||
|
|
ff87207cf4 | ||
|
|
bbf678975f | ||
|
|
d0d1b25e5c | ||
|
|
5cf50d9fae | ||
|
|
e8ec45ef97 | ||
|
|
9bc20f0b42 | ||
|
|
0c587999c6 | ||
|
|
fa459b0d1e | ||
|
|
fa3c959212 | ||
|
|
8cf3ee866e | ||
|
|
504904a414 | ||
|
|
877a0924c1 | ||
|
|
79b8647fd7 | ||
|
|
8e596165ab | ||
|
|
b4de4369eb | ||
|
|
cc932eff30 | ||
|
|
d3a424cc74 | ||
|
|
ca39f6e159 | ||
|
|
c9f91b2de5 | ||
|
|
e60f4278f7 |
16
.github/CONTRIBUTING.md
vendored
@@ -121,18 +121,18 @@ For names made of only one word, the first letter should be lowercase.
|
||||
For names made of multiple concatenated words, the first letter of the whole is lowercase, and the first letter of each subsequent word is capitalized.
|
||||
|
||||
#### Indention
|
||||
For **C++ files** (*.cpp .h*): 4 spaces
|
||||
For **C++ files** (*.cpp .h*): 4 spaces
|
||||
For **Qt-UI files** (*.ui*): 2 spaces
|
||||
|
||||
#### Includes
|
||||
```c
|
||||
```cpp
|
||||
// Class includes
|
||||
#include "MyWidget.h"
|
||||
#include "ui_MyWidget.h"
|
||||
|
||||
// Application includes
|
||||
#include "core/Config.h"
|
||||
#include "core/FilePath.h"
|
||||
#include "core/Resources.h"
|
||||
|
||||
// Global includes
|
||||
#include <QWidget>
|
||||
@@ -140,7 +140,7 @@ For **Qt-UI files** (*.ui*): 2 spaces
|
||||
```
|
||||
|
||||
#### Classes
|
||||
```c
|
||||
```cpp
|
||||
// Note: order is important, stay organized!
|
||||
class MyWidget : public QWidget
|
||||
{
|
||||
@@ -174,13 +174,13 @@ MyWidget::MyWidget(QWidget* parent)
|
||||
```
|
||||
|
||||
#### Pointers / References
|
||||
```c
|
||||
```cpp
|
||||
int* count;
|
||||
const QString& string;
|
||||
```
|
||||
|
||||
#### Braces
|
||||
```c
|
||||
```cpp
|
||||
if (condition) {
|
||||
doSomething();
|
||||
} else {
|
||||
@@ -194,7 +194,7 @@ void ExampleClass::exampleFunction()
|
||||
```
|
||||
|
||||
#### Switch statement
|
||||
```c
|
||||
```cpp
|
||||
// Note: avoid declaring variables in a switch statement
|
||||
switch (a) {
|
||||
case 1:
|
||||
@@ -221,6 +221,6 @@ Example: `<widget class="QCheckBox" name="rememberCheckBox">`
|
||||
|
||||
|
||||
|
||||
[beginner]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner+label%3A%22help+wanted%22+sort%3Acomments-desc
|
||||
[beginner]:https://github.com/keepassxreboot/keepassxc/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22+sort%3Acomments-desc+
|
||||
[help-wanted]:https://github.com/keepassxreboot/keepassx/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22+sort%3Acomments-desc
|
||||
[issues-section]:https://github.com/keepassxreboot/keepassxc/issues
|
||||
|
||||
5
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
github: ["droidmonkey", "phoerious"]
|
||||
patreon: keepassxc
|
||||
open_collective: keepassxc
|
||||
liberapay: keepassxc
|
||||
custom: ["https://keepassxc.org/donate"]
|
||||
40
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@@ -6,44 +6,34 @@ labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[TIP]: # ( Provide a general summary of the issue in the title above ^^ )
|
||||
## Overview
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
[NOTE]: # ( Give a BRIEF summary about your problem )
|
||||
|
||||
|
||||
## Steps to Reproduce
|
||||
[NOTE]: # ( Provide a simple set of steps to reproduce this bug. )
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Expected Behavior
|
||||
[NOTE]: # ( Tell us what you expected to happen )
|
||||
|
||||
|
||||
## Current Behavior
|
||||
## Actual Behavior
|
||||
[NOTE]: # ( Tell us what actually happens )
|
||||
|
||||
|
||||
## Possible Solution
|
||||
[NOTE]: # ( Not required, but suggest a fix/reason for the bug )
|
||||
|
||||
|
||||
## Steps to Reproduce
|
||||
[NOTE]: # ( Provide a link to a live example, or an unambiguous set of steps to )
|
||||
[NOTE]: # ( reproduce this bug. Include code to reproduce, if relevant )
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Context
|
||||
[NOTE]: # ( How has this issue affected you? What unique circumstances do you have? )
|
||||
[NOTE]: # ( Give us any additional information you may have. )
|
||||
|
||||
|
||||
## Debug Info
|
||||
[NOTE]: # ( Paste debug info from Help → About here )
|
||||
KeePassXC - VERSION
|
||||
Revision: REVISION
|
||||
|
||||
Libraries:
|
||||
- LIBS
|
||||
|
||||
Operating system: OS
|
||||
CPU architecture: ARCH
|
||||
Kernel: KERNEL
|
||||
|
||||
Enabled extensions:
|
||||
- EXTENSIONS
|
||||
[NOTE]: # ( Pick choices based on your environment )
|
||||
Operating System: Windows/Linux/macOS
|
||||
Desktop Env: Gnome/KDE/XFCE/Mate/Cinnamon
|
||||
Windowing System: X11/Wayland
|
||||
15
.github/ISSUE_TEMPLATE/feature-request.md
vendored
@@ -1,25 +1,18 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: tell us about a new capability you want to see
|
||||
about: tell us about a new feature you want
|
||||
title:
|
||||
labels: new feature
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
[TIP]: # ( Provide a general summary of the feature in the title above ^^ )
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
|
||||
## Summary
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
[NOTE]: # ( Provide a brief overview of what the new feature is all about )
|
||||
|
||||
|
||||
## Desired Behavior
|
||||
[NOTE]: # ( Tell us how the new feature should work, be specific )
|
||||
|
||||
|
||||
## Possible Solution
|
||||
[NOTE]: # ( Not required, but suggest ideas on how to implement the addition or change )
|
||||
## Examples
|
||||
[NOTE]: # ( Show us a picture or mock-up of your proposal )
|
||||
|
||||
|
||||
## Context
|
||||
|
||||
@@ -1,49 +1,39 @@
|
||||
---
|
||||
name: Release Preview Bug report
|
||||
about: report a bug with a release preview (eg, 2.4.0-beta1)
|
||||
title: "[PRE-RELEASE] "
|
||||
about: report a bug with a release preview (e.g., 2.6.0-beta1)
|
||||
title:
|
||||
labels: PRE-RELEASE BUG
|
||||
assignees: droidmonkey
|
||||
|
||||
---
|
||||
|
||||
[TIP]: # ( Provide a general summary of the issue in the title above ^^ )
|
||||
## Overview
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
[NOTE]: # ( Give a BRIEF summary about your problem )
|
||||
|
||||
|
||||
## Steps to Reproduce
|
||||
[NOTE]: # ( Provide a simple set of steps to reproduce this bug. )
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Expected Behavior
|
||||
[NOTE]: # ( Tell us what you expected to happen )
|
||||
|
||||
|
||||
## Current Behavior
|
||||
## Actual Behavior
|
||||
[NOTE]: # ( Tell us what actually happens )
|
||||
|
||||
|
||||
## Possible Solution
|
||||
[NOTE]: # ( Not required, but suggest a fix/reason for the bug )
|
||||
|
||||
|
||||
## Steps to Reproduce
|
||||
[NOTE]: # ( Provide a link to a live example, or an unambiguous set of steps to )
|
||||
[NOTE]: # ( reproduce this bug. Include code to reproduce, if relevant )
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Context
|
||||
[NOTE]: # ( How has this issue affected you? What unique circumstances do you have? )
|
||||
[NOTE]: # ( Give us any additional information you may have. )
|
||||
|
||||
|
||||
## Debug Info
|
||||
[NOTE]: # ( Paste debug info from Help → About here )
|
||||
KeePassXC - VERSION
|
||||
Revision: REVISION
|
||||
|
||||
Libraries:
|
||||
- LIBS
|
||||
|
||||
Operating system: OS
|
||||
CPU architecture: ARCH
|
||||
Kernel: KERNEL
|
||||
|
||||
Enabled extensions:
|
||||
- EXTENSIONS
|
||||
[NOTE]: # ( Pick choices based on your environment )
|
||||
Operating System: Windows/Linux/macOS
|
||||
Desktop Env: Gnome/KDE/XFCE/Mate/Cinnamon
|
||||
Windowing System: X11/Wayland
|
||||
33
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,17 +1,6 @@
|
||||
[TIP]: # ( Provide a general summary of your changes in the title above ^^ )
|
||||
|
||||
## Type of change
|
||||
[NOTE]: # ( Please remove all lines which don't apply. )
|
||||
- ✅ Bug fix (non-breaking change which fixes an issue)
|
||||
- ✅ Refactor (significant modification to existing code)
|
||||
- ✅ New feature (non-breaking change which adds functionality)
|
||||
- ✅ Breaking change (fix or feature that would cause existing functionality to change)
|
||||
- ✅ Documentation (non-code change)
|
||||
|
||||
## Description and Context
|
||||
[NOTE]: # ( Describe your changes in detail, why is this change required? )
|
||||
[NOTE]: # ( Describe the context of your change. Explain large code modifications. )
|
||||
[NOTE]: # ( If it fixes an open issue, please add "Fixes #XXX" as necessary )
|
||||
[NOTE]: # ( Explain large or complex code modifications. )
|
||||
[NOTE]: # ( If it fixes an open issue, please add "Fixes #XXX" )
|
||||
|
||||
|
||||
## Screenshots
|
||||
@@ -23,14 +12,10 @@
|
||||
[TIP]: # ( We expect new code to be covered by unit tests and documented with doc blocks! )
|
||||
|
||||
|
||||
## Checklist:
|
||||
[NOTE]: # ( Please go over all the following points. )
|
||||
[NOTE]: # ( Again, remove any lines which don't apply. )
|
||||
[NOTE]: # ( Pull Requests that don't fulfill all [REQUIRED] requisites are likely )
|
||||
[NOTE]: # ( to be sent back to you for correction or will be rejected. )
|
||||
- ✅ I have read the **CONTRIBUTING** document. **[REQUIRED]**
|
||||
- ✅ My code follows the code style of this project. **[REQUIRED]**
|
||||
- ✅ All new and existing tests passed. **[REQUIRED]**
|
||||
- ✅ I have compiled and verified my code with `-DWITH_ASAN=ON`. **[REQUIRED]**
|
||||
- ✅ My change requires a change to the documentation, and I have updated it accordingly.
|
||||
- ✅ I have added tests to cover my changes.
|
||||
## Type of change
|
||||
[NOTE]: # ( Please remove all lines which don't apply. )
|
||||
- ✅ Bug fix (non-breaking change that fixes an issue)
|
||||
- ✅ New feature (change that adds functionality)
|
||||
- ✅ Breaking change (causes existing functionality to change)
|
||||
- ✅ Refactor (significant modification to existing code)
|
||||
- ✅ Documentation (non-code change)
|
||||
|
||||
1
.gitignore
vendored
@@ -11,6 +11,7 @@ release*/
|
||||
|
||||
.DS_Store
|
||||
.version
|
||||
desktop.ini
|
||||
\.scannerwork/
|
||||
|
||||
/snap/.snapcraft/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[keepassxc.keepassx_ents]
|
||||
[keepassxc.keepassxc]
|
||||
source_file = share/translations/keepassx_en.ts
|
||||
file_filter = share/translations/keepassx_<lang>.ts
|
||||
source_lang = en
|
||||
|
||||
390
CHANGELOG
@@ -1,390 +0,0 @@
|
||||
2.4.0-preview (TBD)
|
||||
=========================
|
||||
|
||||
This is a pre-release build, view merged PR's at
|
||||
https://github.com/keepassxreboot/keepassxc/pulls?q=is%3Apr+milestone%3Av2.4.0+is%3Aclosed
|
||||
|
||||
2.3.4 (2018-08-21)
|
||||
=========================
|
||||
|
||||
- Show all URL schemes in entry view [#1768]
|
||||
- Disable merge when database is locked [#1975]
|
||||
- Fix intermittent crashes with favorite icon downloads [#1980]
|
||||
- Provide potential crash warning to Qt 5.5.x users [#2211]
|
||||
- Disable apply button when creating new entry/group to prevent data loss [#2204]
|
||||
- Allow for 12 hour timeout to lock idle database [#2173]
|
||||
- Multiple SSH Agent fixes [#1981, #2117]
|
||||
- Multiple Browser Integration enhancements [#1993, #2003, #2055, #2116, #2159, #2174, #2185]
|
||||
- Fix browser proxy application not closing properly [#2142]
|
||||
- Add real names and Patreon supporters to about dialog [#2214]
|
||||
- Add settings button to toolbar, Donate button, and Report a Bug button to help menu [#2214]
|
||||
- Enhancements to release-tool to appsign intermediate build products [#2101]
|
||||
|
||||
|
||||
2.3.3 (2018-05-09)
|
||||
=========================
|
||||
|
||||
- Fix crash when browser integration is enabled [#1923]
|
||||
|
||||
2.3.2 (2018-05-07)
|
||||
=========================
|
||||
|
||||
- Enable high entropy ASLR on Windows [#1747]
|
||||
- Enhance favicon fetching [#1786]
|
||||
- Fix crash on Windows due to autotype [#1691]
|
||||
- Fix dark tray icon changing all icons [#1680]
|
||||
- Fix --pw-stdin not using getPassword function [#1686]
|
||||
- Fix placeholders being resolved in notes [#1907]
|
||||
- Enable auto-type start delay to be configurable [#1908]
|
||||
- Browser: Fix native messaging reply size [#1719]
|
||||
- Browser: Increase maximum buffer size [#1720]
|
||||
- Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906]
|
||||
- SSH Agent: Parse aes-256-cbc/ctr keys [#1682]
|
||||
- SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]
|
||||
|
||||
2.3.1 (2018-03-06)
|
||||
=========================
|
||||
|
||||
- Fix unnecessary automatic upgrade to KDBX 4.0 and prevent challenge-response key being stripped [#1568]
|
||||
- Abort saving and show an error message when challenge-response fails [#1659]
|
||||
- Support inner stream protection on all string attributes [#1646]
|
||||
- Fix favicon downloads not finishing on some websites [#1657]
|
||||
- Fix freeze due to invalid STDIN data [#1628]
|
||||
- Correct issue with encrypted RSA SSH keys [#1587]
|
||||
- Fix crash on macOS due to QTBUG-54832 [#1607]
|
||||
- Show error message if ssh-agent communication fails [#1614]
|
||||
- Fix --pw-stdin and filename parameters being ignored [#1608]
|
||||
- Fix Auto-Type syntax check not allowing spaces and special characters [#1626]
|
||||
- Fix reference placeholders in combination with Auto-Type [#1649]
|
||||
- Fix qtbase translations not being loaded [#1611]
|
||||
- Fix startup crash on Windows due to missing SVG libraries [#1662]
|
||||
- Correct database tab order regression [#1610]
|
||||
- Fix GCC 8 compilation error [#1612]
|
||||
- Fix copying of advanced attributes on KDE [#1640]
|
||||
- Fix member initialization of CategoryListWidgetDelegate [#1613]
|
||||
- Fix inconsistent toolbar icon sizes and provide higher-quality icons [#1616]
|
||||
- Improve preview panel geometry [#1609]
|
||||
|
||||
2.3.0 (2018-02-27)
|
||||
=========================
|
||||
|
||||
- Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494]
|
||||
- Add SSH Agent feature [#1098, #1450, #1463]
|
||||
- Add preview panel with details of the selected entry [#879, #1338]
|
||||
- Add more and configurable columns to entry table and allow copying of values by double click [#1305]
|
||||
- Add KeePassXC-Browser API as a replacement for KeePassHTTP [#608]
|
||||
- Deprecate KeePassHTTP [#1392]
|
||||
- Add support for Steam one-time passwords [#1206]
|
||||
- Add support for multiple Auto-Type sequences for a single entry [#1390]
|
||||
- Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 [#1060]
|
||||
- Replace qHttp with cURL for website icon downloads [#1460]
|
||||
- Remove lock file [#1231]
|
||||
- Add option to create backup file before saving [#1385]
|
||||
- Ask to save a generated password before closing the entry password generator [#1499]
|
||||
- Resolve placeholders recursively [#1078]
|
||||
- Add Auto-Type button to the toolbar [#1056]
|
||||
- Improve window focus handling for Auto-Type dialogs [#1204, #1490]
|
||||
- Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412]
|
||||
- Add optional dark tray icon [#1154]
|
||||
- Add new "Unsafe saving" option to work around saving problems with file sync services [#1385]
|
||||
- Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537]
|
||||
- Add diceware password generator to CLI [#1406]
|
||||
- Add --key-file option to CLI [#816, #824]
|
||||
- Add DBus interface for opening and closing KeePassXC databases [#283]
|
||||
- Add KDBX compression options to database settings [#1419]
|
||||
- Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327]
|
||||
- Correct reference resolution in entry fields [#1486]
|
||||
- Fix window state and recent databases not being remembered on exit [#1453]
|
||||
- Correct history item generation when configuring TOTP for an entry [#1446]
|
||||
- Correct multiple TOTP bugs [#1414]
|
||||
- Automatic saving after every change is now a default [#279]
|
||||
- Allow creation of new entries during search [#1398]
|
||||
- Correct menu issues on macOS [#1335]
|
||||
- Allow compilation on OpenBSD [#1328]
|
||||
- Improve entry attachments view [#1139, #1298]
|
||||
- Fix auto lock for Gnome and Xfce [#910, #1249]
|
||||
- Don't remember key files in file dialogs when the setting is disabled [#1188]
|
||||
- Improve database merging and conflict resolution [#807, #1165]
|
||||
- Fix macOS pasteboard issues [#1202]
|
||||
- Improve startup times on some platforms [#1205]
|
||||
- Hide the notes field by default [#1124]
|
||||
- Toggle main window by clicking tray icon with the middle mouse button [#992]
|
||||
- Fix custom icons not copied over when databases are merged [#1008]
|
||||
- Allow use of DEL key to delete entries [#914]
|
||||
- Correct intermittent crash due to stale history items [#1527]
|
||||
- Sanitize newline characters in title, username and URL fields [#1502]
|
||||
- Reopen previously opened databases in correct order [#774]
|
||||
- Use system's zxcvbn library if available [#701]
|
||||
- Implement various i18n improvements [#690, #875, #1436]
|
||||
|
||||
2.2.4 (2017-12-13)
|
||||
=========================
|
||||
|
||||
- Prevent database corruption when locked [#1219]
|
||||
- Fixes apply button not saving new entries [#1141]
|
||||
- Switch to Consolas font on Windows for password edit [#1229]
|
||||
- Multiple fixes to AppImage deployment [#1115, #1228]
|
||||
- Fixes multiple memory leaks [#1213]
|
||||
- Resize message close to 16x16 pixels [#1253]
|
||||
|
||||
2.2.2 (2017-10-22)
|
||||
=========================
|
||||
|
||||
- Fixed entries with empty URLs being reported to KeePassHTTP clients [#1031]
|
||||
- Fixed YubiKey detection and enabled CLI tool for AppImage binary [#1100]
|
||||
- Added AppStream description [#1082]
|
||||
- Improved TOTP compatibility and added new Base32 implementation [#1069]
|
||||
- Fixed error handling when processing invalid cipher stream [#1099]
|
||||
- Fixed double warning display when opening a database [#1037]
|
||||
- Fixed unlocking databases with --pw-stdin [#1087]
|
||||
- Added ability to override QT_PLUGIN_PATH environment variable for AppImages [#1079]
|
||||
- Fixed transform seed not being regenerated when saving the database [#1068]
|
||||
- Fixed only one YubiKey slot being polled [#1048]
|
||||
- Corrected an issue with entry icons while merging [#1008]
|
||||
- Corrected desktop and tray icons in Snap package [#1030]
|
||||
- Fixed screen lock and Google fallback settings [#1029]
|
||||
|
||||
2.2.1 (2017-10-01)
|
||||
=========================
|
||||
|
||||
- Corrected multiple snap issues [#934, #1011]
|
||||
- Corrected multiple custom icon issues [#708, #719, #994]
|
||||
- Corrected multiple Yubikey issues [#880]
|
||||
- Fixed single instance preventing load on occasion [#997]
|
||||
- Keep entry history when merging databases [#970]
|
||||
- Prevent data loss if passwords were mismatched [#1007]
|
||||
- Fixed crash after merge [#941]
|
||||
- Added configurable auto-type default delay [#703]
|
||||
- Unlock database dialog window comes to front [#663]
|
||||
- Translation and compiling fixes
|
||||
|
||||
2.2.0 (2017-06-23)
|
||||
=========================
|
||||
|
||||
- Added YubiKey 2FA integration for unlocking databases [#127]
|
||||
- Added TOTP support [#519]
|
||||
- Added CSV import tool [#146, #490]
|
||||
- Added KeePassXC CLI tool [#254]
|
||||
- Added diceware password generator [#373]
|
||||
- Added support for entry references [#370, #378]
|
||||
- Added support for Twofish encryption [#167]
|
||||
- Enabled DEP and ASLR for in-memory protection [#371]
|
||||
- Enabled single instance mode [#510]
|
||||
- Enabled portable mode [#645]
|
||||
- Enabled database lock on screensaver and session lock [#545]
|
||||
- Redesigned welcome screen with common features and recent databases [#292]
|
||||
- Multiple updates to search behavior [#168, #213, #374, #471, #603, #654]
|
||||
- Added auto-type fields {CLEARFIELD}, {SPACE}, {{}, {}} [#267, #427, #480]
|
||||
- Fixed auto-type errors on Linux [#550]
|
||||
- Prompt user prior to executing a cmd:// URL [#235]
|
||||
- Entry attributes can be protected (hidden) [#220]
|
||||
- Added extended ascii to password generator [#538]
|
||||
- Added new database icon to toolbar [#289]
|
||||
- Added context menu entry to empty recycle bin in databases [#520]
|
||||
- Added "apply" button to entry and group edit windows [#624]
|
||||
- Added macOS tray icon and enabled minimize on close [#583]
|
||||
- Fixed issues with unclean shutdowns [#170, #580]
|
||||
- Changed keyboard shortcut to create new database to CTRL+SHIFT+N [#515]
|
||||
- Compare window title to entry URLs [#556]
|
||||
- Implemented inline error messages [#162]
|
||||
- Ignore group expansion and other minor changes when making database "dirty" [#464]
|
||||
- Updated license and copyright information on souce files [#632]
|
||||
- Added contributors list to about dialog [#629]
|
||||
|
||||
2.1.4 (2017-04-09)
|
||||
=========================
|
||||
|
||||
- Bumped KeePassHTTP version to 1.8.4.2
|
||||
- KeePassHTTP confirmation window comes to foreground [#466]
|
||||
|
||||
2.1.3 (2017-03-03)
|
||||
=========================
|
||||
|
||||
- Fix possible overflow in zxcvbn library [#363]
|
||||
- Revert HiDPI setting to avoid problems on laptop screens [#332]
|
||||
- Set file meta properties in Windows executable [#330]
|
||||
- Suppress error message when auto-reloading a locked database [#345]
|
||||
- Improve usability of question dialog when database is already locked by a different instance [#346]
|
||||
- Fix compiler warnings in QHttp library [#351]
|
||||
- Use unified toolbar on Mac OS X [#361]
|
||||
- Fix an issue on X11 where the main window would be raised instead of closed on Alt+F4 [#362]
|
||||
|
||||
2.1.2 (2017-02-17)
|
||||
=========================
|
||||
|
||||
- Ask for save location when creating a new database [#302]
|
||||
- Remove Libmicrohttpd dependency to clean up the code and ensure better OS X compatibility [#317, #265]
|
||||
- Prevent Qt from degrading Wifi network performance on certain platforms [#318]
|
||||
- Visually refine user interface on OS X and other platforms [#299]
|
||||
- Remove unusable tray icon setting on OS X [#293]
|
||||
- Fix compositing glitches on Ubuntu and prevent flashing when minimizing to the tray at startup [#307]
|
||||
- Fix AppImage tray icon on Ubuntu [#277, #273]
|
||||
- Fix global menu disappearing after restoring KeePassXC from the tray on Ubuntu [#276]
|
||||
- Fix result order in entry search [#320]
|
||||
- Enable HiDPI scaling on supported platforms [#315]
|
||||
- Remove empty directories from installation target [#282]
|
||||
|
||||
2.1.1 (2017-02-06)
|
||||
=========================
|
||||
|
||||
- Enabled HTTP plugin build; plugin is disabled by default and limited to localhost [#147]
|
||||
- Escape HTML in dialog boxes [#247]
|
||||
- Corrected crashes in favicon download and password generator [#233, #226]
|
||||
- Increase font size of password meter [#228]
|
||||
- Fixed compatibility with Qt 5.8 [#211]
|
||||
- Use consistent button heights in password generator [#229]
|
||||
|
||||
2.1.0 (2017-01-22)
|
||||
=========================
|
||||
|
||||
- Show unlock dialog when using autotype on a closed database [#10, #89]
|
||||
- Show different tray icon when database is locked [#37, #46]
|
||||
- Support autotype on Windows and OS X [#42, #60, #63]
|
||||
- Add delay feature to autotype [#76, #77]
|
||||
- Add password strength meter [#84, #92]
|
||||
- Add option for automatically locking the database when minimizing
|
||||
the window [#57]
|
||||
- Add feature to download favicons and use them as entry icons [#30]
|
||||
- Automatically reload and merge database when the file changed on
|
||||
disk [#22, #33, #93]
|
||||
- Add tool for merging two databases [#22, #47, #143]
|
||||
- Add --pw-stdin commandline option to unlock the database by providing
|
||||
a password on STDIN [#54]
|
||||
- Add utility script for reading the database password from KWallet [#55]
|
||||
- Fix some KeePassHTTP settings not being remembered [#34, #65]
|
||||
- Make search box persistent [#15, #67, #157]
|
||||
- Enhance search feature by scoping the search to selected group [#16, #118]
|
||||
- Improve interaction between search field and entry list [#131, #141]
|
||||
- Add stand-alone password-generator [#18, #92]
|
||||
- Don't require password repetition when password is visible [#27, #92]
|
||||
- Add support for entry attributes in autotype sequences [#107]
|
||||
- Always focus password field when opening the database unlock widget [#116, #117]
|
||||
- Fix compilation errors on various platforms [#53, #126, #130]
|
||||
- Restructure and improve kdbx-extract utility [#160]
|
||||
|
||||
2.0.3 (2016-09-04)
|
||||
=========================
|
||||
|
||||
- Improved error reporting when reading / writing databases fails. [#450, #462]
|
||||
- Display an error message when opening a custom icon fails.
|
||||
- Detect custom icon format based on contents instead of the filename. [#512]
|
||||
- Keep symlink intact when saving databases. [#442].
|
||||
- Fix a crash when deleting parent group of recycle bin. [#520]
|
||||
- Display a confirm dialog before moving an entry to the recycle bin. [#447]
|
||||
- Repair UUIDs of inconsistent history items. [#130]
|
||||
- Only include top-level windows in auto-type window list when using gnome-shell.
|
||||
- Update translations.
|
||||
|
||||
2.0.2 (2016-02-02)
|
||||
=========================
|
||||
|
||||
- Fix regression in database writer that caused it to strip certain special
|
||||
characters (characters from Unicode plane > 0).
|
||||
- Fix bug in repair function that caused it to strip non-ASCII characters.
|
||||
|
||||
2.0.1 (2016-01-31)
|
||||
=========================
|
||||
|
||||
- Flush temporary file before opening attachment. [#390]
|
||||
- Disable password generator when showing entry in history mode. [#422]
|
||||
- Strip invalid XML chars when writing databases. [#392]
|
||||
- Add repair function to fix databases with invalid XML chars. [#392]
|
||||
- Display custom icons scaled. [#322]
|
||||
- Allow opening databases that have no password and keyfile. [#391]
|
||||
- Fix crash when importing .kdb files with invalid icon ids. [#425]
|
||||
- Update translations.
|
||||
|
||||
2.0 (2015-12-06)
|
||||
=========================
|
||||
|
||||
- Improve UI of the search edit.
|
||||
- Clear clipboard when locking databases. [#342]
|
||||
- Enable Ctrl+M shortcut to minimize the window on all platforms. [#329]
|
||||
- Show a better message when trying to open an old database format. [#338]
|
||||
- Fix global auto-type behavior with some window managers.
|
||||
- Show global auto-type window on the active desktop. [#359]
|
||||
- Disable systray on OS X. [#326]
|
||||
- Restore main window when clicking on the OS X docker icon. [#326]
|
||||
|
||||
2.0 Beta 2 (2015-09-06)
|
||||
=========================
|
||||
|
||||
- Fix crash when locking with search UI open [#309]
|
||||
- Fix file locking on Mac OS X [#327]
|
||||
- Set default extension when saving a database [#79, #308]
|
||||
|
||||
2.0 Beta 1 (2015-07-18)
|
||||
=========================
|
||||
|
||||
- Remember entry column sizes [#159]
|
||||
- Add translations
|
||||
- Support opening attachments directly
|
||||
- Support cmd:// URLs [#244]
|
||||
- Protect opened databases with a file lock [#18]
|
||||
- Export to csv files [#57]
|
||||
- Add optional tray icon [#153]
|
||||
- Allow setting the default auto-type sequence for groups [#175]
|
||||
- Make the kdbx parser more lenient
|
||||
- Remove --password command line option [#285]
|
||||
|
||||
2.0 Alpha 6 (2014-04-12)
|
||||
=========================
|
||||
|
||||
- Add option to lock databases after user inactivity [#62]
|
||||
- Add compatibility with libgcrypt 1.6 [#129]
|
||||
- Display passwords in monospace font [#51]
|
||||
- Use an icon for the button that shows/masks passwords [#38]
|
||||
- Add an option to show passwords by default [#93]
|
||||
- Improve password generator design [#122]
|
||||
- On Linux link .kdbx files with KeePassX
|
||||
- Remember window size [#154]
|
||||
- Disallow global auto-typing when the database is locked
|
||||
|
||||
2.0 Alpha 5 (2013-12-20)
|
||||
=========================
|
||||
|
||||
- Support copying entries and groups using drag'n'drop [#74]
|
||||
- Open last used databases on startup [#36]
|
||||
- Made the kdbx file parser more robust
|
||||
- Only edit entries on doubleclick (not single) or with enter key
|
||||
- Allow removing multiple entries
|
||||
- Added option to minimize window when copying data to clipboard
|
||||
- Save password generator settings
|
||||
- Fixed auto-type producing wrong chars in some keyboard configurations [#116]
|
||||
- Added some more actions to the toolbar
|
||||
|
||||
2.0 Alpha 4 (2013-03-29)
|
||||
=========================
|
||||
|
||||
- Add random password generator [#52]
|
||||
- Merge the 'Description' tab into the 'Entry' tab [#59]
|
||||
- Fix crash when deleting history items [#56]
|
||||
- Fix crash on Mac OS X Mountain Lion during startup [#50]
|
||||
- Improved KeePassX application icon [#58]
|
||||
|
||||
2.0 Alpha 3 (2012-10-27)
|
||||
=========================
|
||||
|
||||
- Auto-Type on Linux / X11
|
||||
- Database locking
|
||||
- Fix database corruption when changing key transformation rounds [#34]
|
||||
- Verify header data of kdbx files
|
||||
- Add menu entry to open URLs in the browser
|
||||
- Add menu entry to copy an entry attribute to clipboard
|
||||
|
||||
2.0 Alpha 2 (2012-07-02)
|
||||
=========================
|
||||
|
||||
- Import kdb (KeePass 1) files [#2]
|
||||
- Display history items [#23]
|
||||
- Implement history item limits [#16]
|
||||
- Group and entry icons can be set [#22]
|
||||
- Add keyboard shortcuts
|
||||
- Search in databases [#24]
|
||||
- Sortable entry view
|
||||
- Support building Mac OS X bundles
|
||||
|
||||
2.0 Alpha 1 (2012-05-07)
|
||||
=========================
|
||||
|
||||
- First release.
|
||||
715
CHANGELOG.md
Normal file
@@ -0,0 +1,715 @@
|
||||
# Changelog
|
||||
|
||||
## 2.6.0 (2020-07-06)
|
||||
|
||||
### Added
|
||||
|
||||
- Custom Light and Dark themes [#4110, #4769, #4791, #4796, #4892, #4915]
|
||||
- Compact mode to use classic Group and Entry line height [#4910]
|
||||
- View menu to quickly switch themes, compact mode, and toggle UI elements [#4910]
|
||||
- Search for groups and scope search to matched groups [#4705]
|
||||
- Save Database Backup feature [#4550]
|
||||
- Sort entries by "natural order" and move lines up/down [#4357]
|
||||
- Option to launch KeePassXC on system startup/login [#4675]
|
||||
- Caps Lock warning on password input fields [#3646]
|
||||
- Add "Size" column to entry view [#4588]
|
||||
- Browser-like tab experience using Ctrl+[Num] (Alt+[Num] on Linux) [#4063, #4305]
|
||||
- Password Generator: Define additional characters to choose from [#3876]
|
||||
- Reports: Database password health check (offline) [#3993]
|
||||
- Reports: HIBP online service to check for breached passwords [#4438]
|
||||
- Auto-Type: DateTime placeholders [#4409]
|
||||
- Browser: Show group name in results sent to browser extension [#4111]
|
||||
- Browser: Ability to define a custom browser location (macOS and Linux only) [#4148]
|
||||
- Browser: Ability to change root group UUID and inline edit connection ID [#4315, #4591]
|
||||
- CLI: `db-info` command [#4231]
|
||||
- CLI: Use wl-clipboard if xclip is not available (Linux) [#4323]
|
||||
- CLI: Incorporate xclip into snap builds [#4697]
|
||||
- SSH Agent: Key file path env substitution, SSH_AUTH_SOCK override, and connection test [#3769, #3801, #4545]
|
||||
- SSH Agent: Context menu actions to add/remove keys [#4290]
|
||||
|
||||
### Changed
|
||||
|
||||
- Complete replacement of default database icons [#4699]
|
||||
- Complete replacement of application icons [#4066, #4161, #4203, #4411]
|
||||
- Complete rewrite of documentation and manpages using Asciidoctor [#4937]
|
||||
- Complete refactor of config files; separate between local and roaming [#4665]
|
||||
- Complete refactor of browser integration and proxy code [#4680]
|
||||
- Complete refactor of hardware key integration (YubiKey and OnlyKey) [#4584, #4843]
|
||||
- Significantly improve performance when saving and opening databases [#4309, #4833]
|
||||
- Remove read-only detection for database files [#4508]
|
||||
- Overhaul of password fields and password generator [#4367]
|
||||
- Replace instances of "Master Key" with "Database Credentials" [#4929]
|
||||
- Change settings checkboxes to positive phrasing for consistency [#4715]
|
||||
- Improve UX of using entry actions (focus fix) [#3893]
|
||||
- Set expiration time to Now when enabling entry expiration [#4406]
|
||||
- Always show "New Entry" in context menu [#4617]
|
||||
- Issue warning before adding large attachments [#4651]
|
||||
- Improve importing OPVault [#4630]
|
||||
- Improve AutoOpen capability [#3901, #4752]
|
||||
- Check for updates every 7 days even while still running [#4752]
|
||||
- Improve Windows installer UI/UX [#4675]
|
||||
- Improve config file handling of portable distribution [#4131, #4752]
|
||||
- macOS: Hide dock icon when application is hidden to tray [#4782]
|
||||
- Browser: Use unlock dialog to improve UX of opening a locked database [#3698]
|
||||
- Browser: Improve database and entry settings experience [#4392, #4591]
|
||||
- Browser: Improve confirm access dialog [#2143, #4660]
|
||||
- KeeShare: Improve monitoring file changes of shares [#4720]
|
||||
- CLI: Rename `create` command to `db-create` [#4231]
|
||||
- CLI: Cleanup `db-create` options (`--set-key-file` and `--set-password`) [#4313]
|
||||
- CLI: Use stderr for help text and password prompts [#4086, #4623]
|
||||
- FdoSecrets: Display existing secret service process [#4128]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix changing focus around the main window using tab key [#4641]
|
||||
- Fix search field clearing while still using the application [#4368]
|
||||
- Improve search help widget displaying on macOS and Linux [#4236]
|
||||
- Return keyboard focus after editing an entry [#4287]
|
||||
- Reset database path after failed "Save As" [#4526]
|
||||
- Use SHA256 Digest for Windows code signing [#4129]
|
||||
- Improve handling of ccache when building [#4104, #4335]
|
||||
- macOS: Properly re-hide application window after browser integration and Auto-Type usage [#4909]
|
||||
- Auto-Type: Fix crash when performing on new entry [#4132]
|
||||
- Browser: Send legacy HTTP settings to recycle bin [#4589]
|
||||
- Browser: Fix merging browser keys [#4685]
|
||||
- CLI: Fix encoding when exporting database [#3921]
|
||||
- SSH Agent: Improve reliability and underlying code [#3833, #4256, #4549, #4595]
|
||||
- FdoSecrets: Fix crash when editing settings before service is enabled [#4332]
|
||||
|
||||
## 2.5.4 (2020-04-09)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Return keyboard focus after saving database edits [#4287]
|
||||
- Windows: Use bare minimum settings in portable version [#4131]
|
||||
- Windows: Use SHA256 code signing [#4129]
|
||||
- macOS: Fix code signing incompatibility in latest macOS release [#4564]
|
||||
|
||||
## 2.5.3 (2020-01-19)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix a possible database lockout when removing a YubiKey from a KDBX 3.1 database [#4147]
|
||||
- Fix crash if Auto-Type is performed on a new entry [#4150]
|
||||
- Fix crash when all entries are deleted from a group [#4156]
|
||||
- Improve the reliability of clipboard clearing on Gnome [#4165]
|
||||
- Do not check cmd:// URLs for valid URL syntax anymore [#4172]
|
||||
- Prevent unnecessary merges for databases on network shares [#4153]
|
||||
- Browser: Prevent native messaging proxy from blocking application shutdown [#4155]
|
||||
- Browser: Improve website URL matching [#4134, #4177]
|
||||
|
||||
### Added
|
||||
|
||||
- Browser: Enable support for Chromium-based Edge Browser [#3359]
|
||||
|
||||
## 2.5.2 (2020-01-04)
|
||||
|
||||
### Added
|
||||
|
||||
- Browser: Show UI warning when entering invalid URLs [#3912]
|
||||
- Browser: Option to use an entry only for HTTP auth [#3927]
|
||||
|
||||
### Changed
|
||||
|
||||
- Disable the user interface when merging or saving the database [#3991]
|
||||
- Ability to hide protected attribute after reveal [#3877]
|
||||
- Remove mention of "snaps" in Windows and macOS [#3879]
|
||||
- CLI: Merge parameter for source database key file (--key-file-from) [#3961]
|
||||
- Improve GUI tests reliability on Hi-DPI displays [#4075]
|
||||
- Disable deprecation warnings to allow building with Qt 5.14+ [#4075]
|
||||
- OPVault: Use 'otp' attribute for TOTP field imports [#4075]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix crashes when saving a database to cloud storage [#3991]
|
||||
- Fix crash when pressing enter twice while opening database [#3885]
|
||||
- Fix handling of HTML when displayed in the entry preview panel [#3910]
|
||||
- Fix start minimized to tray on Linux [#3899]
|
||||
- Fix Auto Open with key file only databases [#4075]
|
||||
- Fix escape key closing the standalone password generator [#3892]
|
||||
- macOS: Fix monospace font usage in password field and notes [#4075]
|
||||
- macOS: Fix building on macOS 10.9 to 10.11 [#3946]
|
||||
- Fix TOTP setup dialog not closing on database lock [#4075]
|
||||
- Browser: Fix condition where additional URLs are ignored [#4033]
|
||||
- Browser: Fix subdomain matching to return only relevant site entries [#3854]
|
||||
- Secret Service: Fix multiple crashes and incompatibilities [#3871, #4009, #4074]
|
||||
- Secret Service: Fix searching of entries [#4008, #4036]
|
||||
- Secret Service: Fix behavior when exposed group is recycled [#3914]
|
||||
- CLI: Release the database instance before exiting interactive mode [#3889]
|
||||
- Fix (most) memory leaks in tests [#3922]
|
||||
|
||||
## 2.5.1 (2019-11-11)
|
||||
|
||||
### Added
|
||||
|
||||
- Add programmatic use of the EntrySearcher [#3760]
|
||||
- Explicitly clear database memory upon locking even if the object is not deleted immediately [#3824]
|
||||
- macOS: Add ability to perform notarization of built package [#3827]
|
||||
|
||||
### Changed
|
||||
|
||||
- Reduce file hash checking to every 30 seconds to correct performance issues [#3724]
|
||||
- Correct formatting of notes in entry preview widget [#3727]
|
||||
- Improve performance and UX of database statistics page [#3780]
|
||||
- Improve interface for key file selection to discourage use of the database file [#3807]
|
||||
- Hide Auto-Type sequences column when not needed [#3794]
|
||||
- macOS: Revert back to using Carbon API for hotkey detection [#3794]
|
||||
- CLI: Do not show protected fields by default [#3710]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Secret Service: Correct issues interfacing with various applications [#3761]
|
||||
- Fix building without additional features [#3693]
|
||||
- Fix handling TOTP secret keys that require padding [#3764]
|
||||
- Fix database unlock dialog password field focus [#3764]
|
||||
- Correctly label open databases as locked on launch [#3764]
|
||||
- Prevent infinite recursion when two databases AutoOpen each other [#3764]
|
||||
- Browser: Fix incorrect matching of invalid URLs [#3759]
|
||||
- Properly stylize the application name on Linux [#3775]
|
||||
- Show application icon on Plasma Wayland sessions [#3777]
|
||||
- macOS: Check for Auto-Type permissions on use instead of at launch [#3794]
|
||||
|
||||
## 2.5.0 (2019-10-26)
|
||||
|
||||
### Added
|
||||
|
||||
- Add 'Paper Backup' aka 'Export to HTML file' to the 'Database' menu [#3277]
|
||||
- Add statistics panel with information about the database (number of entries, number of unique passwords, etc.) to the Database Settings dialog [#2034]
|
||||
- Add offline user manual accessible via the 'Help' menu [#3274]
|
||||
- Add support for importing 1Password OpVault files [#2292]
|
||||
- Implement Freedesktop.org secret storage DBus protocol so that KeePassXC can be used as a vault service by libsecret [#2726]
|
||||
- Add support for OnlyKey as an alternative to YubiKeys (requires yubikey-personalization >= 1.20.0) [#3352]
|
||||
- Add group sorting feature [#3282]
|
||||
- Add feature to download favicons for all entries at once [#3169]
|
||||
- Add word case option to passphrase generator [#3172]
|
||||
- Add support for RFC6238-compliant TOTP hashes [#2972]
|
||||
- Add UNIX man page for main program [#3665]
|
||||
- Add 'Monospaced font' option to the notes field [#3321]
|
||||
- Add support for key files in auto open [#3504]
|
||||
- Add search field for filtering entries in Auto-Type dialog [#2955]
|
||||
- Complete usernames based on known usernames from other entries [#3300]
|
||||
- Parse hyperlinks in the notes field of the entry preview pane [#3596]
|
||||
- Allow abbreviation of field names in entry search [#3440]
|
||||
- Allow setting group icons recursively [#3273]
|
||||
- Add copy context menu for username and password in Auto-Type dialog [#3038]
|
||||
- Drop to background after copying a password to the clipboard [#3253]
|
||||
- Add 'Lock databases' entry to tray icon menu [#2896]
|
||||
- Add option to minimize window after unlocking [#3439]
|
||||
- Add option to minimize window after opening a URL [#3302]
|
||||
- Request accessibility permissions for Auto-Type on macOS [#3624]
|
||||
- Browser: Add initial support for multiple URLs [#3558]
|
||||
- Browser: Add entry-specific browser integration settings [#3444]
|
||||
- CLI: Add offline HIBP checker (requires a downloaded HIBP dump) [#2707]
|
||||
- CLI: Add 'flatten' option to the 'ls' command [#3276]
|
||||
- CLI: Add password generation options to `Add` and `Edit` commands [#3275]
|
||||
- CLI: Add XML import [#3572]
|
||||
- CLI: Add CSV export to the 'export' command [#3278]
|
||||
- CLI: Add `-y --yubikey` option for YubiKey [#3416]
|
||||
- CLI: Add `--dry-run` option for merging databases [#3254]
|
||||
- CLI: Add group commands (mv, mkdir and rmdir) [#3313].
|
||||
- CLI: Add interactive shell mode command `open` [#3224]
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
- Redesign database unlock dialog [ #3287]
|
||||
- Rework the entry preview panel [ #3306]
|
||||
- Move notes to General tab on Group Preview Panel [#3336]
|
||||
- Enable entry actions when editing an entry and cleanup entry context menu [#3641]
|
||||
- Improve detection of external database changes [#2389]
|
||||
- Warn if user is trying to use a KDBX file as a key file [#3625]
|
||||
- Add option to disable KeePassHTTP settings migrations prompt [#3349, #3344]
|
||||
- Re-enabled Wayland support (no Auto-Type yet) [#3520, #3341]
|
||||
- Add icon to 'Toggle Window' action in tray icon menu [#3244]
|
||||
- Merge custom data between databases only when necessary [#3475]
|
||||
- Improve various file-handling related issues when picking files using the system's file dialog [#3473]
|
||||
- Add 'New Entry' context menu when no entries are selected [#3671]
|
||||
- Reduce default Argon2 settings from 128 MiB and one thread per CPU core to 64 MiB and two threads to account for lower-spec mobile hardware [ #3672]
|
||||
- Browser: Remove unused 'Remember' checkbox for HTTP Basic Auth [#3371]
|
||||
- Browser: Show database name when pairing with a new browser [#3638]
|
||||
- Browser: Show URL in allow access dialog [#3639]
|
||||
- CLI: The password length option `-l` for the CLI commands `Add` and `Edit` is now `-L` [#3275]
|
||||
- CLI: The `-u` shorthand for the `--upper` password generation option has been renamed to `-U` [#3275]
|
||||
- CLI: Rename command `extract` to `export`. [#3277]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Improve accessibility for assistive technologies [#3409]
|
||||
- Correctly unlock all databases if `--pw-stdin` is provided [#2916]
|
||||
- Fix password generator issues with special characters [#3303]
|
||||
- Fix KeePassXC interrupting shutdown procedure [#3666]
|
||||
- Fix password visibility toggle button state on unlock dialog [#3312]
|
||||
- Fix potential data loss if database is reloaded while user is editing an entry [#3656]
|
||||
- Fix hard-coded background color in search help popup [#3001]
|
||||
- Fix font choice for password preview [#3425]
|
||||
- Fix handling of read-only files when autosave is enabled [#3408]
|
||||
- Handle symlinks correctly when atomic saves are disabled [#3463]
|
||||
- Enable HighDPI icon scaling on Linux [#3332]
|
||||
- Make Auto-Type on macOS more robust and remove old Carbon API calls [#3634, [#3347)]
|
||||
- Hide Share tab if KeePassXC is compiled without KeeShare support and other minor KeeShare improvements [#3654, [#3291, #3029, #3031, #3236]
|
||||
- Correctly bring window to the front when clicking tray icon on macOS [#3576]
|
||||
- Correct application shortcut created by MSI Installer on Windows [#3296]
|
||||
- Fix crash when removing custom data [#3508]
|
||||
- Fix placeholder resolution in URLs [#3281]
|
||||
- Fix various inconsistencies and platform-dependent compilation bugs [#3664, #3662, #3660, #3655, #3649, #3417, #3357, #3319, #3318, #3304]
|
||||
- Browser: Fix potential leaking of entries through the browser integration API if multiple databases are opened [#3480]
|
||||
- Browser: Fix password entropy calculation [#3107]
|
||||
- Browser: Fix Windows registry settings for portable installation [#3603]
|
||||
|
||||
## 2.4.3 (2019-06-12)
|
||||
|
||||
### Added
|
||||
|
||||
- Add documentation for keyboard shortcuts to source code distribution [#3215]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix library loading issues in the Snap and macOS releases [#3247]
|
||||
- Fix various keyboard navigation issues [#3248]
|
||||
- Fix main window toggling regression when clicking the tray icon on KDE [#3258]
|
||||
|
||||
## 2.4.2 (2019-05-31)
|
||||
|
||||
- Improve resilience against memory attacks - overwrite memory before free [#3020]
|
||||
- Prevent infinite save loop when location is unavailable [#3026]
|
||||
- Attempt to fix quitting application when shutdown or logout issued [#3199]
|
||||
- Support merging database custom data [#3002]
|
||||
- Fix opening URL's with non-http schemes [#3153]
|
||||
- Fix data loss due to not reading all database attachments if duplicates exist [#3180]
|
||||
- Fix entry context menu disabling when using keyboard navigation [#3199]
|
||||
- Fix behaviors when canceling an entry edit [#3199]
|
||||
- Fix processing of tray icon click and doubleclick [#3112]
|
||||
- Update group in preview widget when focused [#3199]
|
||||
- Prefer DuckDuckGo service over direct icon download (increases resolution) #2996]
|
||||
- Remove apply button in application settings [#3019]
|
||||
- Use winqtdeploy on Windows to correct deployment issues [#3025]
|
||||
- Don't mark entry edit as modified when attribute selection changes [#3041]
|
||||
- Use console code page CP_UTF8 on Windows if supported [#3050]
|
||||
- Snap: Fix locking database with session lock [#3046]
|
||||
- Snap: Fix theming across Linux distributions [#3057]
|
||||
- Snap: Use SNAP_USER_COMMON and SNAP_USER_DATA directories [#3131]
|
||||
- KeeShare: Automatically enable WITH_XC_KEESHARE_SECURE if quazip is found [#3088]
|
||||
- macOS: Fix toolbar text when in dark mode [#2998]
|
||||
- macOS: Lock database on switching user [#3097]
|
||||
- macOS: Fix global Auto-Type when the database is locked[ #3138]
|
||||
- Browser: Close popups when database is locked [#3093]
|
||||
- Browser: Add tests [#3016]
|
||||
- Browser: Don't create default group if custom group is enabled [#3127]
|
||||
|
||||
## 2.4.1 (2019-04-12)
|
||||
|
||||
- Fix database deletion when using unsafe saves to a different file system #2889
|
||||
- Fix opening databases with legacy key files that contain '/' #2872
|
||||
- Fix opening database files from the command line #2919
|
||||
- Fix crash when editing master key #2836
|
||||
- Fix multiple issues with apply button behavior #2947
|
||||
- Fix issues on application startup (tab order, --pw-stdin, etc.) #2830
|
||||
- Fix building without WITH_XC_KEESHARE
|
||||
- Fix reference entry coloring on macOS dark mode #2984
|
||||
- Hide window when performing entry auto-type on macOS #2969
|
||||
- Improve UX of update checker; reduce checks to every 7 days #2968
|
||||
- KeeShare improvements [#2946, #2978, #2824]
|
||||
- Re-enable Ctrl+C to copy password from search box #2947
|
||||
- Add KeePassXC-Browser integration for Brave browser #2933
|
||||
- SSH Agent: Re-Add keys on database unlock #2982
|
||||
- SSH Agent: Only remove keys on app exit if they are removed on lock #2985
|
||||
- CLI: Add --no-password option #2708
|
||||
- CLI: Improve database extraction to XML #2698
|
||||
- CLI: Don't call mandb on build #2774
|
||||
- CLI: Add debug info #2714
|
||||
- Improve support for Snap theming #2832
|
||||
- Add support for building on Haiku OS #2859
|
||||
- Ctrl+PgDn now goes to the next tab and Ctrl+PgUp to the previous
|
||||
- Fix compiling on GCC 5 / Xenial #2990
|
||||
- Add .gitrev output to tarball for third-party builds #2970
|
||||
- Add WITH_XC_UPDATECHECK compile flag to toggle the update checker #2968
|
||||
|
||||
## 2.4.0 (2019-03-19)
|
||||
|
||||
- New Database Wizard #1952
|
||||
- Advanced Search #1797
|
||||
- Automatic update checker #2648
|
||||
- KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]
|
||||
- Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]
|
||||
- Remove KeePassHttp support #1752
|
||||
- CLI: output info to stderr for easier scripting #2558
|
||||
- CLI: Add --quiet option #2507
|
||||
- CLI: Add create command #2540
|
||||
- CLI: Add recursive listing of entries #2345
|
||||
- CLI: Fix stdin/stdout encoding on Windows #2425
|
||||
- SSH Agent: Support OpenSSH for Windows #1994
|
||||
- macOS: TouchID Quick Unlock #1851
|
||||
- macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]
|
||||
- Linux: Prevent Klipper from storing secrets in clipboard #1969
|
||||
- Linux: Use polling based file watching for NFS #2171
|
||||
- Linux: Enable use of browser plugin in Snap build #2802
|
||||
- TOTP QR Code Generator #1167
|
||||
- High-DPI Scaling for 4k screens #2404
|
||||
- Make keyboard shortcuts more consistent #2431
|
||||
- Warn user if deleting referenced entries #1744
|
||||
- Allow toolbar to be hidden and repositioned [#1819, #2357]
|
||||
- Increase max allowed database timeout to 12 hours #2173
|
||||
- Password generator uses existing password length by default #2318
|
||||
- Improve alert message box button labels #2376
|
||||
- Show message when a database merge makes no changes #2551
|
||||
- Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]
|
||||
- Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]
|
||||
|
||||
## 2.3.4 (2018-08-21)
|
||||
|
||||
- Show all URL schemes in entry view #1768
|
||||
- Disable merge when database is locked #1975
|
||||
- Fix intermittent crashes with favorite icon downloads #1980
|
||||
- Provide potential crash warning to Qt 5.5.x users #2211
|
||||
- Disable apply button when creating new entry/group to prevent data loss #2204
|
||||
- Allow for 12 hour timeout to lock idle database #2173
|
||||
- Multiple SSH Agent fixes [#1981, #2117]
|
||||
- Multiple Browser Integration enhancements [#1993, #2003, #2055, #2116, #2159, #2174, #2185]
|
||||
- Fix browser proxy application not closing properly #2142
|
||||
- Add real names and Patreon supporters to about dialog #2214
|
||||
- Add settings button to toolbar, Donate button, and Report a Bug button to help menu #2214
|
||||
- Enhancements to release-tool to appsign intermediate build products #2101
|
||||
|
||||
|
||||
## 2.3.3 (2018-05-09)
|
||||
|
||||
- Fix crash when browser integration is enabled #1923
|
||||
|
||||
## 2.3.2 (2018-05-07)
|
||||
|
||||
- Enable high entropy ASLR on Windows #1747
|
||||
- Enhance favicon fetching #1786
|
||||
- Fix crash on Windows due to autotype #1691
|
||||
- Fix dark tray icon changing all icons #1680
|
||||
- Fix --pw-stdin not using getPassword function #1686
|
||||
- Fix placeholders being resolved in notes #1907
|
||||
- Enable auto-type start delay to be configurable #1908
|
||||
- Browser: Fix native messaging reply size #1719
|
||||
- Browser: Increase maximum buffer size #1720
|
||||
- Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906]
|
||||
- SSH Agent: Parse aes-256-cbc/ctr keys #1682
|
||||
- SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]
|
||||
|
||||
## 2.3.1 (2018-03-06)
|
||||
|
||||
- Fix unnecessary automatic upgrade to KDBX 4.0 and prevent challenge-response key being stripped #1568
|
||||
- Abort saving and show an error message when challenge-response fails #1659
|
||||
- Support inner stream protection on all string attributes #1646
|
||||
- Fix favicon downloads not finishing on some websites #1657
|
||||
- Fix freeze due to invalid STDIN data #1628
|
||||
- Correct issue with encrypted RSA SSH keys #1587
|
||||
- Fix crash on macOS due to QTBUG-54832 #1607
|
||||
- Show error message if ssh-agent communication fails #1614
|
||||
- Fix --pw-stdin and filename parameters being ignored #1608
|
||||
- Fix Auto-Type syntax check not allowing spaces and special characters #1626
|
||||
- Fix reference placeholders in combination with Auto-Type #1649
|
||||
- Fix qtbase translations not being loaded #1611
|
||||
- Fix startup crash on Windows due to missing SVG libraries #1662
|
||||
- Correct database tab order regression #1610
|
||||
- Fix GCC 8 compilation error #1612
|
||||
- Fix copying of advanced attributes on KDE #1640
|
||||
- Fix member initialization of CategoryListWidgetDelegate #1613
|
||||
- Fix inconsistent toolbar icon sizes and provide higher-quality icons #1616
|
||||
- Improve preview panel geometry #1609
|
||||
|
||||
## 2.3.0 (2018-02-27)
|
||||
|
||||
- Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494]
|
||||
- Add SSH Agent feature [#1098, #1450, #1463]
|
||||
- Add preview panel with details of the selected entry [#879, #1338]
|
||||
- Add more and configurable columns to entry table and allow copying of values by double click #1305
|
||||
- Add KeePassXC-Browser API as a replacement for KeePassHTTP #608
|
||||
- Deprecate KeePassHTTP #1392
|
||||
- Add support for Steam one-time passwords #1206
|
||||
- Add support for multiple Auto-Type sequences for a single entry #1390
|
||||
- Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 #1060
|
||||
- Replace qHttp with cURL for website icon downloads #1460
|
||||
- Remove lock file #1231
|
||||
- Add option to create backup file before saving #1385
|
||||
- Ask to save a generated password before closing the entry password generator #1499
|
||||
- Resolve placeholders recursively #1078
|
||||
- Add Auto-Type button to the toolbar #1056
|
||||
- Improve window focus handling for Auto-Type dialogs [#1204, #1490]
|
||||
- Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412]
|
||||
- Add optional dark tray icon #1154
|
||||
- Add new "Unsafe saving" option to work around saving problems with file sync services #1385
|
||||
- Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537]
|
||||
- Add diceware password generator to CLI #1406
|
||||
- Add --key-file option to CLI [#816, #824]
|
||||
- Add DBus interface for opening and closing KeePassXC databases #283
|
||||
- Add KDBX compression options to database settings #1419
|
||||
- Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327]
|
||||
- Correct reference resolution in entry fields #1486
|
||||
- Fix window state and recent databases not being remembered on exit #1453
|
||||
- Correct history item generation when configuring TOTP for an entry #1446
|
||||
- Correct multiple TOTP bugs #1414
|
||||
- Automatic saving after every change is now a default #279
|
||||
- Allow creation of new entries during search #1398
|
||||
- Correct menu issues on macOS #1335
|
||||
- Allow compilation on OpenBSD #1328
|
||||
- Improve entry attachments view [#1139, #1298]
|
||||
- Fix auto lock for Gnome and Xfce [#910, #1249]
|
||||
- Don't remember key files in file dialogs when the setting is disabled #1188
|
||||
- Improve database merging and conflict resolution [#807, #1165]
|
||||
- Fix macOS pasteboard issues #1202
|
||||
- Improve startup times on some platforms #1205
|
||||
- Hide the notes field by default #1124
|
||||
- Toggle main window by clicking tray icon with the middle mouse button #992
|
||||
- Fix custom icons not copied over when databases are merged #1008
|
||||
- Allow use of DEL key to delete entries #914
|
||||
- Correct intermittent crash due to stale history items #1527
|
||||
- Sanitize newline characters in title, username and URL fields #1502
|
||||
- Reopen previously opened databases in correct order #774
|
||||
- Use system's zxcvbn library if available #701
|
||||
- Implement various i18n improvements [#690, #875, #1436]
|
||||
|
||||
## 2.2.4 (2017-12-13)
|
||||
|
||||
- Prevent database corruption when locked #1219
|
||||
- Fixes apply button not saving new entries #1141
|
||||
- Switch to Consolas font on Windows for password edit #1229
|
||||
- Multiple fixes to AppImage deployment [#1115, #1228]
|
||||
- Fixes multiple memory leaks #1213
|
||||
- Resize message close to 16x16 pixels #1253
|
||||
|
||||
## 2.2.2 (2017-10-22)
|
||||
|
||||
- Fixed entries with empty URLs being reported to KeePassHTTP clients #1031
|
||||
- Fixed YubiKey detection and enabled CLI tool for AppImage binary #1100
|
||||
- Added AppStream description #1082
|
||||
- Improved TOTP compatibility and added new Base32 implementation #1069
|
||||
- Fixed error handling when processing invalid cipher stream #1099
|
||||
- Fixed double warning display when opening a database #1037
|
||||
- Fixed unlocking databases with --pw-stdin #1087
|
||||
- Added ability to override QT_PLUGIN_PATH environment variable for AppImages #1079
|
||||
- Fixed transform seed not being regenerated when saving the database #1068
|
||||
- Fixed only one YubiKey slot being polled #1048
|
||||
- Corrected an issue with entry icons while merging #1008
|
||||
- Corrected desktop and tray icons in Snap package #1030
|
||||
- Fixed screen lock and Google fallback settings #1029
|
||||
|
||||
## 2.2.1 (2017-10-01)
|
||||
|
||||
- Corrected multiple snap issues [#934, #1011]
|
||||
- Corrected multiple custom icon issues [#708, #719, #994]
|
||||
- Corrected multiple Yubikey issues #880
|
||||
- Fixed single instance preventing load on occasion #997
|
||||
- Keep entry history when merging databases #970
|
||||
- Prevent data loss if passwords were mismatched #1007
|
||||
- Fixed crash after merge #941
|
||||
- Added configurable auto-type default delay #703
|
||||
- Unlock database dialog window comes to front #663
|
||||
- Translation and compiling fixes
|
||||
|
||||
## 2.2.0 (2017-06-23)
|
||||
|
||||
- Added YubiKey 2FA integration for unlocking databases #127
|
||||
- Added TOTP support #519
|
||||
- Added CSV import tool [#146, #490]
|
||||
- Added KeePassXC CLI tool #254
|
||||
- Added diceware password generator #373
|
||||
- Added support for entry references [#370, #378]
|
||||
- Added support for Twofish encryption #167
|
||||
- Enabled DEP and ASLR for in-memory protection #371
|
||||
- Enabled single instance mode #510
|
||||
- Enabled portable mode #645
|
||||
- Enabled database lock on screensaver and session lock #545
|
||||
- Redesigned welcome screen with common features and recent databases #292
|
||||
- Multiple updates to search behavior [#168, #213, #374, #471, #603, #654]
|
||||
- Added auto-type fields {CLEARFIELD}, {SPACE}, {{}, {}} [#267, #427, #480]
|
||||
- Fixed auto-type errors on Linux #550
|
||||
- Prompt user prior to executing a cmd:// URL #235
|
||||
- Entry attributes can be protected (hidden) #220
|
||||
- Added extended ascii to password generator #538
|
||||
- Added new database icon to toolbar #289
|
||||
- Added context menu entry to empty recycle bin in databases #520
|
||||
- Added "apply" button to entry and group edit windows #624
|
||||
- Added macOS tray icon and enabled minimize on close #583
|
||||
- Fixed issues with unclean shutdowns [#170, #580]
|
||||
- Changed keyboard shortcut to create new database to CTRL+SHIFT+N #515
|
||||
- Compare window title to entry URLs #556
|
||||
- Implemented inline error messages #162
|
||||
- Ignore group expansion and other minor changes when making database "dirty" #464
|
||||
- Updated license and copyright information on souce files #632
|
||||
- Added contributors list to about dialog #629
|
||||
|
||||
## 2.1.4 (2017-04-09)
|
||||
|
||||
- Bumped KeePassHTTP version to 1.8.4.2
|
||||
- KeePassHTTP confirmation window comes to foreground #466
|
||||
|
||||
## 2.1.3 (2017-03-03)
|
||||
|
||||
- Fix possible overflow in zxcvbn library #363
|
||||
- Revert HiDPI setting to avoid problems on laptop screens #332
|
||||
- Set file meta properties in Windows executable #330
|
||||
- Suppress error message when auto-reloading a locked database #345
|
||||
- Improve usability of question dialog when database is already locked by a different instance #346
|
||||
- Fix compiler warnings in QHttp library #351
|
||||
- Use unified toolbar on Mac OS X #361
|
||||
- Fix an issue on X11 where the main window would be raised instead of closed on Alt+F4 #362
|
||||
|
||||
## 2.1.2 (2017-02-17)
|
||||
|
||||
- Ask for save location when creating a new database #302
|
||||
- Remove Libmicrohttpd dependency to clean up the code and ensure better OS X compatibility [#317, #265]
|
||||
- Prevent Qt from degrading Wifi network performance on certain platforms #318
|
||||
- Visually refine user interface on OS X and other platforms #299
|
||||
- Remove unusable tray icon setting on OS X #293
|
||||
- Fix compositing glitches on Ubuntu and prevent flashing when minimizing to the tray at startup #307
|
||||
- Fix AppImage tray icon on Ubuntu [#277, #273]
|
||||
- Fix global menu disappearing after restoring KeePassXC from the tray on Ubuntu #276
|
||||
- Fix result order in entry search #320
|
||||
- Enable HiDPI scaling on supported platforms #315
|
||||
- Remove empty directories from installation target #282
|
||||
|
||||
## 2.1.1 (2017-02-06)
|
||||
|
||||
- Enabled HTTP plugin build; plugin is disabled by default and limited to localhost #147
|
||||
- Escape HTML in dialog boxes #247
|
||||
- Corrected crashes in favicon download and password generator [#233, #226]
|
||||
- Increase font size of password meter #228
|
||||
- Fixed compatibility with Qt 5.8 #211
|
||||
- Use consistent button heights in password generator #229
|
||||
|
||||
## 2.1.0 (2017-01-22)
|
||||
|
||||
- Show unlock dialog when using autotype on a closed database [#10, #89]
|
||||
- Show different tray icon when database is locked [#37, #46]
|
||||
- Support autotype on Windows and OS X [#42, #60, #63]
|
||||
- Add delay feature to autotype [#76, #77]
|
||||
- Add password strength meter [#84, #92]
|
||||
- Add option for automatically locking the database when minimizing
|
||||
the window #57
|
||||
- Add feature to download favicons and use them as entry icons #30
|
||||
- Automatically reload and merge database when the file changed on
|
||||
disk [#22, #33, #93]
|
||||
- Add tool for merging two databases [#22, #47, #143]
|
||||
- Add --pw-stdin commandline option to unlock the database by providing
|
||||
a password on STDIN #54
|
||||
- Add utility script for reading the database password from KWallet #55
|
||||
- Fix some KeePassHTTP settings not being remembered [#34, #65]
|
||||
- Make search box persistent [#15, #67, #157]
|
||||
- Enhance search feature by scoping the search to selected group [#16, #118]
|
||||
- Improve interaction between search field and entry list [#131, #141]
|
||||
- Add stand-alone password-generator [#18, #92]
|
||||
- Don't require password repetition when password is visible [#27, #92]
|
||||
- Add support for entry attributes in autotype sequences #107
|
||||
- Always focus password field when opening the database unlock widget [#116, #117]
|
||||
- Fix compilation errors on various platforms [#53, #126, #130]
|
||||
- Restructure and improve kdbx-extract utility #160
|
||||
|
||||
## 2.0.3 (2016-09-04)
|
||||
|
||||
- Improved error reporting when reading / writing databases fails. [#450, #462]
|
||||
- Display an error message when opening a custom icon fails.
|
||||
- Detect custom icon format based on contents instead of the filename. #512
|
||||
- Keep symlink intact when saving databases. #442.
|
||||
- Fix a crash when deleting parent group of recycle bin. #520
|
||||
- Display a confirm dialog before moving an entry to the recycle bin. #447
|
||||
- Repair UUIDs of inconsistent history items. #130
|
||||
- Only include top-level windows in auto-type window list when using gnome-shell.
|
||||
- Update translations.
|
||||
|
||||
## 2.0.2 (2016-02-02)
|
||||
|
||||
- Fix regression in database writer that caused it to strip certain special
|
||||
characters (characters from Unicode plane > 0).
|
||||
- Fix bug in repair function that caused it to strip non-ASCII characters.
|
||||
|
||||
## 2.0.1 (2016-01-31)
|
||||
|
||||
- Flush temporary file before opening attachment. #390
|
||||
- Disable password generator when showing entry in history mode. #422
|
||||
- Strip invalid XML chars when writing databases. #392
|
||||
- Add repair function to fix databases with invalid XML chars. #392
|
||||
- Display custom icons scaled. #322
|
||||
- Allow opening databases that have no password and keyfile. #391
|
||||
- Fix crash when importing .kdb files with invalid icon ids. #425
|
||||
- Update translations.
|
||||
|
||||
## 2.0 (2015-12-06)
|
||||
|
||||
- Improve UI of the search edit.
|
||||
- Clear clipboard when locking databases. #342
|
||||
- Enable Ctrl+M shortcut to minimize the window on all platforms. #329
|
||||
- Show a better message when trying to open an old database format. #338
|
||||
- Fix global auto-type behavior with some window managers.
|
||||
- Show global auto-type window on the active desktop. #359
|
||||
- Disable systray on OS X. #326
|
||||
- Restore main window when clicking on the OS X docker icon. #326
|
||||
|
||||
## 2.0 Beta 2 (2015-09-06)
|
||||
|
||||
- Fix crash when locking with search UI open #309
|
||||
- Fix file locking on Mac OS X #327
|
||||
- Set default extension when saving a database [#79, #308]
|
||||
|
||||
## 2.0 Beta 1 (2015-07-18)
|
||||
|
||||
- Remember entry column sizes #159
|
||||
- Add translations
|
||||
- Support opening attachments directly
|
||||
- Support cmd:// URLs #244
|
||||
- Protect opened databases with a file lock #18
|
||||
- Export to csv files #57
|
||||
- Add optional tray icon #153
|
||||
- Allow setting the default auto-type sequence for groups #175
|
||||
- Make the kdbx parser more lenient
|
||||
- Remove --password command line option #285
|
||||
|
||||
## 2.0 Alpha 6 (2014-04-12)
|
||||
|
||||
- Add option to lock databases after user inactivity #62
|
||||
- Add compatibility with libgcrypt 1.6 #129
|
||||
- Display passwords in monospace font #51
|
||||
- Use an icon for the button that shows/masks passwords #38
|
||||
- Add an option to show passwords by default #93
|
||||
- Improve password generator design #122
|
||||
- On Linux link .kdbx files with KeePassX
|
||||
- Remember window size #154
|
||||
- Disallow global auto-typing when the database is locked
|
||||
|
||||
## 2.0 Alpha 5 (2013-12-20)
|
||||
|
||||
- Support copying entries and groups using drag'n'drop #74
|
||||
- Open last used databases on startup #36
|
||||
- Made the kdbx file parser more robust
|
||||
- Only edit entries on doubleclick (not single) or with enter key
|
||||
- Allow removing multiple entries
|
||||
- Added option to minimize window when copying data to clipboard
|
||||
- Save password generator settings
|
||||
- Fixed auto-type producing wrong chars in some keyboard configurations #116
|
||||
- Added some more actions to the toolbar
|
||||
|
||||
## 2.0 Alpha 4 (2013-03-29)
|
||||
|
||||
- Add random password generator #52
|
||||
- Merge the 'Description' tab into the 'Entry' tab #59
|
||||
- Fix crash when deleting history items #56
|
||||
- Fix crash on Mac OS X Mountain Lion during startup #50
|
||||
- Improved KeePassX application icon #58
|
||||
|
||||
## 2.0 Alpha 3 (2012-10-27)
|
||||
|
||||
- Auto-Type on Linux / X11
|
||||
- Database locking
|
||||
- Fix database corruption when changing key transformation rounds #34
|
||||
- Verify header data of kdbx files
|
||||
- Add menu entry to open URLs in the browser
|
||||
- Add menu entry to copy an entry attribute to clipboard
|
||||
|
||||
## 2.0 Alpha 2 (2012-07-02)
|
||||
|
||||
- Import kdb (KeePass 1) files #2
|
||||
- Display history items #23
|
||||
- Implement history item limits #16
|
||||
- Group and entry icons can be set #22
|
||||
- Add keyboard shortcuts
|
||||
- Search in databases #24
|
||||
- Sortable entry view
|
||||
- Support building Mac OS X bundles
|
||||
|
||||
## 2.0 Alpha 1 (2012-05-07)
|
||||
|
||||
- First release.
|
||||
204
CMakeLists.txt
@@ -14,20 +14,22 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
cmake_minimum_required(VERSION 3.1.0)
|
||||
cmake_minimum_required(VERSION 3.3.0)
|
||||
|
||||
project(KeePassXC)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||
"Choose the type of build, options are: None Debug Release RelWithDebInfo Debug DebugFull Profile MinSizeRel."
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo Profile"
|
||||
FORCE)
|
||||
endif()
|
||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
# Support Visual Studio Code
|
||||
include(CMakeToolsHelpers OPTIONAL)
|
||||
include(FeatureSummary)
|
||||
|
||||
include(CheckCCompilerFlag)
|
||||
include(CheckCXXCompilerFlag)
|
||||
@@ -39,22 +41,38 @@ option(WITH_DEV_BUILD "Use only for development. Disables/warns about deprecated
|
||||
option(WITH_ASAN "Enable address sanitizer checks (Linux / macOS only)" OFF)
|
||||
option(WITH_COVERAGE "Use to build with coverage tests (GCC only)." OFF)
|
||||
option(WITH_APP_BUNDLE "Enable Application Bundle for macOS" ON)
|
||||
option(WITH_CCACHE "Use ccache for build" OFF)
|
||||
|
||||
set(WITH_XC_ALL OFF CACHE BOOLEAN "Build in all available plugins")
|
||||
set(WITH_XC_ALL OFF CACHE BOOL "Build in all available plugins")
|
||||
|
||||
option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
|
||||
option(WITH_XC_NETWORKING "Include networking code (e.g. for downlading website icons)." OFF)
|
||||
option(WITH_XC_NETWORKING "Include networking code (e.g. for downloading website icons)." OFF)
|
||||
option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
|
||||
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
|
||||
option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
|
||||
option(WITH_XC_KEESHARE "Sharing integration with KeeShare" OFF)
|
||||
option(WITH_XC_KEESHARE_SECURE "Sharing integration with secured KeeShare containers" OFF)
|
||||
option(WITH_XC_KEESHARE "Sharing integration with KeeShare (requires quazip5 for secure containers)" OFF)
|
||||
option(WITH_XC_UPDATECHECK "Include automatic update checks; disable for controlled distributions" ON)
|
||||
if(UNIX AND NOT APPLE)
|
||||
option(WITH_XC_FDOSECRETS "Implement freedesktop.org Secret Storage Spec server side API." OFF)
|
||||
endif()
|
||||
if(APPLE)
|
||||
option(WITH_XC_TOUCHID "Include TouchID support for macOS." OFF)
|
||||
endif()
|
||||
option(WITH_XC_DOCS "Enable building of documentation" ON)
|
||||
|
||||
if(WITH_CCACHE)
|
||||
# Use the Compiler Cache (ccache) program
|
||||
# (install with: sudo apt get ccache)
|
||||
find_program(CCACHE_FOUND ccache)
|
||||
if(CCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_FOUND})
|
||||
else()
|
||||
message(FATAL_ERROR "ccache requested but cannot be found.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_XC_ALL)
|
||||
# Enable all options
|
||||
# Enable all options (except update check and docs)
|
||||
set(WITH_XC_AUTOTYPE ON)
|
||||
set(WITH_XC_NETWORKING ON)
|
||||
set(WITH_XC_BROWSER ON)
|
||||
@@ -64,10 +82,9 @@ if(WITH_XC_ALL)
|
||||
if(APPLE)
|
||||
set(WITH_XC_TOUCHID ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_XC_KEESHARE_SECURE)
|
||||
set(WITH_XC_KEESHARE ON)
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(WITH_XC_FDOSECRETS ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_XC_SSHAGENT OR WITH_XC_KEESHARE)
|
||||
@@ -76,10 +93,17 @@ else()
|
||||
set(WITH_XC_CRYPTO_SSH OFF)
|
||||
endif()
|
||||
|
||||
# Prefer WITH_XC_NETWORKING setting over WITH_XC_UPDATECHECK
|
||||
if(NOT WITH_XC_NETWORKING AND WITH_XC_UPDATECHECK)
|
||||
message(STATUS "Disabling WITH_XC_UPDATECHECK because WITH_XC_NETWORKING is disabled")
|
||||
set(WITH_XC_UPDATECHECK OFF)
|
||||
endif()
|
||||
|
||||
set(KEEPASSXC_VERSION_MAJOR "2")
|
||||
set(KEEPASSXC_VERSION_MINOR "4")
|
||||
set(KEEPASSXC_VERSION_MINOR "6")
|
||||
set(KEEPASSXC_VERSION_PATCH "0")
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
||||
set(OVERRIDE_VERSION "" CACHE STRING "Override the KeePassXC Version for Snapshot builds")
|
||||
|
||||
set(KEEPASSXC_BUILD_TYPE "Snapshot" CACHE STRING "Set KeePassXC build type to distinguish between stable releases and snapshots")
|
||||
set_property(CACHE KEEPASSXC_BUILD_TYPE PROPERTY STRINGS Snapshot Release PreRelease)
|
||||
@@ -91,8 +115,10 @@ execute_process(COMMAND git rev-parse --short=7 HEAD
|
||||
OUTPUT_VARIABLE GIT_HEAD
|
||||
ERROR_QUIET)
|
||||
string(STRIP "${GIT_HEAD}" GIT_HEAD)
|
||||
if(GIT_HEAD STREQUAL "")
|
||||
if(GIT_HEAD STREQUAL "" AND NOT GIT_HEAD_OVERRIDE STREQUAL "")
|
||||
string(SUBSTRING "${GIT_HEAD_OVERRIDE}" 0 7 GIT_HEAD)
|
||||
elseif(EXISTS ${CMAKE_SOURCE_DIR}/.gitrev)
|
||||
file(READ ${CMAKE_SOURCE_DIR}/.gitrev GIT_HEAD)
|
||||
endif()
|
||||
message(STATUS "Found Git HEAD Revision: ${GIT_HEAD}\n")
|
||||
|
||||
@@ -116,13 +142,16 @@ if(OVERRIDE_VERSION)
|
||||
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
|
||||
set(KEEPASSXC_BUILD_TYPE Release)
|
||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||
else()
|
||||
set(KEEPASSXC_BUILD_TYPE Snapshot)
|
||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||
endif()
|
||||
else()
|
||||
if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease")
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
|
||||
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(KEEPASSXC_BUILD_TYPE STREQUAL "PreRelease" AND NOT OVERRIDE_VERSION)
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-preview")
|
||||
elseif(KEEPASSXC_BUILD_TYPE STREQUAL "Snapshot")
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION}-snapshot")
|
||||
endif()
|
||||
|
||||
if(KEEPASSXC_BUILD_TYPE STREQUAL "Release")
|
||||
@@ -151,11 +180,16 @@ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||
set(IS_32BIT TRUE)
|
||||
endif()
|
||||
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(CLANG_COMPILER_ID_REGEX "^(Apple)?[Cc]lang$")
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$"
|
||||
OR "${CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS}" MATCHES "__clang__"
|
||||
OR "${CMAKE_C_COMPILER_ID}" MATCHES ${CLANG_COMPILER_ID_REGEX})
|
||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||
endif()
|
||||
|
||||
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$"
|
||||
OR "${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS}" MATCHES "__clang__"
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES ${CLANG_COMPILER_ID_REGEX})
|
||||
set(CMAKE_COMPILER_IS_CLANGXX 1)
|
||||
endif()
|
||||
|
||||
@@ -176,6 +210,40 @@ macro(add_gcc_compiler_flags FLAGS)
|
||||
add_gcc_compiler_cflags("${FLAGS}")
|
||||
endmacro(add_gcc_compiler_flags)
|
||||
|
||||
# Copies of above macros that first ensure the compiler understands a given flag
|
||||
# Because check_*_compiler_flag() sets -D with name, need to provide "safe" FLAGNAME
|
||||
macro(check_add_gcc_compiler_cxxflag FLAG FLAGNAME)
|
||||
check_cxx_compiler_flag("${FLAG}" CXX_HAS${FLAGNAME})
|
||||
if(CXX_HAS${FLAGNAME})
|
||||
add_gcc_compiler_cxxflags("${FLAG}")
|
||||
endif()
|
||||
endmacro(check_add_gcc_compiler_cxxflag)
|
||||
|
||||
macro(check_add_gcc_compiler_cflag FLAG FLAGNAME)
|
||||
check_c_compiler_flag("${FLAG}" CC_HAS${FLAGNAME})
|
||||
if(CC_HAS${FLAGNAME})
|
||||
add_gcc_compiler_cflags("${FLAG}")
|
||||
endif()
|
||||
endmacro(check_add_gcc_compiler_cflag)
|
||||
|
||||
# This is the "front-end" for the above macros
|
||||
# Optionally takes additional parameter(s) with language to check (currently "C" or "CXX")
|
||||
macro(check_add_gcc_compiler_flag FLAG)
|
||||
string(REGEX REPLACE "[-=]" "_" FLAGNAME "${FLAG}")
|
||||
set(check_lang_spec ${ARGN})
|
||||
list(LENGTH check_lang_spec num_extra_args)
|
||||
set(langs C CXX)
|
||||
if(num_extra_args GREATER 0)
|
||||
set(langs "${check_lang_spec}")
|
||||
endif()
|
||||
if("C" IN_LIST langs)
|
||||
check_add_gcc_compiler_cflag("${FLAG}" "${FLAGNAME}")
|
||||
endif()
|
||||
if("CXX" IN_LIST langs)
|
||||
check_add_gcc_compiler_cxxflag("${FLAG}" "${FLAGNAME}")
|
||||
endif()
|
||||
endmacro(check_add_gcc_compiler_flag)
|
||||
|
||||
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
||||
|
||||
if(WITH_APP_BUNDLE)
|
||||
@@ -188,15 +256,19 @@ add_gcc_compiler_flags("-Wformat=2 -Wmissing-format-attribute")
|
||||
add_gcc_compiler_flags("-fvisibility=hidden")
|
||||
add_gcc_compiler_cxxflags("-fvisibility-inlines-hidden")
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
||||
check_add_gcc_compiler_flag("-Wshadow-compatible-local")
|
||||
check_add_gcc_compiler_flag("-Wshadow-local")
|
||||
add_gcc_compiler_flags("-Werror")
|
||||
endif()
|
||||
|
||||
if (NOT HAIKU)
|
||||
if((CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8.999) OR CMAKE_COMPILER_IS_CLANGXX)
|
||||
add_gcc_compiler_flags("-fstack-protector-strong")
|
||||
else()
|
||||
add_gcc_compiler_flags("-fstack-protector --param=ssp-buffer-size=4")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_gcc_compiler_cxxflags("-fno-exceptions -fno-rtti")
|
||||
add_gcc_compiler_cxxflags("-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual")
|
||||
@@ -217,30 +289,25 @@ if(WITH_ASAN)
|
||||
|
||||
endif()
|
||||
|
||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER)
|
||||
if(CMAKE_BUILD_TYPE_LOWER MATCHES "(release|relwithdebinfo|minsizerel)")
|
||||
add_gcc_compiler_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
|
||||
endif()
|
||||
|
||||
check_c_compiler_flag("-Werror=format-security -Werror=implicit-function-declaration" WERROR_C_AVAILABLE)
|
||||
check_cxx_compiler_flag("-Werror=format-security" WERROR_CXX_AVAILABLE)
|
||||
if(WERROR_C_AVAILABLE AND WERROR_CXX_AVAILABLE)
|
||||
add_gcc_compiler_flags("-Werror=format-security")
|
||||
add_gcc_compiler_cflags("-Werror=implicit-function-declaration")
|
||||
endif()
|
||||
check_add_gcc_compiler_flag("-Werror=format-security")
|
||||
check_add_gcc_compiler_flag("-Werror=implicit-function-declaration" C)
|
||||
check_add_gcc_compiler_flag("-Wcast-align")
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align")
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-align")
|
||||
if(WITH_COVERAGE AND CMAKE_COMPILER_IS_CLANGXX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
|
||||
# then:
|
||||
# $ llvm-profdata merge -sparse default.profraw -o default.profdata
|
||||
# $ llvm-cov show ./tests/${the_test_binary} \
|
||||
# -format=html -instr-profile=default.profdata -output-dir=./coverages \
|
||||
# `find src -iname '*.h' -or -iname '*.cpp'`
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_COMPILER_IS_CLANGXX)
|
||||
add_gcc_compiler_flags("-Qunused-arguments")
|
||||
endif()
|
||||
check_add_gcc_compiler_flag("-Qunused-arguments")
|
||||
add_gcc_compiler_flags("-pie -fPIE")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||
@@ -251,19 +318,24 @@ endif()
|
||||
add_gcc_compiler_cflags("-std=c99")
|
||||
add_gcc_compiler_cxxflags("-std=c++11")
|
||||
|
||||
if(APPLE)
|
||||
check_add_gcc_compiler_flag("-fsized-deallocation" CXX)
|
||||
|
||||
if(APPLE AND CMAKE_COMPILER_IS_CLANGXX)
|
||||
add_gcc_compiler_cxxflags("-stdlib=libc++")
|
||||
endif()
|
||||
|
||||
if(WITH_DEV_BUILD)
|
||||
add_definitions(-DQT_DEPRECATED_WARNINGS -DGCRYPT_NO_DEPRECATED)
|
||||
else()
|
||||
add_definitions(-DQT_NO_DEPRECATED_WARNINGS)
|
||||
add_gcc_compiler_cxxflags("-Wno-deprecated-declarations")
|
||||
endif()
|
||||
|
||||
if(MINGW)
|
||||
set(CMAKE_RC_COMPILER_INIT windres)
|
||||
enable_language(RC)
|
||||
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>")
|
||||
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
||||
if(NOT (CMAKE_BUILD_TYPE_LOWER STREQUAL "debug" OR CMAKE_BUILD_TYPE_LOWER STREQUAL "relwithdebinfo"))
|
||||
# Enable DEP and ASLR
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||
@@ -288,12 +360,13 @@ if(MINGW)
|
||||
set(PLUGIN_INSTALL_DIR ".")
|
||||
set(DATA_INSTALL_DIR "share")
|
||||
elseif(APPLE AND WITH_APP_BUNDLE)
|
||||
set(CMAKE_INSTALL_MANDIR "${PROGNAME}.app/Contents/Resources/man")
|
||||
set(CLI_INSTALL_DIR "${PROGNAME}.app/Contents/MacOS")
|
||||
set(PROXY_INSTALL_DIR "${PROGNAME}.app/Contents/MacOS")
|
||||
set(BIN_INSTALL_DIR "${PROGNAME}.app/Contents/MacOS")
|
||||
set(PLUGIN_INSTALL_DIR "${PROGNAME}.app/Contents/PlugIns")
|
||||
set(DATA_INSTALL_DIR "${PROGNAME}.app/Contents/Resources")
|
||||
set(BUNDLE_INSTALL_DIR "${PROGNAME}.app/Contents")
|
||||
set(CMAKE_INSTALL_MANDIR "${BUNDLE_INSTALL_DIR}/Resources/man")
|
||||
set(CLI_INSTALL_DIR "${BUNDLE_INSTALL_DIR}/MacOS")
|
||||
set(PROXY_INSTALL_DIR "${BUNDLE_INSTALL_DIR}/MacOS")
|
||||
set(BIN_INSTALL_DIR "${BUNDLE_INSTALL_DIR}/MacOS")
|
||||
set(PLUGIN_INSTALL_DIR "${BUNDLE_INSTALL_DIR}/PlugIns")
|
||||
set(DATA_INSTALL_DIR "${BUNDLE_INSTALL_DIR}/Resources")
|
||||
else()
|
||||
include(GNUInstallDirs)
|
||||
|
||||
@@ -352,10 +425,17 @@ if(APPLE)
|
||||
set(CMAKE_MACOSX_RPATH TRUE)
|
||||
find_program(MACDEPLOYQT_EXE macdeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
|
||||
if(NOT MACDEPLOYQT_EXE)
|
||||
message(FATAL_ERROR "macdeployqt is required to build in macOS")
|
||||
message(FATAL_ERROR "macdeployqt is required to build on macOS")
|
||||
else()
|
||||
message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
|
||||
endif()
|
||||
elseif(MINGW)
|
||||
find_program(WINDEPLOYQT_EXE windeployqt HINTS ${Qt5_PREFIX}/bin ENV PATH)
|
||||
if(NOT WINDEPLOYQT_EXE)
|
||||
message(FATAL_ERROR "windeployqt is required to build on Windows")
|
||||
else()
|
||||
message(STATUS "Using windeployqt: ${WINDEPLOYQT_EXE}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Debian sets the the build type to None for package builds.
|
||||
@@ -367,6 +447,7 @@ find_package(Gcrypt 1.7.0 REQUIRED)
|
||||
find_package(Argon2 REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
find_package(QREncode REQUIRED)
|
||||
find_package(sodium 1.0.12 REQUIRED)
|
||||
|
||||
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
|
||||
|
||||
@@ -374,20 +455,7 @@ if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0")
|
||||
message(FATAL_ERROR "zlib 1.2.0 or higher is required to use the gzip format")
|
||||
endif()
|
||||
|
||||
include_directories(SYSTEM ${ARGON2_INCLUDE_DIR})
|
||||
|
||||
# Optional
|
||||
if(WITH_XC_KEESHARE)
|
||||
set(WITH_XC_KEESHARE_INSECURE ON)
|
||||
if(WITH_XC_KEESHARE_SECURE)
|
||||
# ZLIB is needed and already required
|
||||
find_package(QuaZip REQUIRED)
|
||||
include_directories(SYSTEM ${QUAZIP_INCLUDE_DIR})
|
||||
endif()
|
||||
else()
|
||||
set(WITH_XC_KEESHARE_INSECURE OFF)
|
||||
set(WITH_XC_KEESHARE_SECURE OFF)
|
||||
endif()
|
||||
include_directories(SYSTEM ${ARGON2_INCLUDE_DIR} ${sodium_INCLUDE_DIR})
|
||||
|
||||
# Optional
|
||||
if(WITH_XC_YUBIKEY)
|
||||
@@ -401,6 +469,14 @@ if(UNIX)
|
||||
int main() { prctl(PR_SET_DUMPABLE, 0); return 0; }"
|
||||
HAVE_PR_SET_DUMPABLE)
|
||||
|
||||
check_cxx_source_compiles("#include <malloc.h>
|
||||
int main() { return 0; }"
|
||||
HAVE_MALLOC_H)
|
||||
|
||||
check_cxx_source_compiles("#include <malloc.h>
|
||||
int main() { malloc_usable_size(NULL, 0); return 0; }"
|
||||
HAVE_MALLOC_USABLE_SIZE)
|
||||
|
||||
check_cxx_source_compiles("#include <sys/resource.h>
|
||||
int main() {
|
||||
struct rlimit limit;
|
||||
@@ -420,14 +496,16 @@ endif()
|
||||
|
||||
include_directories(SYSTEM ${GCRYPT_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR})
|
||||
|
||||
include(FeatureSummary)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(share)
|
||||
if(WITH_TESTS)
|
||||
add_subdirectory(tests)
|
||||
endif(WITH_TESTS)
|
||||
|
||||
if(WITH_XC_DOCS)
|
||||
add_subdirectory(docs)
|
||||
endif()
|
||||
|
||||
if(PRINT_SUMMARY)
|
||||
# This will print ENABLED, REQUIRED and DISABLED
|
||||
feature_summary(WHAT ALL)
|
||||
|
||||
319
COPYING
@@ -1,5 +1,5 @@
|
||||
KeePassXC - http://www.keepassxc.org/
|
||||
Copyright (C) 2016-2017 KeePassXC Team <team@keepassxc.org>
|
||||
Copyright (C) 2016-2020 KeePassXC Team <team@keepassxc.org>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -27,7 +27,7 @@ Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
|
||||
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
|
||||
2013, Laszlo Papp <lpapp@kde.org>
|
||||
2013, David Faure <faure@kde.org>
|
||||
2016-2018, KeePassXC Team <team@keepassxc.org>
|
||||
2016-2020, KeePassXC Team <team@keepassxc.org>
|
||||
License: GPL-2 or GPL-3
|
||||
|
||||
Comment: The "KeePassXC Team" in every copyright notice is formed by the following people:
|
||||
@@ -38,11 +38,6 @@ Comment: The "KeePassXC Team" in every copyright notice is formed by the followi
|
||||
- weslly
|
||||
Every other contributor is listed on https://github.com/keepassxreboot/keepassxc/graphs/contributors
|
||||
|
||||
Files: cmake/GNUInstallDirs.cmake
|
||||
Copyright: 2011 Nikita Krupen'ko <krnekit@gmail.com>
|
||||
2011 Kitware, Inc.
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: cmake/CodeCoverage.cmake
|
||||
Copyright: 2012 - 2015, Lars Bilke
|
||||
License: BSD-3-clause
|
||||
@@ -55,168 +50,155 @@ Files: cmake/GenerateProductVersion.cmake
|
||||
Copyright: 2015 halex2005 <akharlov@gmail.com>
|
||||
License: MIT
|
||||
|
||||
Files: share/icons/application/*/apps/keepassxc.png
|
||||
share/icons/application/scalable/apps/keepassxc.svg
|
||||
share/icons/application/*/apps/keepassxc-dark.png
|
||||
Files: share/icons/application/scalable/apps/keepassxc.svg
|
||||
share/icons/application/scalable/apps/keepassxc-dark.svg
|
||||
share/icons/application/*/apps/keepassxc-locked.png
|
||||
share/icons/application/scalable/apps/keepassxc-locked.svg
|
||||
share/icons/application/*/apps/keepassxc-unlocked.png
|
||||
share/icons/application/scalable/apps/keepassxc-unlocked.svg
|
||||
share/icons/application/*/mimetypes/application-x-keepassxc.png
|
||||
share/icons/application/scalable/mimetypes/application-x-keepassxc.svg
|
||||
Copyright: 2016, Lorenzo Stella <lorenzo.stl@gmail.com>
|
||||
License: LGPL-2
|
||||
|
||||
Files: share/icons/application/*/actions/auto-type.png
|
||||
share/icons/application/*/actions/database-change-key.png
|
||||
share/icons/application/*/actions/entry-clone.png
|
||||
share/icons/application/*/actions/entry-edit.png
|
||||
share/icons/application/*/actions/entry-new.png
|
||||
share/icons/application/*/actions/group-empty-trash.png
|
||||
share/icons/application/*/actions/help-about.png
|
||||
share/icons/application/*/actions/password-generate.png
|
||||
share/icons/database/C00_Password.png
|
||||
share/icons/database/C01_Package_Network.png
|
||||
share/icons/database/C02_MessageBox_Warning.png
|
||||
share/icons/database/C03_Server.png
|
||||
share/icons/database/C04_Klipper.png
|
||||
share/icons/database/C05_Edu_Languages.png
|
||||
share/icons/database/C06_KCMDF.png
|
||||
share/icons/database/C07_Kate.png
|
||||
share/icons/database/C08_Socket.png
|
||||
share/icons/database/C09_Identity.png
|
||||
share/icons/database/C10_Kontact.png
|
||||
share/icons/database/C11_Camera.png
|
||||
share/icons/database/C12_IRKickFlash.png
|
||||
share/icons/database/C13_KGPG_Key3.png
|
||||
share/icons/database/C14_Laptop_Power.png
|
||||
share/icons/database/C15_Scanner.png
|
||||
share/icons/database/C16_Mozilla_Firebird.png
|
||||
share/icons/database/C17_CDROM_Unmount.png
|
||||
share/icons/database/C18_Display.png
|
||||
share/icons/database/C19_Mail_Generic.png
|
||||
share/icons/database/C20_Misc.png
|
||||
share/icons/database/C21_KOrganizer.png
|
||||
share/icons/database/C22_ASCII.png
|
||||
share/icons/database/C23_Icons.png
|
||||
share/icons/database/C24_Connect_Established.png
|
||||
share/icons/database/C25_Folder_Mail.png
|
||||
share/icons/database/C26_FileSave.png
|
||||
share/icons/database/C27_NFS_Unmount.png
|
||||
share/icons/database/C28_QuickTime.png
|
||||
share/icons/database/C29_KGPG_Term.png
|
||||
share/icons/database/C30_Konsole.png
|
||||
share/icons/database/C31_FilePrint.png
|
||||
share/icons/database/C32_FSView.png
|
||||
share/icons/database/C33_Run.png
|
||||
share/icons/database/C34_Configure.png
|
||||
share/icons/database/C35_KRFB.png
|
||||
share/icons/database/C36_Ark.png
|
||||
share/icons/database/C37_KPercentage.png
|
||||
share/icons/database/C38_Samba_Unmount.png
|
||||
share/icons/database/C39_History.png
|
||||
share/icons/database/C40_Mail_Find.png
|
||||
share/icons/database/C41_VectorGfx.png
|
||||
share/icons/database/C42_KCMMemory.png
|
||||
share/icons/database/C43_EditTrash.png
|
||||
share/icons/database/C44_KNotes.png
|
||||
share/icons/database/C45_Cancel.png
|
||||
share/icons/database/C46_Help.png
|
||||
share/icons/database/C47_KPackage.png
|
||||
share/icons/database/C48_Folder.png
|
||||
share/icons/database/C49_Folder_Blue_Open.png
|
||||
share/icons/database/C50_Folder_Tar.png
|
||||
share/icons/database/C51_Decrypted.png
|
||||
share/icons/database/C52_Encrypted.png
|
||||
share/icons/database/C53_Apply.png
|
||||
share/icons/database/C54_Signature.png
|
||||
share/icons/database/C55_Thumbnail.png
|
||||
share/icons/database/C56_KAddressBook.png
|
||||
share/icons/database/C57_View_Text.png
|
||||
share/icons/database/C58_KGPG.png
|
||||
share/icons/database/C59_Package_Development.png
|
||||
share/icons/database/C60_KFM_Home.png
|
||||
share/icons/database/C61_Services.png
|
||||
Copyright: 2003-2004, David Vignoni <david@icon-king.com>
|
||||
License: LGPL-2.1
|
||||
Comment: from Nuvola icon theme
|
||||
|
||||
Files: share/icons/application/*/actions/entry-delete.png
|
||||
share/icons/application/*/actions/group-delete.png
|
||||
share/icons/application/*/actions/group-edit.png
|
||||
share/icons/application/*/actions/group-new.png
|
||||
Copyright: 2003-2004, David Vignoni <david@icon-king.com>
|
||||
2012, Felix Geyer <debfx@fobos.de>
|
||||
License: LGPL-2.1
|
||||
Comment: based on Nuvola icon theme
|
||||
|
||||
Files: share/icons/application/*/actions/favicon-download.png
|
||||
Copyright: 2003-2004, David Vignoni <david@icon-king.com>
|
||||
2018, Kyle Kneitinger <kyle@kneit.in>
|
||||
License: LGPL-2.1
|
||||
Comment: based on Nuvola icon theme
|
||||
|
||||
Files: share/icons/application/*/actions/application-exit.png
|
||||
share/icons/application/*/actions/chronometer.png
|
||||
share/icons/application/*/actions/configure.png
|
||||
share/icons/application/*/actions/dialog-close.png
|
||||
share/icons/application/*/actions/dialog-ok.png
|
||||
share/icons/application/*/actions/document-close.png
|
||||
share/icons/application/*/actions/document-edit.png
|
||||
share/icons/application/*/actions/document-encrypt.png
|
||||
share/icons/application/*/actions/document-new.png
|
||||
share/icons/application/*/actions/document-open.png
|
||||
share/icons/application/*/actions/document-properties.png
|
||||
share/icons/application/*/actions/document-save.png
|
||||
share/icons/application/*/actions/document-save-as.png
|
||||
share/icons/application/*/actions/edit-clear-locationbar-ltr.png
|
||||
share/icons/application/*/actions/edit-clear-locationbar-rtl.png
|
||||
share/icons/application/*/actions/key-enter.png
|
||||
share/icons/application/*/actions/password-generator.png
|
||||
share/icons/application/*/actions/password-copy.png
|
||||
share/icons/application/*/actions/password-show-*.png
|
||||
share/icons/application/*/actions/system-search.png
|
||||
share/icons/application/*/actions/username-copy.png
|
||||
share/icons/application/*/actions/view-history.png
|
||||
share/icons/application/*/apps/internet-web-browser.png
|
||||
share/icons/application/*/apps/preferences-desktop-icons.png
|
||||
share/icons/application/*/apps/utilities-terminal.png
|
||||
share/icons/application/*/categories/preferences-other.png
|
||||
share/icons/application/*/status/dialog-error.png
|
||||
share/icons/application/*/status/dialog-information.png
|
||||
share/icons/application/*/status/dialog-warning.png
|
||||
share/icons/application/*/status/security-high.png
|
||||
share/icons/svg/*.svg
|
||||
Copyright: 2007, Nuno Pinheiro <nuno@oxygen-icons.org>
|
||||
2007, David Vignoni <david@icon-king.com>
|
||||
2007, David Miller <miller@oxygen-icons.org>
|
||||
2007, Johann Ollivier Lapeyre <johann@oxygen-icons.org>
|
||||
2007, Kenneth Wimer <kwwii@bootsplash.org>
|
||||
2007, Riccardo Iaconelli <riccardo@oxygen-icons.org>
|
||||
License: LGPL-3+
|
||||
Comment: from Oxygen icon theme (http://www.oxygen-icons.org/)
|
||||
|
||||
Files: share/icons/database/C62_Tux.png
|
||||
share/icons/database/C63_Feather.png
|
||||
share/icons/database/C64_Apple.png
|
||||
share/icons/database/C67_Certificate.png
|
||||
share/icons/database/C68_BlackBerry.png
|
||||
Copyright: Mairin Duffy
|
||||
Sarah Owens
|
||||
James Birkett
|
||||
Dominik Reichl
|
||||
License: CC0
|
||||
Comment: C62_Tux.png from https://openclipart.org/detail/103855
|
||||
C63_Feather.png from http://openclipart.org/detail/122017
|
||||
C64_Apple.png based on http://openclipart.org/detail/24319
|
||||
C67_Certificate.png based on https://openclipart.org/detail/16729
|
||||
C68_BlackBerry.png from https://openclipart.org/detail/4465
|
||||
|
||||
Files: share/icons/database/C65_W.png
|
||||
share/icons/database/C66_Money.png
|
||||
Files: share/icons/database/C00_Password.svg
|
||||
share/icons/database/C01_Package_Network.svg
|
||||
share/icons/database/C02_MessageBox_Warning.svg
|
||||
share/icons/database/C03_Server.svg
|
||||
share/icons/database/C04_Klipper.svg
|
||||
share/icons/database/C05_Edu_Languages.svg
|
||||
share/icons/database/C06_KCMDF.svg
|
||||
share/icons/database/C08_Socket.svg
|
||||
share/icons/database/C09_Identity.svg
|
||||
share/icons/database/C10_Kontact.svg
|
||||
share/icons/database/C11_Camera.svg
|
||||
share/icons/database/C12_IRKickFlash.svg
|
||||
share/icons/database/C13_KGPG_Key3.svg
|
||||
share/icons/database/C14_Laptop_Power.svg
|
||||
share/icons/database/C15_Scanner.svg
|
||||
share/icons/database/C16_Mozilla_Firebird.svg
|
||||
share/icons/database/C19_Mail_Generic.svg
|
||||
share/icons/database/C20_Misc.svg
|
||||
share/icons/database/C21_KOrganizer.svg
|
||||
share/icons/database/C22_ASCII.svg
|
||||
share/icons/database/C23_Icons.svg
|
||||
share/icons/database/C24_Connect_Established.svg
|
||||
share/icons/database/C25_Folder_Mail.svg
|
||||
share/icons/database/C28_QuickTime.svg
|
||||
share/icons/database/C29_KGPG_Term.svg
|
||||
share/icons/database/C30_Konsole.svg
|
||||
share/icons/database/C31_FilePrint.svg
|
||||
share/icons/database/C32_FSView.svg
|
||||
share/icons/database/C33_Run.svg
|
||||
share/icons/database/C34_Configure.svg
|
||||
share/icons/database/C36_Ark.svg
|
||||
share/icons/database/C39_History.svg
|
||||
share/icons/database/C40_Mail_Find.svg
|
||||
share/icons/database/C41_VectorGfx.svg
|
||||
share/icons/database/C42_KCMMemory.svg
|
||||
share/icons/database/C43_EditTrash.svg
|
||||
share/icons/database/C47_KPackage.svg
|
||||
share/icons/database/C48_Folder.svg
|
||||
share/icons/database/C49_Folder_Blue_Open.svg
|
||||
share/icons/database/C50_Folder_Tar.svg
|
||||
share/icons/database/C55_Thumbnail.svg
|
||||
share/icons/database/C56_KAddressBook.svg
|
||||
share/icons/database/C57_View_Text.svg
|
||||
share/icons/database/C58_KGPG.svg
|
||||
share/icons/database/C59_Package_Development.svg
|
||||
share/icons/database/C60_KFM_Home.svg
|
||||
share/icons/database/C62_Tux.svg
|
||||
share/icons/database/C63_Feather.svg
|
||||
share/icons/database/C65_W.svg
|
||||
share/icons/database/C67_Certificate.svg
|
||||
share/icons/database/C68_BlackBerry.svg
|
||||
Copyright: none
|
||||
License: public-domain
|
||||
License: MIT
|
||||
Comment: Taken from https://github.com/icons8/flat-color-icons
|
||||
|
||||
Files: share/icons/badges/0_ShareActive.svg
|
||||
share/icons/badges/1_ShareInactive.svg
|
||||
share/icons/database/C07_Kate.svg
|
||||
share/icons/database/C17_CDROM_Unmount.svg
|
||||
share/icons/database/C18_Display.svg
|
||||
share/icons/database/C26_FileSave.svg
|
||||
share/icons/database/C27_NFS_Unmount.svg
|
||||
share/icons/database/C35_KRFB.svg
|
||||
share/icons/database/C38_Samba_Unmount.svg
|
||||
share/icons/database/C44_KNotes.svg
|
||||
share/icons/database/C51_Decrypted.svg
|
||||
share/icons/database/C52_Encrypted.svg
|
||||
share/icons/database/C54_Signature.svg
|
||||
share/icons/database/C66_Money.svg
|
||||
Copyright: none
|
||||
License: CC0
|
||||
Comment: Taken from https://github.com/paomedia/small-n-flat
|
||||
|
||||
Files: share/icons/badges/2_Expired.svg
|
||||
share/icons/database/C37_KPercentage.svg
|
||||
share/icons/database/C45_Cancel.svg
|
||||
share/icons/database/C46_Help.svg
|
||||
share/icons/database/C53_Apply.svg
|
||||
share/icons/database/C61_Services.svg
|
||||
Copyright: 2020 KeePassXC Team <team@keepassxc.org>
|
||||
License: MIT
|
||||
|
||||
Files: share/icons/application/scalable/actions/document-close.svg
|
||||
share/icons/application/scalable/actions/document-edit.svg
|
||||
share/icons/application/scalable/actions/document-export.svg
|
||||
share/icons/application/scalable/actions/document-import.svg
|
||||
share/icons/application/scalable/actions/document-new.svg
|
||||
share/icons/application/scalable/actions/document-open.svg
|
||||
share/icons/application/scalable/actions/document-open-recent.svg
|
||||
share/icons/application/scalable/actions/document-properties.svg
|
||||
share/icons/application/scalable/actions/document-save.svg
|
||||
share/icons/application/scalable/actions/document-save-as.svg
|
||||
share/icons/application/scalable/actions/document-save-copy.svg
|
||||
share/icons/application/scalable/actions/edit-clear-locationbar-ltr.svg
|
||||
share/icons/application/scalable/actions/edit-clear-locationbar-rtl.svg
|
||||
share/icons/application/scalable/actions/entry-clone.svg
|
||||
share/icons/application/scalable/actions/entry-delete.svg
|
||||
share/icons/application/scalable/actions/entry-edit.svg
|
||||
share/icons/application/scalable/actions/entry-new.svg
|
||||
share/icons/application/scalable/actions/favicon-download.svg
|
||||
share/icons/application/scalable/actions/group-delete.svg
|
||||
share/icons/application/scalable/actions/group-edit.svg
|
||||
share/icons/application/scalable/actions/group-empty-trash.svg
|
||||
share/icons/application/scalable/actions/group-new.svg
|
||||
share/icons/application/scalable/actions/help-about.svg
|
||||
share/icons/application/scalable/actions/key-enter.svg
|
||||
share/icons/application/scalable/actions/message-close.svg
|
||||
share/icons/application/scalable/actions/move-down.svg
|
||||
share/icons/application/scalable/actions/move-up.svg
|
||||
share/icons/application/scalable/actions/paperclip.svg
|
||||
share/icons/application/scalable/actions/password-copy.svg
|
||||
share/icons/application/scalable/actions/password-generate.svg
|
||||
share/icons/application/scalable/actions/password-generator.svg
|
||||
share/icons/application/scalable/actions/password-show-off.svg
|
||||
share/icons/application/scalable/actions/password-show-on.svg
|
||||
share/icons/application/scalable/actions/refresh.svg
|
||||
share/icons/application/scalable/actions/reports.svg
|
||||
share/icons/application/scalable/actions/reports-exclude.svg
|
||||
share/icons/application/scalable/actions/statistics.svg
|
||||
share/icons/application/scalable/actions/system-help.svg
|
||||
share/icons/application/scalable/actions/system-search.svg
|
||||
share/icons/application/scalable/actions/url-copy.svg
|
||||
share/icons/application/scalable/actions/username-copy.svg
|
||||
share/icons/application/scalable/actions/view-history.svg
|
||||
share/icons/application/scalable/apps/internet-web-browser.svg
|
||||
share/icons/application/scalable/apps/keepassxc.svg
|
||||
share/icons/application/scalable/apps/keepassxc-dark.svg
|
||||
share/icons/application/scalable/apps/keepassxc-locked.svg
|
||||
share/icons/application/scalable/apps/keepassxc-unlocked.svg
|
||||
share/icons/application/scalable/apps/preferences-desktop-icons.svg
|
||||
share/icons/application/scalable/apps/preferences-system-network-sharing.svg
|
||||
share/icons/application/scalable/apps/utilities-terminal.svg
|
||||
share/icons/application/scalable/categories/preferences-other.svg
|
||||
share/icons/application/scalable/mimetypes/application-x-keepassxc.svg
|
||||
share/icons/application/scalable/status/dialog-error.svg
|
||||
share/icons/application/scalable/status/dialog-information.svg
|
||||
share/icons/application/scalable/status/dialog-warning.svg
|
||||
share/icons/application/scalable/status/security-high.svg
|
||||
Copyright: 2019 Austin Andrews <http://templarian.com/>
|
||||
License: SIL OPEN FONT LICENSE Version 1.1
|
||||
Comment: Taken from Material Design icon set (https://github.com/templarian/MaterialDesign/)
|
||||
|
||||
Files: src/streams/qtiocompressor.*
|
||||
src/streams/QtIOCompressor
|
||||
@@ -224,10 +206,6 @@ Files: src/streams/qtiocompressor.*
|
||||
Copyright: 2009-2012, Nokia Corporation and/or its subsidiary(-ies)
|
||||
License: LGPL-2.1 or GPL-3
|
||||
|
||||
Files: cmake/GetGitRevisionDescription.cmake*
|
||||
Copyright: 2009-2010, Iowa State University
|
||||
License: Boost-1.0
|
||||
|
||||
Files: src/zxcvbn/zxcvbn.*
|
||||
Copyright: 2015-2017, Tony Evans
|
||||
License: MIT
|
||||
@@ -238,6 +216,15 @@ Copyright: 2011 Aurélien Gâteau <agateau@kde.org>
|
||||
2014 Dominik Haumann <dhaumann@kde.org>
|
||||
License: LGPL-2.1
|
||||
|
||||
Files: share/macosx/dmg-background.tiff
|
||||
Files: share/macosx/background.tiff
|
||||
Copyright: 2008-2014, Andrey Tarantsov
|
||||
License: MIT
|
||||
|
||||
Files: share/icons/application/scalable/apps/freedesktop.svg
|
||||
Copyright: GPL-2+
|
||||
Comment: from Freedesktop.org website
|
||||
|
||||
Files: share/icons/application/scalable/actions/hibp.svg
|
||||
share/icons/database/C64_Apple.svg
|
||||
Copyright: GPL-2+
|
||||
Comment: from the Simple Icons repo (https://github.com/simple-icons/simple-icons/)
|
||||
|
||||
97
Dockerfile
@@ -1,97 +0,0 @@
|
||||
# KeePassXC Linux Release Build Dockerfile
|
||||
# Copyright (C) 2017-2018 KeePassXC team <https://keepassxc.org/>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
FROM ubuntu:14.04
|
||||
|
||||
ENV REBUILD_COUNTER=10
|
||||
|
||||
ENV QT5_VERSION=qt510
|
||||
ENV QT5_PPA_VERSION=qt-5.10.1
|
||||
ENV TERM=xterm-256color
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update -y \
|
||||
&& apt-get -y install software-properties-common
|
||||
|
||||
RUN set -x \
|
||||
&& add-apt-repository ppa:beineri/opt-${QT5_PPA_VERSION}-trusty \
|
||||
&& add-apt-repository ppa:phoerious/keepassxc
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update -y \
|
||||
&& apt-get upgrade -y
|
||||
|
||||
# build and runtime dependencies
|
||||
RUN set -x \
|
||||
&& apt-get install -y \
|
||||
cmake3 \
|
||||
curl \
|
||||
g++ \
|
||||
git \
|
||||
libgcrypt20-18-dev \
|
||||
libargon2-0-dev \
|
||||
libsodium-dev \
|
||||
libcurl-no-gcrypt-dev \
|
||||
${QT5_VERSION}base \
|
||||
${QT5_VERSION}tools \
|
||||
${QT5_VERSION}x11extras \
|
||||
${QT5_VERSION}translations \
|
||||
${QT5_VERSION}imageformats \
|
||||
${QT5_VERSION}svg \
|
||||
zlib1g-dev \
|
||||
libxi-dev \
|
||||
libxtst-dev \
|
||||
# ubuntu:14.04 has no quazip (it's optional)
|
||||
# libquazip5-dev \
|
||||
mesa-common-dev \
|
||||
libyubikey-dev \
|
||||
libykpers-1-dev \
|
||||
libqrencode-dev \
|
||||
xclip \
|
||||
xvfb
|
||||
|
||||
ENV PATH="/opt/${QT5_VERSION}/bin:${PATH}"
|
||||
ENV CMAKE_PREFIX_PATH="/opt/${QT5_VERSION}/lib/cmake"
|
||||
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
||||
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
||||
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
||||
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/${QT5_VERSION}/lib"
|
||||
|
||||
RUN set -x \
|
||||
&& echo "/opt/${QT5_VERSION}/lib" > /etc/ld.so.conf.d/${QT5_VERSION}.conf \
|
||||
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
||||
|
||||
# AppImage dependencies
|
||||
RUN set -x \
|
||||
&& apt-get install -y \
|
||||
curl \
|
||||
libfuse2
|
||||
|
||||
RUN set -x \
|
||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" > /usr/bin/linuxdeploy \
|
||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" > /usr/bin/linuxdeploy-plugin-qt \
|
||||
&& curl -L "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" > /usr/bin/appimagetool \
|
||||
&& chmod +x /usr/bin/linuxdeploy \
|
||||
&& chmod +x /usr/bin/linuxdeploy-plugin-qt \
|
||||
&& chmod +x /usr/bin/appimagetool
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get autoremove --purge \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
VOLUME /keepassxc/src
|
||||
VOLUME /keepassxc/out
|
||||
WORKDIR /keepassxc
|
||||
45
INSTALL.md
@@ -2,12 +2,9 @@ Build and Install KeePassXC
|
||||
=================
|
||||
|
||||
This document will guide you through the steps to build and install KeePassXC from source.
|
||||
You can visit the online version of this document at the following link:
|
||||
For more information, see also the [_Building KeePassXC_](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC) page on the wiki.
|
||||
|
||||
https://github.com/keepassxreboot/keepassx/wiki/Install-Instruction-from-Source
|
||||
|
||||
The [KeePassXC QuickStart](./docs/QUICKSTART.md) gets you started using KeePassXC on your
|
||||
Windows, Mac, or Linux computer using the pre-built binaries.
|
||||
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, or Linux computer using pre-compiled binaries from the [downloads page](https://keepassxc.org/download).
|
||||
|
||||
Build Dependencies
|
||||
==================
|
||||
@@ -17,6 +14,7 @@ The following tools must exist within your PATH:
|
||||
* make
|
||||
* cmake (>= 2.8.12)
|
||||
* g++ (>= 4.7) or clang++ (>= 3.0)
|
||||
* asciidoctor (on Linux/MacOS)
|
||||
|
||||
The following libraries are required:
|
||||
|
||||
@@ -25,15 +23,17 @@ The following libraries are required:
|
||||
* zlib
|
||||
* libmicrohttpd
|
||||
* libxi, libxtst, qtx11extras (optional for auto-type on X11)
|
||||
* libsodium (>= 1.0.12, optional for KeePassXC-Browser support)
|
||||
* libsodium (>= 1.0.12)
|
||||
* libargon2
|
||||
* qrencode
|
||||
* yubikey ykpers (optional to support YubiKey)
|
||||
|
||||
Prepare the Building Environment
|
||||
================================
|
||||
|
||||
* [Building Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
|
||||
* [Building Environment on Windows](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Windows)
|
||||
* [Building Environment on MacOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-OS-X)
|
||||
* [Building Environment on MacOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-macOS)
|
||||
|
||||
Build Steps
|
||||
===========
|
||||
@@ -68,7 +68,6 @@ git checkout master
|
||||
Navigate to the directory where you have downloaded KeePassXC and type these commands:
|
||||
|
||||
```
|
||||
cd directory-where-sources-live
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DWITH_XC_ALL=ON ..
|
||||
@@ -97,18 +96,27 @@ These steps place the compiled KeePassXC binary inside the `./build/src/` direct
|
||||
-DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
|
||||
-DWITH_XC_YUBIKEY=[ON|OFF] Enable/Disable YubiKey HMAC-SHA1 authentication support (default: OFF)
|
||||
-DWITH_XC_BROWSER=[ON|OFF] Enable/Disable KeePassXC-Browser extension support (default: OFF)
|
||||
-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (favicon download) (default: OFF)
|
||||
-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)
|
||||
-DWITH_XC_SSHAGENT=[ON|OFF] Enable/Disable SSHAgent support (default: OFF)
|
||||
-DWITH_XC_KEESHARE=[ON|OFF] Enable/Disable KeeShare group syncronization extension (default: OFF)
|
||||
-DWITH_XC_TOUCHID=[ON|OFF] (macOS Only) Enable/Disable Touch ID unlock (default:OFF)
|
||||
-DWITH_XC_FDOSECRETS=[ON|OFF] (Linux Only) Enable/Disable Freedesktop.org Secrets Service support (default:OFF)
|
||||
-DWITH_XC_KEESHARE=[ON|OFF] Enable/Disable KeeShare group synchronization extension (default: OFF)
|
||||
-DWITH_XC_KEESHARE_SECURE=[ON|OFF] Enable/Disable KeeShare signed containers, requires libquazip5 (default: OFF)
|
||||
-DWITH_XC_ALL=[ON|OFF] Enable/Disable compiling all plugins above (default: OFF)
|
||||
-DWITH_XC_KEESHARE_SECURE=[ON|OFF] Enable/Disable KeeShare secure containers, requires libquazip5 (default: OFF)
|
||||
|
||||
-DWITH_XC_UPDATECHECK=[ON|OFF] Enable/Disable automatic updating checking (requires WITH_XC_NETWORKING) (default: ON)
|
||||
|
||||
-DWITH_TESTS=[ON|OFF] Enable/Disable building of unit tests (default: ON)
|
||||
-DWITH_GUI_TESTS=[ON|OFF] Enable/Disable building of GUI tests (default: OFF)
|
||||
-DWITH_DEV_BUILD=[ON|OFF] Enable/Disable deprecated method warnings (default: OFF)
|
||||
-DWITH_ASAN=[ON|OFF] Enable/Disable address sanitizer checks (Linux / macOS only) (default: OFF)
|
||||
-DWITH_COVERAGE=[ON|OFF] Enable/Disable coverage tests (GCC only) (default: OFF)
|
||||
-DWITH_APP_BUNDLE=[ON|OFF] Enable Application Bundle for macOS (default: ON)
|
||||
|
||||
-DKEEPASSXC_BUILD_TYPE=[Snapshot|PreRelease|Release] Set the build type to show/hide stability warnings (default: "Snapshot")
|
||||
-DKEEPASSXC_DIST_TYPE=[Snap|AppImage|Other] Specify the distribution method (default: "Other")
|
||||
-DOVERRIDE_VERSION=[X.X.X] Specify a version number when building. Used with snapshot builds (default: "")
|
||||
-DGIT_HEAD_OVERRIDE=[XXXXXXX] Specify the 7 digit git commit ref for this build. Used with distribution builds (default: "")
|
||||
```
|
||||
|
||||
* If you are on MacOS you must add this parameter to **Cmake**, with the Qt version you have installed<br/> `-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake/`
|
||||
@@ -133,18 +141,21 @@ DESTDIR=X
|
||||
Packaging
|
||||
=========
|
||||
|
||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..)
|
||||
```
|
||||
make package
|
||||
```
|
||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..). Refer to [keepassxc-packaging](https://github.com/keepassxreboot/keepassxc-packaging)
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
You can perform test on the executable
|
||||
You can perform tests on the built executables with:
|
||||
```
|
||||
make test
|
||||
make test ARGS+="--output-on-failure"
|
||||
```
|
||||
|
||||
If you are not currently running on an X Server or Wayland, run the tests as follows:
|
||||
```
|
||||
make test ARGS+="-E test\(cli\|gui\) --output-on-failure"
|
||||
xvfb-run -e errors -a --server-args="-screen 0 1024x768x24" make test ARGS+="-R test\(cli\|gui\) --output-on-failure"
|
||||
```
|
||||
|
||||
Common parameters:
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
96
LICENSE.OFL
Normal file
@@ -0,0 +1,96 @@
|
||||
Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/),
|
||||
with Reserved Font Name Material Design Icons.
|
||||
Copyright (c) 2014, Google (http://www.google.com/design/)
|
||||
uses the license at https://github.com/google/material-design-icons/blob/master/LICENSE
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
80
README.md
@@ -1,56 +1,54 @@
|
||||
# <img src="https://keepassxc.org/logo.png" width="40" height="40"/> KeePassXC
|
||||
[/statusIcon)](https://ci.keepassxc.org/?guest=1) [](https://codecov.io/gh/keepassxreboot/keepassxc)
|
||||
# <img src="https://keepassxc.org/images/keepassxc-logo.svg" width="40" height="40"/> KeePassXC
|
||||
[/statusIcon)](https://ci.keepassxc.org/?guest=1)
|
||||
[](https://codecov.io/gh/keepassxreboot/keepassxc)
|
||||
[](https://github.com/keepassxreboot/keepassxc/releases/)
|
||||
|
||||
## About KeePassXC
|
||||
[KeePassXC](https://keepassxc.org) is a cross-platform community fork of
|
||||
[KeePassX](https://www.keepassx.org/).
|
||||
Our goal is to extend and improve it with new features and bugfixes
|
||||
to provide a feature-rich, fully cross-platform and modern
|
||||
open-source password manager.
|
||||
[KeePassXC](https://keepassxc.org) is a modern open-source password manager. It is used to store and manage information such as URLs, usernames, passwords, and so on for various accounts on your web and desktop applications. KeePassXC stores all data in an encrypted database format while still providing secure access to that information. KeePassXC is helpful for people with extremely high demands of secure personal data management.
|
||||
|
||||
## Installation
|
||||
The [KeePassXC QuickStart](./docs/QUICKSTART.md) gets you started using
|
||||
KeePassXC on your Windows, Mac, or Linux computer using pre-compiled binaries
|
||||
from the [downloads page](https://keepassxc.org/download).
|
||||
## Quick Start
|
||||
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, or Linux computer using pre-compiled binaries from the [downloads page](https://keepassxc.org/download). Additionally, individual Linux distributions may ship their own versions, so please check your distribution's package list to see if KeePassXC is available. Detailed documentation is available in the [User Guide](https://keepassxc.org/docs/KeePassXC_UserGuide.html).
|
||||
|
||||
Additionally, individual Linux distributions may ship their own versions,
|
||||
so please check out your distribution's package list to see if KeePassXC is available.
|
||||
## Features List
|
||||
KeePassXC has numerous features for novice and power users alike. This guide will go over the basic features to get you up and running quickly. The User Guide contains more in-depth discussions on the major features in the application.
|
||||
|
||||
## Additional features compared to KeePassX
|
||||
- Auto-Type on all three major platforms (Linux, Windows, macOS)
|
||||
- Twofish encryption
|
||||
- YubiKey challenge-response support
|
||||
- TOTP generation
|
||||
- CSV import
|
||||
- Command line interface
|
||||
- DEP and ASLR hardening
|
||||
- Stand-alone password and passphrase generator
|
||||
- Password strength meter
|
||||
- Using website favicons as entry icons
|
||||
- Merging of databases
|
||||
- Automatic reload when the database changed on disk
|
||||
- Browser integration with KeePassXC-Browser using [native messaging](https://developer.chrome.com/extensions/nativeMessaging) for [Mozilla Firefox](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) and [Google Chrome or Chromium](https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk)
|
||||
- Synchronize passwords using KeeShare. See [Using Sharing](./docs/QUICKSTART.md#using-sharing) for more details.
|
||||
- Many bug fixes
|
||||
### Basic
|
||||
* Create, open, and save databases in the KDBX format (KeePass Compatible)
|
||||
* Store sensitive information in entries that are organized by groups
|
||||
* Search for entries
|
||||
* Password generator
|
||||
* Auto-Type passwords into applications
|
||||
* Browser integration with Google Chrome, Mozilla Firefox, Microsoft Edge, Chromium, Vivaldi, Brave, and Tor-Browser
|
||||
* Entry icon download
|
||||
* Import databases from CSV, 1Password, and KeePass1 formats
|
||||
|
||||
For a full list of features and changes, read the [CHANGELOG](CHANGELOG) document.
|
||||
### Advanced
|
||||
* Database reports (password health, HIBP, and statistics)
|
||||
* Database export to CSV and HTML formats
|
||||
* TOTP storage and generation
|
||||
* Field references between entries
|
||||
* File attachments and custom attributes
|
||||
* Entry history and data restoration
|
||||
* YubiKey/OnlyKey challenge-response support
|
||||
* Command line interface (keepassxc-cli)
|
||||
* Auto-Open databases
|
||||
* KeeShare shared databases (import, export, and synchronize)
|
||||
* SSH Agent
|
||||
* FreeDesktop.org Secret Service (replace Gnome keyring, etc.)
|
||||
* Additional encryption choices: Twofish and ChaCha20
|
||||
|
||||
For a full list of changes, read the [CHANGELOG](CHANGELOG.md) document. \
|
||||
For a full list of keyboard shortcuts, see [KeyboardShortcuts.adoc](./docs/topics/KeyboardShortcuts.adoc)
|
||||
|
||||
## Building KeePassXC
|
||||
|
||||
Detailed instructions are available in the [Build and Install](./INSTALL.md)
|
||||
page or on the [Wiki page](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).
|
||||
Detailed instructions are available in the [Build and Install](./INSTALL.md) page and in the [Wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).
|
||||
|
||||
## Contributing
|
||||
|
||||
We are always looking for suggestions how to improve our application.
|
||||
If you find any bugs or have an idea for a new feature, please let us know by
|
||||
opening a report in our [issue tracker](https://github.com/keepassxreboot/keepassxc/issues)
|
||||
on GitHub or join us on IRC on freenode channels #keepassxc or #keepassxc-dev.
|
||||
We are always looking for suggestions on how to improve KeePassXC. If you find any bugs or have an idea for a new feature, please let us know by opening a report in the [issue tracker](https://github.com/keepassxreboot/keepassxc/issues) on GitHub or join us on IRC in [freenode](https://webchat.freenode.net/) channels #keepassxc and #keepassxc-dev.
|
||||
|
||||
You can of course also directly contribute your own code. We are happy to accept your pull requests.
|
||||
|
||||
Please read the [CONTRIBUTING document](.github/CONTRIBUTING.md) for further information.
|
||||
You may directly contribute your own code by submitting a pull request. Please read the [CONTRIBUTING](.github/CONTRIBUTING.md) document for further information.
|
||||
|
||||
## License
|
||||
|
||||
GPL-2 or GPL-3
|
||||
KeePassXC code is licensed under GPL-2 or GPL-3. Additional licensing for third-party files is detailed in [COPYING](./COPYING).
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
# KeePassXC Linux Release Build Dockerfile
|
||||
# Copyright (C) 2017 KeePassXC team <https://keepassxc.org/>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# TIP: check this Dockerfile using this online tool: https://www.fromlatest.io
|
||||
|
||||
FROM ubuntu:14.04
|
||||
|
||||
ENV REBUILD_COUNTER=5
|
||||
|
||||
ENV QT5_VERSION=qt53
|
||||
ENV QT5_PPA_VERSION=${QT5_VERSION}2
|
||||
ENV TERM=xterm-256color
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get update -y \
|
||||
&& apt-get -y install software-properties-common
|
||||
|
||||
RUN set -x \
|
||||
&& add-apt-repository ppa:beineri/opt-${QT5_PPA_VERSION}-trusty \
|
||||
&& add-apt-repository ppa:phoerious/keepassxc
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get -y update \
|
||||
&& apt-get -y --no-install-recommends install \
|
||||
build-essential \
|
||||
clang-3.6 \
|
||||
libclang-common-3.6-dev \
|
||||
clang-format-3.6 \
|
||||
llvm-3.6 \
|
||||
cmake3 \
|
||||
make \
|
||||
libgcrypt20-18-dev \
|
||||
libargon2-0-dev \
|
||||
libsodium-dev \
|
||||
libcurl-no-gcrypt-dev \
|
||||
${QT5_VERSION}base \
|
||||
${QT5_VERSION}tools \
|
||||
${QT5_VERSION}x11extras \
|
||||
${QT5_VERSION}translations \
|
||||
${QT5_VERSION}svg \
|
||||
zlib1g-dev \
|
||||
libyubikey-dev \
|
||||
libykpers-1-dev \
|
||||
# ubuntu:14.04 has no quazip (it's optional)
|
||||
# libquazip5-dev \
|
||||
libxi-dev \
|
||||
libxtst-dev \
|
||||
libqrencode-dev \
|
||||
xclip \
|
||||
xvfb
|
||||
|
||||
ENV PATH="/opt/${QT5_VERSION}/bin:${PATH}"
|
||||
ENV CMAKE_PREFIX_PATH="/opt/${QT5_VERSION}/lib/cmake"
|
||||
ENV CMAKE_INCLUDE_PATH="/opt/keepassxc-libs/include"
|
||||
ENV CMAKE_LIBRARY_PATH="/opt/keepassxc-libs/lib/x86_64-linux-gnu"
|
||||
ENV CPATH="${CMAKE_INCLUDE_PATH}"
|
||||
ENV LD_LIBRARY_PATH="${CMAKE_LIBRARY_PATH}:/opt/${QT5_VERSION}/lib"
|
||||
|
||||
RUN set -x \
|
||||
&& echo "/opt/${QT5_VERSION}/lib" > /etc/ld.so.conf.d/${QT5_VERSION}.conf \
|
||||
&& echo "/opt/keepassxc-libs/lib/x86_64-linux-gnu" > /etc/ld.so.conf.d/keepassxc.conf
|
||||
|
||||
# AppImage dependencies
|
||||
RUN set -x \
|
||||
&& apt-get install -y \
|
||||
curl \
|
||||
libfuse2
|
||||
|
||||
RUN set -x \
|
||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" > /usr/bin/linuxdeploy \
|
||||
&& curl -L "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" > /usr/bin/linuxdeploy-plugin-qt \
|
||||
&& curl -L "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" > /usr/bin/appimagetool \
|
||||
&& chmod +x /usr/bin/linuxdeploy \
|
||||
&& chmod +x /usr/bin/linuxdeploy-plugin-qt \
|
||||
&& chmod +x /usr/bin/appimagetool
|
||||
|
||||
RUN set -x \
|
||||
&& apt-get autoremove --purge \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
VOLUME ["/keepassxc"]
|
||||
WORKDIR /keepassxc
|
||||
@@ -19,7 +19,7 @@ set(EXCLUDED_DIRS
|
||||
# objective-c directories
|
||||
src/touchid/
|
||||
src/autotype/mac/
|
||||
src/gui/macutils/)
|
||||
src/gui/osutils/macutils/)
|
||||
|
||||
set(EXCLUDED_FILES
|
||||
# third-party files
|
||||
|
||||
@@ -112,7 +112,7 @@ mark_as_advanced(
|
||||
CMAKE_EXE_LINKER_FLAGS_COVERAGE
|
||||
CMAKE_SHARED_LINKER_FLAGS_COVERAGE )
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
if(NOT CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
||||
message(WARNING "Code coverage results with an optimised (non-Debug) build may be misleading")
|
||||
endif() # NOT CMAKE_BUILD_TYPE STREQUAL "Debug"
|
||||
|
||||
|
||||
@@ -1,41 +1,24 @@
|
||||
# QUAZIP_FOUND - QuaZip library was found
|
||||
# QUAZIP_INCLUDE_DIR - Path to QuaZip include dir
|
||||
# QUAZIP_INCLUDE_DIRS - Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR)
|
||||
# QUAZIP_LIBRARIES - List of QuaZip libraries
|
||||
# QUAZIP_ZLIB_INCLUDE_DIR - The include dir of zlib headers
|
||||
# QUAZIP_FOUND - QuaZip library was found
|
||||
# QUAZIP_INCLUDE_DIR - Path to QuaZip include dir
|
||||
# QUAZIP_INCLUDE_DIRS - Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR)
|
||||
# QUAZIP_LIBRARIES - List of QuaZip libraries
|
||||
# QUAZIP_ZLIB_INCLUDE_DIR - The include dir of zlib headers
|
||||
|
||||
IF(QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES)
|
||||
# in cache already
|
||||
SET(QUAZIP_FOUND TRUE)
|
||||
ELSE(QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES)
|
||||
IF(Qt5Core_FOUND)
|
||||
set(QUAZIP_LIB_VERSION_SUFFIX 5)
|
||||
ENDIF()
|
||||
IF(WIN32)
|
||||
FIND_PATH(QUAZIP_LIBRARY_DIR
|
||||
WIN32_DEBUG_POSTFIX d
|
||||
NAMES libquazip${QUAZIP_LIB_VERSION_SUFFIX}.dll
|
||||
HINTS "C:/Programme/" "C:/Program Files"
|
||||
PATH_SUFFIXES QuaZip/lib
|
||||
if(MINGW)
|
||||
find_library(QUAZIP_LIBRARIES libquazip5)
|
||||
find_path(QUAZIP_INCLUDE_DIR quazip.h PATH_SUFFIXES quazip5)
|
||||
find_path(QUAZIP_ZLIB_INCLUDE_DIR zlib.h)
|
||||
else()
|
||||
find_library(QUAZIP_LIBRARIES
|
||||
NAMES quazip5 quazip
|
||||
PATHS /usr/lib /usr/lib64 /usr/local/lib
|
||||
)
|
||||
FIND_LIBRARY(QUAZIP_LIBRARIES NAMES libquazip${QUAZIP_LIB_VERSION_SUFFIX}.dll HINTS ${QUAZIP_LIBRARY_DIR})
|
||||
FIND_PATH(QUAZIP_INCLUDE_DIR NAMES quazip.h HINTS ${QUAZIP_LIBRARY_DIR}/../ PATH_SUFFIXES include/quazip5)
|
||||
FIND_PATH(QUAZIP_ZLIB_INCLUDE_DIR NAMES zlib.h)
|
||||
ELSE(WIN32)
|
||||
FIND_PACKAGE(PkgConfig)
|
||||
pkg_check_modules(PC_QUAZIP quazip)
|
||||
FIND_LIBRARY(QUAZIP_LIBRARIES
|
||||
WIN32_DEBUG_POSTFIX d
|
||||
NAMES quazip${QUAZIP_LIB_VERSION_SUFFIX}
|
||||
HINTS /usr/lib /usr/lib64
|
||||
find_path(QUAZIP_INCLUDE_DIR quazip.h
|
||||
PATHS /usr/include /usr/local/include
|
||||
PATH_SUFFIXES quazip5 quazip
|
||||
)
|
||||
FIND_PATH(QUAZIP_INCLUDE_DIR quazip.h
|
||||
HINTS /usr/include /usr/local/include
|
||||
PATH_SUFFIXES quazip${QUAZIP_LIB_VERSION_SUFFIX}
|
||||
)
|
||||
FIND_PATH(QUAZIP_ZLIB_INCLUDE_DIR zlib.h HINTS /usr/include /usr/local/include)
|
||||
ENDIF(WIN32)
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
SET(QUAZIP_INCLUDE_DIRS ${QUAZIP_INCLUDE_DIR} ${QUAZIP_ZLIB_INCLUDE_DIR})
|
||||
find_package_handle_standard_args(QUAZIP DEFAULT_MSG QUAZIP_LIBRARIES QUAZIP_INCLUDE_DIR QUAZIP_ZLIB_INCLUDE_DIR QUAZIP_INCLUDE_DIRS)
|
||||
ENDIF(QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES)
|
||||
find_path(QUAZIP_ZLIB_INCLUDE_DIR zlib.h PATHS /usr/include /usr/local/include)
|
||||
endif()
|
||||
include(FindPackageHandleStandardArgs)
|
||||
set(QUAZIP_INCLUDE_DIRS ${QUAZIP_INCLUDE_DIR} ${QUAZIP_ZLIB_INCLUDE_DIR})
|
||||
find_package_handle_standard_args(QUAZIP DEFAULT_MSG QUAZIP_LIBRARIES QUAZIP_INCLUDE_DIR QUAZIP_ZLIB_INCLUDE_DIR QUAZIP_INCLUDE_DIRS)
|
||||
|
||||
50
cmake/FindReadline.cmake
Normal file
@@ -0,0 +1,50 @@
|
||||
# Code copied from sethhall@github
|
||||
#
|
||||
# - Try to find readline include dirs and libraries
|
||||
#
|
||||
# Usage of this module as follows:
|
||||
#
|
||||
# find_package(Readline)
|
||||
#
|
||||
# Variables used by this module, they can change the default behaviour and need
|
||||
# to be set before calling find_package:
|
||||
#
|
||||
# Readline_ROOT_DIR Set this variable to the root installation of
|
||||
# readline if the module has problems finding the
|
||||
# proper installation path.
|
||||
#
|
||||
# Variables defined by this module:
|
||||
#
|
||||
# READLINE_FOUND System has readline, include and lib dirs found
|
||||
# Readline_INCLUDE_DIR The readline include directories.
|
||||
# Readline_LIBRARY The readline library.
|
||||
|
||||
find_path(Readline_ROOT_DIR
|
||||
NAMES include/readline/readline.h
|
||||
)
|
||||
|
||||
find_path(Readline_INCLUDE_DIR
|
||||
NAMES readline/readline.h
|
||||
HINTS ${Readline_ROOT_DIR}/include
|
||||
)
|
||||
|
||||
find_library(Readline_LIBRARY
|
||||
NAMES readline
|
||||
HINTS ${Readline_ROOT_DIR}/lib
|
||||
)
|
||||
|
||||
if(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
|
||||
set(READLINE_FOUND TRUE)
|
||||
else(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
|
||||
find_library(Readline_LIBRARY NAMES readline)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY )
|
||||
mark_as_advanced(Readline_INCLUDE_DIR Readline_LIBRARY)
|
||||
endif(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
|
||||
|
||||
mark_as_advanced(
|
||||
Readline_ROOT_DIR
|
||||
Readline_INCLUDE_DIR
|
||||
Readline_LIBRARY
|
||||
)
|
||||
|
||||
@@ -1,188 +0,0 @@
|
||||
# - Define GNU standard installation directories
|
||||
# Provides install directory variables as defined for GNU software:
|
||||
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
|
||||
# Inclusion of this module defines the following variables:
|
||||
# CMAKE_INSTALL_<dir> - destination for files of a given type
|
||||
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
|
||||
# where <dir> is one of:
|
||||
# BINDIR - user executables (bin)
|
||||
# SBINDIR - system admin executables (sbin)
|
||||
# LIBEXECDIR - program executables (libexec)
|
||||
# SYSCONFDIR - read-only single-machine data (etc)
|
||||
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
|
||||
# LOCALSTATEDIR - modifiable single-machine data (var)
|
||||
# LIBDIR - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
|
||||
# INCLUDEDIR - C header files (include)
|
||||
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
|
||||
# DATAROOTDIR - read-only architecture-independent data root (share)
|
||||
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
|
||||
# INFODIR - info documentation (DATAROOTDIR/info)
|
||||
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
|
||||
# MANDIR - man documentation (DATAROOTDIR/man)
|
||||
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
|
||||
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
|
||||
# install() commands for the corresponding file type. If the includer does
|
||||
# not define a value the above-shown default will be used and the value will
|
||||
# appear in the cache for editing by the user.
|
||||
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
|
||||
# from the corresponding destination by prepending (if necessary) the value
|
||||
# of CMAKE_INSTALL_PREFIX.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
|
||||
# Copyright 2011 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
# Installation directories
|
||||
#
|
||||
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
|
||||
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
|
||||
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
|
||||
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
|
||||
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
|
||||
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
|
||||
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
|
||||
set(_LIBDIR_DEFAULT "lib")
|
||||
# Override this default 'lib' with 'lib64' iff:
|
||||
# - we are on Linux system but NOT cross-compiling
|
||||
# - we are NOT on debian
|
||||
# - we are on a 64 bits system
|
||||
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
|
||||
# For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
|
||||
# CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
|
||||
# See http://wiki.debian.org/Multiarch
|
||||
if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
|
||||
AND NOT CMAKE_CROSSCOMPILING)
|
||||
if (EXISTS "/etc/debian_version") # is this a debian system ?
|
||||
if(CMAKE_LIBRARY_ARCHITECTURE)
|
||||
set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
|
||||
endif()
|
||||
else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
|
||||
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
|
||||
message(AUTHOR_WARNING
|
||||
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
|
||||
"Please enable at least one language before including GNUInstallDirs.")
|
||||
else()
|
||||
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
|
||||
set(_LIBDIR_DEFAULT "lib64")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
|
||||
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
|
||||
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
|
||||
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
|
||||
# the cache and store the defaults in local variables if the cache values are
|
||||
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
|
||||
|
||||
if(NOT CMAKE_INSTALL_DATADIR)
|
||||
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
|
||||
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_INSTALL_INFODIR)
|
||||
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
|
||||
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_INSTALL_LOCALEDIR)
|
||||
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
|
||||
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_INSTALL_MANDIR)
|
||||
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
|
||||
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_INSTALL_DOCDIR)
|
||||
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
|
||||
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
|
||||
endif()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
mark_as_advanced(
|
||||
CMAKE_INSTALL_BINDIR
|
||||
CMAKE_INSTALL_SBINDIR
|
||||
CMAKE_INSTALL_LIBEXECDIR
|
||||
CMAKE_INSTALL_SYSCONFDIR
|
||||
CMAKE_INSTALL_SHAREDSTATEDIR
|
||||
CMAKE_INSTALL_LOCALSTATEDIR
|
||||
CMAKE_INSTALL_LIBDIR
|
||||
CMAKE_INSTALL_INCLUDEDIR
|
||||
CMAKE_INSTALL_OLDINCLUDEDIR
|
||||
CMAKE_INSTALL_DATAROOTDIR
|
||||
CMAKE_INSTALL_DATADIR
|
||||
CMAKE_INSTALL_INFODIR
|
||||
CMAKE_INSTALL_LOCALEDIR
|
||||
CMAKE_INSTALL_MANDIR
|
||||
CMAKE_INSTALL_DOCDIR
|
||||
)
|
||||
|
||||
# Result directories
|
||||
#
|
||||
foreach(dir
|
||||
BINDIR
|
||||
SBINDIR
|
||||
LIBEXECDIR
|
||||
SYSCONFDIR
|
||||
SHAREDSTATEDIR
|
||||
LOCALSTATEDIR
|
||||
LIBDIR
|
||||
INCLUDEDIR
|
||||
OLDINCLUDEDIR
|
||||
DATAROOTDIR
|
||||
DATADIR
|
||||
INFODIR
|
||||
LOCALEDIR
|
||||
MANDIR
|
||||
DOCDIR
|
||||
)
|
||||
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
|
||||
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
|
||||
else()
|
||||
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
|
||||
endif()
|
||||
endforeach()
|
||||
65
docs/CMakeLists.txt
Normal file
@@ -0,0 +1,65 @@
|
||||
# Copyright (C) 2020 KeePassXC Team <team@keepassxc.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
find_program(ASCIIDOCTOR_EXE asciidoctor)
|
||||
if(NOT ASCIIDOCTOR_EXE)
|
||||
message(FATAL_ERROR "asciidoctor is required to build documentation")
|
||||
else()
|
||||
message(STATUS "Using asciidoctor: ${ASCIIDOCTOR_EXE}")
|
||||
endif()
|
||||
|
||||
set(DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(OUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# Build html documentation on all platforms
|
||||
add_custom_command(OUTPUT KeePassXC_GettingStarted.html
|
||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_GettingStarted.html ${DOC_DIR}/GettingStarted.adoc
|
||||
DEPENDS ${DOC_DIR}/topics/* ${DOC_DIR}/styles/* ${DOC_DIR}/images/* ${DOC_DIR}/GettingStarted.adoc
|
||||
VERBATIM)
|
||||
add_custom_command(OUTPUT KeePassXC_UserGuide.html
|
||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_UserGuide.html ${DOC_DIR}/UserGuide.adoc
|
||||
DEPENDS ${DOC_DIR}/topics/* ${DOC_DIR}/styles/* ${DOC_DIR}/images/* ${DOC_DIR}/UserGuide.adoc
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
VERBATIM)
|
||||
add_custom_command(OUTPUT KeePassXC_KeyboardShortcuts.html
|
||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -o KeePassXC_KeyboardShortcuts.html ${DOC_DIR}/topics/KeyboardShortcuts.adoc
|
||||
DEPENDS ${DOC_DIR}/topics/KeyboardShortcuts.adoc ${DOC_DIR}/styles/*
|
||||
VERBATIM)
|
||||
|
||||
add_custom_target(docs ALL DEPENDS KeePassXC_GettingStarted.html KeePassXC_UserGuide.html KeePassXC_KeyboardShortcuts.html)
|
||||
|
||||
install(FILES
|
||||
${OUT_DIR}/KeePassXC_GettingStarted.html
|
||||
${OUT_DIR}/KeePassXC_UserGuide.html
|
||||
${OUT_DIR}/KeePassXC_KeyboardShortcuts.html
|
||||
DESTINATION ${DATA_INSTALL_DIR}/docs)
|
||||
|
||||
# Build Man Pages on Linux and macOS
|
||||
if(APPLE OR UNIX)
|
||||
add_custom_command(OUTPUT keepassxc.1
|
||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -b manpage ${DOC_DIR}/man/keepassxc.1.adoc
|
||||
DEPENDS ${DOC_DIR}/man/*
|
||||
VERBATIM)
|
||||
add_custom_command(OUTPUT keepassxc-cli.1
|
||||
COMMAND ${ASCIIDOCTOR_EXE} -D ${OUT_DIR} -b manpage ${DOC_DIR}/man/keepassxc-cli.1.adoc
|
||||
DEPENDS ${DOC_DIR}/man/*
|
||||
VERBATIM)
|
||||
add_custom_target(manpages ALL DEPENDS keepassxc.1 keepassxc-cli.1)
|
||||
|
||||
install(FILES
|
||||
${OUT_DIR}/keepassxc.1
|
||||
${OUT_DIR}/keepassxc-cli.1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1/)
|
||||
endif()
|
||||
34
docs/GettingStarted.adoc
Normal file
@@ -0,0 +1,34 @@
|
||||
= KeePassXC: Getting Started Guide
|
||||
KeePassXC Team <team@keepassxc.org>
|
||||
v2.6.0
|
||||
:data-uri:
|
||||
:linkcss!:
|
||||
:homepage: https://keepassxc.org
|
||||
:icons: font
|
||||
:imagesdir: images
|
||||
:stylesheet: styles/dark.css
|
||||
:toc: left
|
||||
ifdef::backend-pdf[]
|
||||
:title-page:
|
||||
:title-logo-image: {imagesdir}/kpxc_logo.png
|
||||
:pdf-theme: styles/pdf_theme.yml
|
||||
:compress:
|
||||
endif::[]
|
||||
|
||||
include::topics/Disclaimers.adoc[]
|
||||
|
||||
<<<
|
||||
|
||||
// Include various topics, excluding advanced sections
|
||||
|
||||
include::topics/Welcome.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/DownloadInstall.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/UserInterface.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/PasswordGenerator.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/DatabaseOperations.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/BrowserPlugin.adoc[tags=*;!advanced]
|
||||
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 30 KiB |
@@ -1,131 +0,0 @@
|
||||
# Quick Start for KeePassXC
|
||||
|
||||
This procedure gets KeePassXC running on your computer with browser integration,
|
||||
using the pre-built binaries available for [download](https://keepassxc.org/download)
|
||||
from [KeePassXC site](https://keepassxc.org).
|
||||
|
||||
**TL;DR** KeePassXC saves your passwords securely.
|
||||
When you double-click a URL in KeePassXC, it launches your default browser to that URL.
|
||||
With browser integration configured, KeePassXC automatically enters
|
||||
username/password credentials into web page fields.
|
||||
|
||||
## Installing and Starting KeePassXC
|
||||
|
||||
* [Download the native installer](https://keepassxc.org/download) and install
|
||||
KeePassXC for your Windows, macOS, or Linux computer in the usual way for your platform.
|
||||
* Open the KeePassXC application.
|
||||
* Create a new database and give it a master key that's used to unlock the database file.
|
||||
This database holds entries (usernames, passwords, account numbers, notes)
|
||||
for all your websites, programs, etc.
|
||||
* Create a few entries - enter the username, password, URL, and optionally notes about the entry.
|
||||
* KeePassXC securely stores those entries in the database.
|
||||
|
||||
|
||||
## Setting up Browser Integration with KeePassXC
|
||||
|
||||
* *Within KeePassXC*, go to **Tools->Settings** (on macOS, go to **KeePassXC->Preferences**.)
|
||||
* In **Browser Integration**, check **Enable KeePassXC browser integration**
|
||||
* Right below that, click the checkbox for the browser(s) you use
|
||||
Leave the other options at their defaults.
|
||||
* *In your default web browser,* install the KeePassXC Browser extension/add-on. Instructions for [Firefox or Tor Browser](https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/) or [Chrome](https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk)
|
||||
* Click the KeePassXC icon in the upper-right corner. You'll see the dialog below.
|
||||
* Click the blue Connect button to make the browser extension connect to the KeePassXC application.
|
||||
<img src="./KeePassHTTP/KeePassXC-Connect.png" height="200" alt="KeePassXC Connect dialog">
|
||||
|
||||
* *Switch back to KeePassXC.* You'll see a dialog (below) indicating that a request to connect has arrived.
|
||||
* Give the connection a name (perhaps *Keepass-Browsername*, any unique name will suffice) and click OK to accept it.
|
||||
* This one-time operation connects KeePassXC and your browser.
|
||||
<img src="./KeePassHTTP/KeePassXC-Accept-Button.png" height="200" alt="KeePassXC accept connection dialog">
|
||||
|
||||
## Using Browser Integration
|
||||
|
||||
* *Within KeePassXC,* double-click the URL of an entry,
|
||||
or select it and type Ctrl+U (Cmd+U on macOS).
|
||||
* Your browser opens to that URL.
|
||||
* If there are username/password fields on that page, you will see the dialog below.
|
||||
Click *Allow* to confirm that KeePassXC may access the credentials to auto-fill the fields.
|
||||
* Check *Remember this decision* to allow this each time you visit the page.
|
||||
<img src="./KeePassHTTP/KeePassXC-Confirm.png" height="200" alt="KeePassCX Confirm Access dialog">
|
||||
|
||||
## Using Sharing
|
||||
|
||||
Sharing allows you to share a subset of your credentials with others and vice versa.
|
||||
|
||||
### Enable Sharing
|
||||
|
||||
To use sharing, you need to enable for the application.
|
||||
|
||||
1. Go to Tools → Settings
|
||||
2. Select the category KeeShare
|
||||
3. Check _Allow import_ if you want to import shared credentials
|
||||
4. Check _Allow export_ if you want to share credentials
|
||||
|
||||
To make sure that your data is valid when im imported by another client, please _generate_ (or _import_) a public/private key pair and enter your _signer_ name. This way your client may verify that the imported data is valid. When Importing, you'll see the known sources with names and fingerprint in the list at the bottom. This is the place to _trust_ or _untrust_ signers. It is only possible to trust someone on application level.
|
||||
|
||||
<img src="./KeeShare/AppSettings.png" height="600" width="800" alt="KeeShare Application Settings">
|
||||
|
||||
### Sharing Credentials
|
||||
|
||||
If you checked _Allow export_ in the Sharing settings you now are good to go to share some passwords with others. Sharing always is defined on a group. If you enable sharing on a group, every entry under this group or it's children is shared. If you enable sharing on the root node, **every password** inside your database gets shared!
|
||||
|
||||
1. Open the edit sheet on a group you want to share
|
||||
1. Select the sharing section
|
||||
1. Choose _Export to path_ as the sharing method
|
||||
1. Choose a path to store the shared credentials to
|
||||
1. Generate a password for this share container
|
||||
|
||||
The export file will not be generated automatically. Instead, each time the database is saved, the file gets written (so please deactivate the autosafe feature). If an old file is present, the old file will be overwritten! The file should be written to a location that is accessible by others. An easy setup is a network share or storing the file inside the cloud.
|
||||
|
||||
<img src="./KeeShare/GroupSettings_Export.png" height="600" width="800" alt="KeeShare Group Sharing Settings">
|
||||
|
||||
### Using Shared Credentials
|
||||
|
||||
Checking _Allow import_ in the Sharing settings of the database enables you to receive credentials from others. KeePass will watch sharing sources and import any changes immediately into your database using the synchronization feature.
|
||||
|
||||
1. Create a group for import
|
||||
1. Open the edit sheet on that group
|
||||
1. Select the sharing section
|
||||
1. Choose _Import from path_ as the sharing method
|
||||
1. Choose a share container that is shared with you
|
||||
1. Enter the password for the shared container
|
||||
|
||||
KeeShare observes the container for changes and merges them into your database when necessary. Importing merges in time order, so older data is moved to the history, which should have a sufficient size to prevent loss of needed data.
|
||||
|
||||
Please note, that the import currently is not restricted to the configured group. Every entry which was imported and moved outside the import group will be updated regardless of it's location!
|
||||
|
||||
<img src="./KeeShare/GroupSettings_Import.png" height="600" width="800" alt="KeeShare Group Import Settings">
|
||||
|
||||
### Using Synchronized Credentials
|
||||
|
||||
Instead of using different groups for sharing and importing you can use a single group that acts as both. This way you can synchronize a number of credentials easily across many users without a lot of hassle.
|
||||
|
||||
1. Open the edit sheet on a group you want to synchronize
|
||||
1. Select the sharing section
|
||||
1. Choose _Synchronize with path_ as the sharing method
|
||||
1. Choose a database that you want to use a synchronization file
|
||||
1. Enter the password for the database
|
||||
|
||||
<img src="./KeeShare/GroupSettings_Sync.png" height="600" width="800" alt="KeeShare Group Synchronization Settings">
|
||||
|
||||
### Disable Sharing for Credentials
|
||||
|
||||
In case you don't want to share (import or export) some credentials, it is possible to you can
|
||||
* use the application settings and uncheck the options or
|
||||
* instead of selecting _Import from path_, _Export to path_ or _Synchronize with path_ you'll select _Inactive_ while leaving the path and the password untouched
|
||||
|
||||
### Sharing overview
|
||||
|
||||
There is a simple overview of shared groups to keep track of your data.
|
||||
|
||||
1. Open the Database Settings
|
||||
1. Select the KeeShare category
|
||||
|
||||
<img src="./KeeShare/DatabaseSettings.png" height="600" width="800" alt="KeeShare Group Sharing Ovewview">
|
||||
|
||||
## Technical Details and Limitations of Sharing
|
||||
|
||||
Sharing relies on the combination of file exports and imports as well as the synchronization mechanism provided by KeePassXC. Since the merge algorithm uses the history of entries to prevent data loss, this history must be enabled and have a sufficient size. Furthermore, the merge algorithm is location independend, therefore it does not matter if entries are moved outside of an import group. These entries will be updated none the less. Moving entries outside of export groups will prevent a further export of the entry, but it will not ensure that the already shared data will be removed from any client.
|
||||
|
||||
KeeShare uses a custom certification mechanism to ensure that the source of the data is the expected one. This ensures that the data was exported by the signer but it is not possible to detect if someone replaced the data with an older version from a valid signer. To prevent this, the container could be placed at a location which is only writeable for valid signers.
|
||||
|
||||
|
||||
37
docs/UserGuide.adoc
Normal file
@@ -0,0 +1,37 @@
|
||||
= KeePassXC: User Guide
|
||||
KeePassXC Team <team@keepassxc.org>
|
||||
v2.6.0
|
||||
:data-uri:
|
||||
:homepage: https://keepassxc.org
|
||||
:icons: font
|
||||
:imagesdir: images
|
||||
:stylesheet: styles/dark.css
|
||||
:toc: left
|
||||
ifdef::backend-pdf[]
|
||||
:title-page:
|
||||
:title-logo-image: {imagesdir}/kpxc_logo.png
|
||||
:pdf-theme: styles/pdf_theme.yml
|
||||
:compress:
|
||||
endif::[]
|
||||
|
||||
include::topics/Disclaimers.adoc[]
|
||||
|
||||
<<<
|
||||
|
||||
// Include feature topics and advanced sections
|
||||
|
||||
include::topics/UserInterface.adoc[tags=*]
|
||||
|
||||
include::topics/DatabaseOperations.adoc[tags=*]
|
||||
|
||||
include::topics/ImportExport.adoc[tags=*]
|
||||
|
||||
include::topics/PasswordGenerator.adoc[tags=*]
|
||||
|
||||
include::topics/BrowserPlugin.adoc[tags=*]
|
||||
|
||||
include::topics/AutoType.adoc[tags=*]
|
||||
|
||||
include::topics/KeeShare.adoc[tags=*]
|
||||
|
||||
include::topics/SSHAgent.adoc[tags=*]
|
||||
BIN
docs/images/autotype_entry_sequences.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
docs/images/autotype_entrylevel.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
docs/images/autotype_selection_dialog.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
docs/images/autotype_settings.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/images/browser_advanced_settings.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/images/browser_confirm_access_dialog.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/images/browser_database_settings.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/images/browser_entry_settings.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/images/browser_extension_association.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
docs/images/browser_extension_connect.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/images/browser_extension_icons.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/images/browser_extension_reload.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/browser_fill_credentials.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/images/browser_settings.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
docs/images/clone_entry.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
docs/images/clone_entry_dialog.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
docs/images/clone_entry_references.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
docs/images/compact_mode_comparison.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
docs/images/csv_import.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
docs/images/database_security.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/database_security_credentials.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/images/database_security_encryption.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/images/database_security_encryption_advanced.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
docs/images/database_settings.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docs/images/database_view.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
docs/images/edit_entry.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
docs/images/edit_entry_attachments.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/images/edit_entry_attributes.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/images/edit_entry_colors.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docs/images/edit_entry_history.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
docs/images/edit_entry_icons.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
docs/images/edit_entry_properties.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
docs/images/export_database.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
docs/images/install_wizard_1.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
BIN
docs/images/install_wizard_2.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/images/keeshare_application_settings.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
docs/images/keeshare_group_settings.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
docs/images/keeshare_shared_group.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
docs/images/kpxc_logo.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
docs/images/linux_store.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
docs/images/macos_install.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
docs/images/main_interface.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
docs/images/new_db_wizard_1.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/images/new_db_wizard_2.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
docs/images/new_db_wizard_3.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
docs/images/open_database.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/passphrase_generator.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/images/password_generator.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/images/password_generator_advanced.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/images/save_database_backup.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/images/sshagent_application_settings.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
docs/images/sshagent_context_menu.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
docs/images/sshagent_entry_settings.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
docs/images/sshagent_puttygen.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/images/theme_comparison.png
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
docs/images/theme_selection.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/toolbar.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/uac_dialog.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/images/unlock_database.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/images/welcome_screen.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
282
docs/man/keepassxc-cli.1.adoc
Normal file
@@ -0,0 +1,282 @@
|
||||
= keepassxc-cli(1)
|
||||
:docdate: 2020-07-05
|
||||
:doctype: manpage
|
||||
:manmanual: General Commands Manual
|
||||
|
||||
== NAME
|
||||
keepassxc-cli - command line interface for the KeePassXC password manager.
|
||||
|
||||
== SYNOPSIS
|
||||
*keepassxc-cli* _command_ [_options_]
|
||||
|
||||
== DESCRIPTION
|
||||
*keepassxc-cli* is the command line interface for the *KeePassXC* password manager.
|
||||
It provides the ability to query and modify the entries of a KeePass database, directly from the command line.
|
||||
|
||||
== COMMANDS
|
||||
*add* [_options_] <__database__> <__entry__>::
|
||||
Adds a new entry to a database.
|
||||
A password can be generated (_-g_ option), or a prompt can be displayed to input the password (_-p_ option).
|
||||
The same password generation options as documented for the generate command can be used when the _-g_ option is set.
|
||||
|
||||
*analyze* [_options_] <__database__>::
|
||||
Analyzes passwords in a database for weaknesses.
|
||||
|
||||
*clip* [_options_] <__database__> <__entry__> [_timeout_]::
|
||||
Copies an attribute or the current TOTP (if the _-t_ option is specified) of a database entry to the clipboard.
|
||||
If no attribute name is specified using the _-a_ option, the password is copied.
|
||||
If multiple entries with the same name exist in different groups, only the attribute for the first one is copied.
|
||||
For copying the attribute of an entry in a specific group, the group path to the entry should be specified as well, instead of just the name.
|
||||
Optionally, a timeout in seconds can be specified to automatically clear the clipboard.
|
||||
|
||||
*close*::
|
||||
In interactive mode, closes the currently opened database (see _open_).
|
||||
|
||||
*db-create* [_options_] <__database__>::
|
||||
Creates a new database with a password and/or a key file.
|
||||
The key file will be created if the file that is referred to does not exist.
|
||||
If both the key file and password are empty, no database will be created.
|
||||
|
||||
*db-info* [_options_] <__database__>::
|
||||
Show a database's information.
|
||||
|
||||
*diceware* [_options_]::
|
||||
Generates a random diceware passphrase.
|
||||
|
||||
*edit* [_options_] <__database__> <__entry__>::
|
||||
Edits a database entry.
|
||||
A password can be generated (_-g_ option), or a prompt can be displayed to input the password (_-p_ option).
|
||||
The same password generation options as documented for the generate command can be used when the _-g_ option is set.
|
||||
|
||||
*estimate* [_options_] [_password_]::
|
||||
Estimates the entropy of a password.
|
||||
The password to estimate can be provided as a positional argument, or using the standard input.
|
||||
|
||||
*exit*::
|
||||
Exits interactive mode.
|
||||
Synonymous with _quit_.
|
||||
|
||||
*export* [_options_] <__database__>::
|
||||
Exports the content of a database to standard output in the specified format (defaults to XML).
|
||||
|
||||
*generate* [_options_]::
|
||||
Generates a random password.
|
||||
|
||||
*help* [_command_]::
|
||||
Displays a list of available commands, or detailed information about the specified command.
|
||||
|
||||
*import* [_options_] <__xml__> <__database__>::
|
||||
Imports the contents of an XML database to the target database.
|
||||
|
||||
*locate* [_options_] <__database__> <__term__>::
|
||||
Locates all the entries that match a specific search term in a database.
|
||||
|
||||
*ls* [_options_] <__database__> [_group_]::
|
||||
Lists the contents of a group in a database.
|
||||
If no group is specified, it will default to the root group.
|
||||
|
||||
*merge* [_options_] <__database1__> <__database2__>::
|
||||
Merges two databases together.
|
||||
The first database file is going to be replaced by the result of the merge, for that reason it is advisable to keep a backup of the two database files before attempting a merge.
|
||||
In the case that both databases make use of the same credentials, the _--same-credentials_ or _-s_ option can be used.
|
||||
|
||||
*mkdir* [_options_] <__database__> <__group__>::
|
||||
Adds a new group to a database.
|
||||
|
||||
*mv* [_options_] <__database__> <__entry__> <__group__>::
|
||||
Moves an entry to a new group.
|
||||
|
||||
*open* [_options_] <__database__>::
|
||||
Opens the given database in a shell-style interactive mode.
|
||||
This is useful for performing multiple operations on a single database (e.g. _ls_ followed by _show_).
|
||||
|
||||
*quit*::
|
||||
Exits interactive mode.
|
||||
Synonymous with _exit_.
|
||||
|
||||
*rm* [_options_] <__database__> <__entry__>::
|
||||
Removes an entry from a database.
|
||||
If the database has a recycle bin, the entry will be moved there.
|
||||
If the entry is already in the recycle bin, it will be removed permanently.
|
||||
|
||||
*rmdir* [_options_] <__database__> <__group__>::
|
||||
Removes a group from a database.
|
||||
If the database has a recycle bin, the group will be moved there.
|
||||
If the group is already in the recycle bin, it will be removed permanently.
|
||||
|
||||
*show* [_options_] <__database__> <__entry__>::
|
||||
Shows the title, username, password, URL and notes of a database entry.
|
||||
Can also show the current TOTP.
|
||||
Regarding the occurrence of multiple entries with the same name in different groups, everything stated in the _clip_ command section also applies here.
|
||||
|
||||
== OPTIONS
|
||||
=== General options
|
||||
*--debug-info*::
|
||||
Displays debugging information.
|
||||
|
||||
*-k*, *--key-file* <__path__>::
|
||||
Specifies a path to a key file for unlocking the database.
|
||||
In a merge operation this option, is used to specify the key file path for the first database.
|
||||
|
||||
*--no-password*::
|
||||
Deactivates the password key for the database.
|
||||
|
||||
*-y*, *--yubikey* <__slot__>::
|
||||
Specifies a yubikey slot for unlocking the database.
|
||||
In a merge operation this option is used to specify the YubiKey slot for the first database.
|
||||
|
||||
*-q*, *--quiet* <__path__>::
|
||||
Silences password prompt and other secondary outputs.
|
||||
|
||||
*-h*, *--help*::
|
||||
Displays help information.
|
||||
|
||||
*-v*, *--version*::
|
||||
Displays the program version.
|
||||
|
||||
=== Merge options
|
||||
*-d*, *--dry-run* <__path__>::
|
||||
Prints the changes detected by the merge operation without making any changes to the database.
|
||||
|
||||
*--key-file-from* <__path__>::
|
||||
Sets the path of the key file for the second database.
|
||||
|
||||
*--no-password-from*::
|
||||
Deactivates password key for the database to merge from.
|
||||
|
||||
*--yubikey-from* <__slot__>::
|
||||
YubiKey slot for the second database.
|
||||
|
||||
*-s*, *--same-credentials*::
|
||||
Uses the same credentials for unlocking both databases.
|
||||
|
||||
=== Add and edit options
|
||||
The same password generation options as documented for the generate command can be used with those 2 commands when the -g option is set.
|
||||
|
||||
*-u*, *--username* <__username__>::
|
||||
Specifies the username of the entry.
|
||||
|
||||
*--url* <__url__>::
|
||||
Specifies the URL of the entry.
|
||||
|
||||
*-p*, *--password-prompt*::
|
||||
Uses a password prompt for the entry's password.
|
||||
|
||||
*-g*, *--generate*::
|
||||
Generates a new password for the entry.
|
||||
|
||||
=== Edit options
|
||||
*-t*, *--title* <__title__>::
|
||||
Specifies the title of the entry.
|
||||
|
||||
=== Estimate options
|
||||
*-a*, *--advanced*::
|
||||
Performs advanced analysis on the password.
|
||||
|
||||
=== Analyze options
|
||||
*-H*, *--hibp* <__filename__>::
|
||||
Checks if any passwords have been publicly leaked, by comparing against the given list of password SHA-1 hashes, which must be in "Have I Been Pwned" format.
|
||||
Such files are available from https://haveibeenpwned.com/Passwords;
|
||||
note that they are large, and so this operation typically takes some time (minutes up to an hour or so).
|
||||
|
||||
=== Clip options
|
||||
*-a*, *--attribute*::
|
||||
Copies the specified attribute to the clipboard.
|
||||
If no attribute is specified, the password attribute is the default.
|
||||
For example, "_-a_ username" would copy the username to the clipboard.
|
||||
[Default: password]
|
||||
|
||||
*-t*, *--totp*::
|
||||
Copies the current TOTP instead of the specified attribute to the clipboard.
|
||||
Will report an error if no TOTP is configured for the entry.
|
||||
|
||||
=== Create options
|
||||
*-k*, *--set-key-file* <__path__>::
|
||||
Set the key file for the database.
|
||||
|
||||
*-p*, *--set-password*::
|
||||
Set a password for the database.
|
||||
|
||||
*-t*, *--decryption-time* <__time__>::
|
||||
Target decryption time in MS for the database.
|
||||
|
||||
=== Show options
|
||||
*-a*, *--attributes* <__attribute__>...::
|
||||
Shows the named attributes.
|
||||
This option can be specified more than once, with each attribute shown one-per-line in the given order.
|
||||
If no attributes are specified and _-t_ is not specified, a summary of the default attributes is given.
|
||||
Protected attributes will be displayed in clear text if specified explicitly by this option.
|
||||
|
||||
*-s*, *--show-protected*::
|
||||
Shows the protected attributes in clear text.
|
||||
|
||||
*-t*, *--totp*::
|
||||
Also shows the current TOTP, reporting an error if no TOTP is configured for the entry.
|
||||
|
||||
=== Diceware options
|
||||
*-W*, *--words* <__count__>::
|
||||
Sets the desired number of words for the generated passphrase.
|
||||
[Default: 7]
|
||||
|
||||
*-w*, *--word-list* <__path__>::
|
||||
Sets the Path of the wordlist for the diceware generator.
|
||||
The wordlist must have > 1000 words, otherwise the program will fail.
|
||||
If the wordlist has < 4000 words a warning will be printed to STDERR.
|
||||
|
||||
=== Export options
|
||||
*-f*, *--format*::
|
||||
Format to use when exporting.
|
||||
Available choices are xml or csv.
|
||||
Defaults to xml.
|
||||
|
||||
=== List options
|
||||
*-R*, *--recursive*::
|
||||
Recursively lists the elements of the group.
|
||||
|
||||
*-f*, *--flatten*::
|
||||
Flattens the output to single lines.
|
||||
When this option is enabled, subgroups and subentries will be displayed with a relative group path instead of indentation.
|
||||
|
||||
=== Generate options
|
||||
*-L*, *--length* <__length__>::
|
||||
Sets the desired length for the generated password.
|
||||
[Default: 16]
|
||||
|
||||
*-l*, *--lower*::
|
||||
Uses lowercase characters for the generated password.
|
||||
[Default: Enabled]
|
||||
|
||||
*-U*, *--upper*::
|
||||
Uses uppercase characters for the generated password.
|
||||
[Default: Enabled]
|
||||
|
||||
*-n*, *--numeric*::
|
||||
Uses numbers characters for the generated password.
|
||||
[Default: Enabled]
|
||||
|
||||
*-s*, *--special*::
|
||||
Uses special characters for the generated password.
|
||||
[Default: Disabled]
|
||||
|
||||
*-e*, *--extended*::
|
||||
Uses extended ASCII characters for the generated password.
|
||||
[Default: Disabled]
|
||||
|
||||
*-x*, *--exclude* <__chars__>::
|
||||
Comma-separated list of characters to exclude from the generated password.
|
||||
None is excluded by default.
|
||||
|
||||
*--exclude-similar*::
|
||||
Exclude similar looking characters.
|
||||
[Default: Disabled]
|
||||
|
||||
*--every-group*::
|
||||
Include characters from every selected group.
|
||||
[Default: Disabled]
|
||||
|
||||
== REPORTING BUGS
|
||||
Bugs and feature requests can be reported on GitHub at https://github.com/keepassxreboot/keepassxc/issues.
|
||||
|
||||
== AUTHOR
|
||||
This manual page was originally written by Manolis Agkopian <m.agkopian@gmail.com>,
|
||||
and is maintained by the KeePassXC Team <team@keepassxc.org>.
|
||||
41
docs/man/keepassxc.1.adoc
Normal file
@@ -0,0 +1,41 @@
|
||||
= keepassxc(1)
|
||||
:docdate: 2020-07-05
|
||||
:doctype: manpage
|
||||
:manmanual: General Commands Manual
|
||||
|
||||
== NAME
|
||||
keepassxc - password manager
|
||||
|
||||
== SYNOPSIS
|
||||
*keepassxc* [_options_] [_filename(s)_]
|
||||
|
||||
== DESCRIPTION
|
||||
*KeePassXC* is a free/open-source password manager or safe which helps you to manage your passwords in a secure way.
|
||||
The complete database is always encrypted with the industry-standard AES (alias Rijndael) encryption algorithm using a 256 bit key.
|
||||
KeePassXC uses a database format that is compatible with KeePass Password Safe.
|
||||
Your wallet works offline and requires no Internet connection.
|
||||
|
||||
== OPTIONS
|
||||
*-h*, *--help*::
|
||||
Displays this help.
|
||||
|
||||
*-v*, *--version*::
|
||||
Displays version information.
|
||||
|
||||
*--config* <__config__>::
|
||||
Path to a custom config file
|
||||
|
||||
*--keyfile* <__keyfile__>::
|
||||
Key file of the database
|
||||
|
||||
*--pw-stdin*::
|
||||
Read password of the database from stdin
|
||||
|
||||
*--pw*, *--parent-window* <__handle__>::
|
||||
Parent window handle
|
||||
|
||||
*--debug-info*::
|
||||
Displays debugging information.
|
||||
|
||||
== AUTHOR
|
||||
This manual page is maintained by the KeePassXC Team <team@keepassxc.org>.
|
||||
541
docs/styles/dark.css
Normal file
@@ -0,0 +1,541 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Noto+Sans);
|
||||
|
||||
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
|
||||
/* Uncomment @import statement below to use as custom stylesheet */
|
||||
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
|
||||
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
|
||||
audio,canvas,video{display:inline-block}
|
||||
audio:not([controls]){display:none;height:0}
|
||||
script{display:none!important}
|
||||
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
|
||||
a{background:transparent}
|
||||
a:focus{outline:thin dotted}
|
||||
a:active,a:hover{outline:0}
|
||||
h1{font-size:2em;margin:.67em 0}
|
||||
abbr[title]{border-bottom:1px dotted}
|
||||
b,strong{font-weight:bold}
|
||||
dfn{font-style:italic}
|
||||
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
|
||||
mark{background:#ff0;color:#000}
|
||||
code,kbd,pre,samp{font-family:monospace;font-size:1em}
|
||||
pre{white-space:pre-wrap}
|
||||
q{quotes:"\201C" "\201D" "\2018" "\2019"}
|
||||
small{font-size:80%}
|
||||
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
|
||||
sup{top:-.5em}
|
||||
sub{bottom:-.25em}
|
||||
img{border:0}
|
||||
svg:not(:root){overflow:hidden}
|
||||
figure{margin:0}
|
||||
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
|
||||
legend{border:0;padding:0}
|
||||
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
|
||||
button,input{line-height:normal}
|
||||
button,select{text-transform:none}
|
||||
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
|
||||
button[disabled],html input[disabled]{cursor:default}
|
||||
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
|
||||
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
|
||||
textarea{overflow:auto;vertical-align:top}
|
||||
table{border-collapse:collapse;border-spacing:0}
|
||||
*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
|
||||
html,body{font-size:100%}
|
||||
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
|
||||
a:hover{cursor:pointer}
|
||||
img,object,embed{max-width:100%;height:auto}
|
||||
object,embed{height:100%}
|
||||
img{-ms-interpolation-mode:bicubic}
|
||||
.left{float:left!important}
|
||||
.right{float:right!important}
|
||||
.text-left{text-align:left!important}
|
||||
.text-right{text-align:right!important}
|
||||
.text-center{text-align:center!important}
|
||||
.text-justify{text-align:justify!important}
|
||||
.hide{display:none}
|
||||
img,object,svg{display:inline-block;vertical-align:middle}
|
||||
textarea{height:auto;min-height:50px}
|
||||
select{width:100%}
|
||||
.center{margin-left:auto;margin-right:auto}
|
||||
.stretch{width:100%}
|
||||
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
|
||||
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
|
||||
a{color:#2156a5;text-decoration:underline;line-height:inherit}
|
||||
a:hover,a:focus{color:#1d4b8f}
|
||||
a img{border:none}
|
||||
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
|
||||
p aside{font-size:.875em;line-height:1.35;font-style:italic}
|
||||
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
|
||||
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
|
||||
h1{font-size:2.125em}
|
||||
h2{font-size:1.6875em}
|
||||
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
|
||||
h4,h5{font-size:1.125em}
|
||||
h6{font-size:1em}
|
||||
hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
|
||||
em,i{font-style:italic;line-height:inherit}
|
||||
strong,b{font-weight:bold;line-height:inherit}
|
||||
small{font-size:60%;line-height:inherit}
|
||||
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
|
||||
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
|
||||
ul,ol{margin-left:1.5em}
|
||||
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
|
||||
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
|
||||
ul.square{list-style-type:square}
|
||||
ul.circle{list-style-type:circle}
|
||||
ul.disc{list-style-type:disc}
|
||||
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
|
||||
dl dt{margin-bottom:.3125em;font-weight:bold}
|
||||
dl dd{margin-bottom:1.25em}
|
||||
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
|
||||
abbr{text-transform:none}
|
||||
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
|
||||
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
|
||||
blockquote cite::before{content:"\2014 \0020"}
|
||||
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
|
||||
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
|
||||
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
|
||||
h1{font-size:2.75em}
|
||||
h2{font-size:2.3125em}
|
||||
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
|
||||
h4{font-size:1.4375em}}
|
||||
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
|
||||
table thead,table tfoot{background:#f7f8f7}
|
||||
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
|
||||
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
|
||||
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
|
||||
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
|
||||
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
|
||||
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
|
||||
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
|
||||
.clearfix::after,.float-group::after{clear:both}
|
||||
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
|
||||
*:not(pre)>code.nobreak{word-wrap:normal}
|
||||
*:not(pre)>code.nowrap{white-space:nowrap}
|
||||
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
|
||||
em em{font-style:normal}
|
||||
strong strong{font-weight:400}
|
||||
.keyseq{color:rgba(51,51,51,.8)}
|
||||
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
|
||||
.keyseq kbd:first-child{margin-left:0}
|
||||
.keyseq kbd:last-child{margin-right:0}
|
||||
.menuseq,.menuref{color:#000}
|
||||
.menuseq b:not(.caret),.menuref{font-weight:inherit}
|
||||
.menuseq{word-spacing:-.02em}
|
||||
.menuseq b.caret{font-size:1.25em;line-height:.8}
|
||||
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
|
||||
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
|
||||
b.button::before{content:"[";padding:0 3px 0 2px}
|
||||
b.button::after{content:"]";padding:0 2px 0 3px}
|
||||
p a>code:hover{color:rgba(0,0,0,.9)}
|
||||
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
|
||||
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
|
||||
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
|
||||
#content{margin-top:1.25em}
|
||||
#content::before{content:none}
|
||||
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
|
||||
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
|
||||
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
|
||||
#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
|
||||
#header .details span:first-child{margin-left:-.125em}
|
||||
#header .details span.email a{color:rgba(0,0,0,.85)}
|
||||
#header .details br{display:none}
|
||||
#header .details br+span::before{content:"\00a0\2013\00a0"}
|
||||
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
|
||||
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
|
||||
#header #revnumber{text-transform:capitalize}
|
||||
#header #revnumber::after{content:"\00a0"}
|
||||
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
|
||||
#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
|
||||
#toc>ul{margin-left:.125em}
|
||||
#toc ul.sectlevel0>li>a{font-style:italic}
|
||||
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
|
||||
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
|
||||
#toc li{line-height:1.3334;margin-top:.3334em}
|
||||
#toc a{text-decoration:none}
|
||||
#toc a:active{text-decoration:underline}
|
||||
#toctitle{color:#7a2518;font-size:1.2em}
|
||||
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
|
||||
body.toc2{padding-left:15em;padding-right:0}
|
||||
#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
|
||||
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
|
||||
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
|
||||
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
|
||||
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
|
||||
body.toc2.toc-right{padding-left:0;padding-right:15em}
|
||||
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
|
||||
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
|
||||
#toc.toc2{width:20em}
|
||||
#toc.toc2 #toctitle{font-size:1.375em}
|
||||
#toc.toc2>ul{font-size:.95em}
|
||||
#toc.toc2 ul ul{padding-left:1.25em}
|
||||
body.toc2.toc-right{padding-left:0;padding-right:20em}}
|
||||
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
|
||||
#content #toc>:first-child{margin-top:0}
|
||||
#content #toc>:last-child{margin-bottom:0}
|
||||
#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
|
||||
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
|
||||
#content{margin-bottom:.625em}
|
||||
.sect1{padding-bottom:.625em}
|
||||
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
|
||||
.sect1{padding-bottom:1.25em}}
|
||||
.sect1:last-child{padding-bottom:0}
|
||||
.sect1+.sect1{border-top:1px solid #efefed}
|
||||
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
|
||||
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
|
||||
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
|
||||
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
|
||||
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
|
||||
.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
|
||||
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
|
||||
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
|
||||
.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
|
||||
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
|
||||
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
|
||||
.admonitionblock>table td.icon{text-align:center;width:80px}
|
||||
.admonitionblock>table td.icon img{max-width:none}
|
||||
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
|
||||
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
|
||||
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
|
||||
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
|
||||
.exampleblock>.content>:first-child{margin-top:0}
|
||||
.exampleblock>.content>:last-child{margin-bottom:0}
|
||||
.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
|
||||
.sidebarblock>:first-child{margin-top:0}
|
||||
.sidebarblock>:last-child{margin-bottom:0}
|
||||
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
|
||||
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
|
||||
.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
|
||||
.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
|
||||
.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
|
||||
.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
|
||||
@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
|
||||
@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
|
||||
.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
|
||||
.listingblock pre.highlightjs{padding:0}
|
||||
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
|
||||
.listingblock pre.prettyprint{border-width:0}
|
||||
.listingblock>.content{position:relative}
|
||||
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
|
||||
.listingblock:hover code[data-lang]::before{display:block}
|
||||
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
|
||||
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
|
||||
table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
|
||||
table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
|
||||
table.pyhltable td.code{padding-left:.75em;padding-right:0}
|
||||
pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
|
||||
pre.pygments .lineno{display:inline-block;margin-right:.25em}
|
||||
table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
|
||||
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
|
||||
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
|
||||
.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
|
||||
.quoteblock blockquote{margin:0;padding:0;border:0}
|
||||
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
|
||||
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
|
||||
.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
|
||||
.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
|
||||
.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
|
||||
.quoteblock .quoteblock blockquote::before{display:none}
|
||||
.verseblock{margin:0 1em 1.25em}
|
||||
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
|
||||
.verseblock pre strong{font-weight:400}
|
||||
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
|
||||
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
|
||||
.quoteblock .attribution br,.verseblock .attribution br{display:none}
|
||||
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
|
||||
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
|
||||
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
|
||||
.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{word-spacing:0;line-height:1.6}
|
||||
.quoteblock.abstract blockquote::before,.quoteblock.abstract p::before{display:none}
|
||||
table.tableblock{max-width:100%;border-collapse:separate}
|
||||
p.tableblock:last-child{margin-bottom:0}
|
||||
td.tableblock>.content{margin-bottom:-1.25em}
|
||||
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
|
||||
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
|
||||
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
|
||||
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
|
||||
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
|
||||
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
|
||||
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
|
||||
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
|
||||
table.frame-all{border-width:1px}
|
||||
table.frame-sides{border-width:0 1px}
|
||||
table.frame-topbot,table.frame-ends{border-width:1px 0}
|
||||
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
|
||||
table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
|
||||
th.halign-left,td.halign-left{text-align:left}
|
||||
th.halign-right,td.halign-right{text-align:right}
|
||||
th.halign-center,td.halign-center{text-align:center}
|
||||
th.valign-top,td.valign-top{vertical-align:top}
|
||||
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
|
||||
th.valign-middle,td.valign-middle{vertical-align:middle}
|
||||
table thead th,table tfoot th{font-weight:bold}
|
||||
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
|
||||
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
|
||||
p.tableblock>code:only-child{background:none;padding:0}
|
||||
p.tableblock{font-size:1em}
|
||||
td>div.verse{white-space:pre}
|
||||
ol{margin-left:1.75em}
|
||||
ul li ol{margin-left:1.5em}
|
||||
dl dd{margin-left:1.125em}
|
||||
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
|
||||
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
|
||||
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
|
||||
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
|
||||
ul.unstyled,ol.unstyled{margin-left:0}
|
||||
ul.checklist{margin-left:.625em}
|
||||
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
|
||||
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
|
||||
ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
|
||||
ul.inline>li{margin-left:1.25em}
|
||||
.unstyled dl dt{font-weight:400;font-style:normal}
|
||||
ol.arabic{list-style-type:decimal}
|
||||
ol.decimal{list-style-type:decimal-leading-zero}
|
||||
ol.loweralpha{list-style-type:lower-alpha}
|
||||
ol.upperalpha{list-style-type:upper-alpha}
|
||||
ol.lowerroman{list-style-type:lower-roman}
|
||||
ol.upperroman{list-style-type:upper-roman}
|
||||
ol.lowergreek{list-style-type:lower-greek}
|
||||
.hdlist>table,.colist>table{border:0;background:none}
|
||||
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
|
||||
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
|
||||
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
|
||||
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
|
||||
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
|
||||
.colist td:not([class]):first-child img{max-width:none}
|
||||
.colist td:not([class]):last-child{padding:.25em 0}
|
||||
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
|
||||
.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
|
||||
.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
|
||||
.imageblock>.title{margin-bottom:0}
|
||||
.imageblock.thumb,.imageblock.th{border-width:6px}
|
||||
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
|
||||
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
|
||||
.image.left{margin-right:.625em}
|
||||
.image.right{margin-left:.625em}
|
||||
a.image{text-decoration:none;display:inline-block}
|
||||
a.image object{pointer-events:none}
|
||||
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
|
||||
sup.footnote a,sup.footnoteref a{text-decoration:none}
|
||||
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
|
||||
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
|
||||
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
|
||||
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
|
||||
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
|
||||
#footnotes .footnote:last-of-type{margin-bottom:0}
|
||||
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
|
||||
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
|
||||
.gist .file-data>table td.line-data{width:99%}
|
||||
div.unbreakable{page-break-inside:avoid}
|
||||
.big{font-size:larger}
|
||||
.small{font-size:smaller}
|
||||
.underline{text-decoration:underline}
|
||||
.overline{text-decoration:overline}
|
||||
.line-through{text-decoration:line-through}
|
||||
.aqua{color:#00bfbf}
|
||||
.aqua-background{background-color:#00fafa}
|
||||
.black{color:#000}
|
||||
.black-background{background-color:#000}
|
||||
.blue{color:#0000bf}
|
||||
.blue-background{background-color:#0000fa}
|
||||
.fuchsia{color:#bf00bf}
|
||||
.fuchsia-background{background-color:#fa00fa}
|
||||
.gray{color:#606060}
|
||||
.gray-background{background-color:#7d7d7d}
|
||||
.green{color:#006000}
|
||||
.green-background{background-color:#007d00}
|
||||
.lime{color:#00bf00}
|
||||
.lime-background{background-color:#00fa00}
|
||||
.maroon{color:#600000}
|
||||
.maroon-background{background-color:#7d0000}
|
||||
.navy{color:#000060}
|
||||
.navy-background{background-color:#00007d}
|
||||
.olive{color:#606000}
|
||||
.olive-background{background-color:#7d7d00}
|
||||
.purple{color:#600060}
|
||||
.purple-background{background-color:#7d007d}
|
||||
.red{color:#bf0000}
|
||||
.red-background{background-color:#fa0000}
|
||||
.silver{color:#909090}
|
||||
.silver-background{background-color:#bcbcbc}
|
||||
.teal{color:#006060}
|
||||
.teal-background{background-color:#007d7d}
|
||||
.white{color:#bfbfbf}
|
||||
.white-background{background-color:#fafafa}
|
||||
.yellow{color:#bfbf00}
|
||||
.yellow-background{background-color:#fafa00}
|
||||
span.icon>.fa{cursor:default}
|
||||
a span.icon>.fa{cursor:inherit}
|
||||
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
|
||||
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
|
||||
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
|
||||
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
|
||||
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
|
||||
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
|
||||
.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
|
||||
.conum[data-value] *{color:#fff!important}
|
||||
.conum[data-value]+b{display:none}
|
||||
.conum[data-value]::after{content:attr(data-value)}
|
||||
pre .conum[data-value]{position:relative;top:-.125em}
|
||||
b.conum *{color:inherit!important}
|
||||
.conum:not([data-value]):empty{display:none}
|
||||
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
|
||||
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
|
||||
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
|
||||
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
|
||||
p{margin-bottom:1.25rem}
|
||||
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
|
||||
.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
|
||||
.print-only{display:none!important}
|
||||
@page{margin:1.25cm .75cm}
|
||||
@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
|
||||
html{font-size:80%}
|
||||
a{color:inherit!important;text-decoration:underline!important}
|
||||
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
|
||||
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
|
||||
abbr[title]::after{content:" (" attr(title) ")"}
|
||||
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
|
||||
thead{display:table-header-group}
|
||||
svg{max-width:100%}
|
||||
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
|
||||
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
|
||||
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
|
||||
#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
|
||||
body.book #header{text-align:center}
|
||||
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
|
||||
body.book #header .details{border:0!important;display:block;padding:0!important}
|
||||
body.book #header .details span:first-child{margin-left:0!important}
|
||||
body.book #header .details br{display:block}
|
||||
body.book #header .details br+span::before{content:none!important}
|
||||
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
|
||||
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
|
||||
.listingblock code[data-lang]::before{display:block}
|
||||
#footer{padding:0 .9375em}
|
||||
.hide-on-print{display:none!important}
|
||||
.print-only{display:block!important}
|
||||
.hide-for-print{display:none!important}
|
||||
.show-for-print{display:inherit!important}}
|
||||
@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
|
||||
.sect1{padding:0!important}
|
||||
.sect1+.sect1{border:0}
|
||||
#footer{background:none}
|
||||
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
|
||||
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
|
||||
|
||||
|
||||
|
||||
/* CUSTOMISATIONS */
|
||||
/* Change the values in root for quick customisation. If you want even more fine grain... venture further. */
|
||||
:root {
|
||||
--textcolor: #CACBCE;
|
||||
--textcoloralt: #e7b649;
|
||||
--background: #3B3B3D;
|
||||
--sidebarbackground: #2C2C30;
|
||||
--header1color: #4adb22;
|
||||
--header2color: #6de597;
|
||||
--quotecolor: #20b82b;
|
||||
--toccolor: #f3bf4a;
|
||||
--toccolorhover: #eece83;
|
||||
--linkcolor: #6de597;
|
||||
--linkhovercolor: #8fdaa9;
|
||||
--tipcolor: #f0f0f0;
|
||||
--notecolor: #f3bf4a;
|
||||
--warningcolor: #FF7D7D;
|
||||
}
|
||||
|
||||
/* Text styles */
|
||||
|
||||
body{font-family: "Noto Sans",sans-serif;background-color: var(--background);color:var(--textcolor);}
|
||||
|
||||
h1{color:var(--header1color) !important;font-family:"Noto Sans",sans-serif;}
|
||||
h2,h3,h4,h5,h6{color:var(--header2color) !important;font-family:"Noto Sans",sans-serif;}
|
||||
.title{color:var(--textcolor) !important;font-family:"Noto Sans",sans-serif;font-style: normal; font-weight: normal;}
|
||||
p{font-family: "Noto Sans",sans-serif !important}
|
||||
#toc.toc2 a:link{color:var(--toccolor)}
|
||||
#toc.toc2 a:hover{color:var(--toccolorhover)}
|
||||
blockquote{color:var(--quotecolor) !important}
|
||||
.quoteblock{color:var(--textcolor)}
|
||||
code{color:var(--textcoloralt);background-color: var(--sidebarbackground) !important}
|
||||
|
||||
|
||||
/* Table styles */
|
||||
th{background-color: var(--background);color: var(--textcolor) !important;}
|
||||
td{background-color: var(--background);color: var(--textcoloralt) !important;}
|
||||
|
||||
|
||||
#toc.toc2{background-color:var(--sidebarbackground);}
|
||||
#toctitle{color:var(--textcolor);}
|
||||
|
||||
/* Responsiveness fixes */
|
||||
video {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@media all and (max-width: 600px) {
|
||||
table {
|
||||
width: 55vw!important;
|
||||
font-size: 3vw;
|
||||
}
|
||||
}
|
||||
|
||||
.exampleblock > .content {
|
||||
background-color: var(--background);
|
||||
}
|
||||
|
||||
a {color: var(--linkcolor);}
|
||||
a:hover {color: var(--linkhovercolor);}
|
||||
|
||||
.admonitionblock.tip td.content, .admonitionblock td.icon .icon-tip::before {
|
||||
text-shadow: none;
|
||||
color: var(--tipcolor) !important;
|
||||
}
|
||||
|
||||
.admonitionblock.note td.content, .admonitionblock td.icon .icon-note::before {
|
||||
color: var(--notecolor) !important;
|
||||
}
|
||||
|
||||
.admonitionblock.important td.content, .admonitionblock td.icon .icon-important::before {
|
||||
color: var(--warningcolor) !important;
|
||||
}
|
||||
|
||||
.admonitionblock.warning td.content, .admonitionblock td.icon .icon-warning::before {
|
||||
color: var(--warningcolor) !important;
|
||||
}
|
||||
|
||||
#preamble > .sectionbody > .paragraph:first-of-type p {
|
||||
color: var(--textcolor);
|
||||
}
|
||||
|
||||
.quoteblock blockquote::before {
|
||||
color: var(--header1color);
|
||||
}
|
||||
.quoteblock .attribution cite, .verseblock .attribution cite {
|
||||
color: var(--textcolor);
|
||||
}
|
||||
.verseblock pre {
|
||||
color: var(--textcolor);
|
||||
}
|
||||
.quoteblock blockquote, .quoteblock blockquote p {
|
||||
color: var(--textcolor);
|
||||
}
|
||||
|
||||
.sidebarblock {
|
||||
background: var(--sidebarbackground);
|
||||
}
|
||||
.literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint {
|
||||
background: var(--sidebarbackground);
|
||||
color: var(--textcolor);
|
||||
}
|
||||
|
||||
#header .details {
|
||||
color: var(--textcolor);
|
||||
}
|
||||
#header .details span.email a {
|
||||
color: var(--toccolor);
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 3em;
|
||||
}
|
||||
.subtitle {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
30
docs/styles/pdf_theme.yml
Normal file
@@ -0,0 +1,30 @@
|
||||
page:
|
||||
layout: portrait
|
||||
margin: [0.75in, 1in, 0.75in, 1in]
|
||||
size: Letter
|
||||
base:
|
||||
font-color: #333333
|
||||
font-family: Times-Roman
|
||||
font-size: 12
|
||||
line-height-length: 17
|
||||
line-height: $base-line-height-length / $base-font-size
|
||||
vertical-spacing: $base-line-height-length
|
||||
heading:
|
||||
font-color: #262626
|
||||
font-size: 17
|
||||
font-style: bold
|
||||
line-height: 1.2
|
||||
margin-bottom: $vertical-spacing
|
||||
link:
|
||||
font-color: #002FA7
|
||||
outline-list:
|
||||
indent: $base-font-size * 1.5
|
||||
footer:
|
||||
height: $base-line-height-length * 2.5
|
||||
line-height: 1
|
||||
recto:
|
||||
right:
|
||||
content: '{page-number}'
|
||||
verso:
|
||||
left:
|
||||
content: $footer-recto-right-content
|
||||
7
docs/topics/.sharedheader
Normal file
@@ -0,0 +1,7 @@
|
||||
KeePassXC Team <team@keepassxc.org>
|
||||
v2.6.0
|
||||
:data-uri:
|
||||
:homepage: https://keepassxc.org
|
||||
:stylesheet: ../styles/dark.css
|
||||
:icons: font
|
||||
:toc: left
|
||||