Icon updates

This commit is contained in:
varjolintu 2020-06-07 11:13:46 +03:00
parent 1ef4543f95
commit fa9e8d9afd
28 changed files with 176 additions and 700 deletions

View file

@ -163,6 +163,10 @@
"message": "Database is locked",
"description": "Username field icon hover text when database is locked."
},
"usernameDisconnectedFieldText": {
"message": "KeePassXC is disconnected",
"description": "Username field icon hover text when KeePassXC is disconnected."
},
"usernameFieldIcon": {
"message": "Username field icon",
"description": "Username field icon text."

View file

@ -35,8 +35,10 @@ browserAction.showDefault = async function(tab) {
console.log('Error: Cannot show default popup: ' + err);
});
if (!response || keepass.isDatabaseClosed || !keepass.isKeePassXCAvailable) {
if (!response && !keepass.isKeePassXCAvailable) {
stackData.iconType = 'cross';
} else if (keepass.isKeePassXCAvailable && keepass.isDatabaseClosed) {
stackData.iconType = 'locked';
}
if (page.tabs[tab.id] && page.tabs[tab.id].loginList.length > 0) {

View file

@ -512,6 +512,7 @@ keepass.getDatabaseHash = async function(tab, args = []) {
const encrypted = keepass.encrypt(messageData, nonce);
if (encrypted.length <= 0) {
keepass.handleError(tab, kpErrors.PUBLIC_KEY_NOT_FOUND);
keepass.updateDatabaseHashToContent();
return keepass.databaseHash;
}
@ -599,6 +600,7 @@ keepass.changePublicKeys = async function(tab, enableTimeout = false, connection
keepass.handleError(tab, kpErrors.KEY_CHANGE_FAILED);
}
keepass.updateDatabaseHashToContent();
return false;
}
@ -1169,7 +1171,7 @@ keepass.updateDatabase = async function() {
keepass.associated.hash = null;
await keepass.testAssociation(null);
const configured = await keepass.isConfigured();
keepass.updatePopup(configured ? 'normal' : 'cross');
keepass.updatePopup(configured ? 'normal' : 'locked');
keepass.updateDatabaseHashToContent();
};
@ -1180,7 +1182,8 @@ keepass.updateDatabaseHashToContent = async function() {
// Send message to content script
browser.tabs.sendMessage(tabs[0].id, {
action: 'check_database_hash',
hash: { old: keepass.previousDatabaseHash, new: keepass.databaseHash }
hash: { old: keepass.previousDatabaseHash, new: keepass.databaseHash },
connected: keepass.isKeePassXCAvailable
}).catch((err) => {
console.log('Error: No content script available for this tab.');
});

View file

@ -6,6 +6,12 @@ const ManualFill = {
BOTH: 2
};
const DatabaseState = {
DISCONNECTED: 0,
LOCKED: 1,
UNLOCKED: 2
}
const acceptedOTPFields = [
'2fa',
'auth',
@ -22,7 +28,7 @@ _called.retrieveCredentials = false;
_called.clearLogins = false;
_called.manualFillRequested = ManualFill.NONE;
let _singleInputEnabledForPage = false;
let _databaseClosed = true;
let _databaseState = DatabaseState.DISCONNECTED;
const _maximumInputs = 100;
const _maximumMutations = 200;
@ -60,7 +66,7 @@ browser.runtime.onMessage.addListener(async function(req, sender) {
} else if (req.action === 'ignore_site') {
kpxc.ignoreSite(req.args);
} else if (req.action === 'check_database_hash' && 'hash' in req) {
kpxc.detectDatabaseChange(req.hash);
kpxc.detectDatabaseChange(req);
} else if (req.action === 'remember_credentials') {
kpxc.contextMenuRememberCredentials();
} else if (req.action === 'choose_credential_fields') {
@ -544,7 +550,7 @@ kpxcFields.getPasswordField = function(usernameId, checkDisabled) {
passwordField = null;
}
kpxcPasswordIcons.newIcon(kpxc.settings.usePasswordGeneratorIcons, passwordField, [], undefined, _databaseClosed);
kpxcPasswordIcons.newIcon(kpxc.settings.usePasswordGeneratorIcons, passwordField, [], undefined, _databaseState);
} else {
// Search all inputs on page
const inputs = kpxcFields.getAllFields();
@ -595,7 +601,7 @@ kpxcFields.prepareCombinations = async function(combinations) {
const usernameField = c.username ? _f(c.username) : field;
if (kpxc.settings.showLoginFormIcon && await kpxc.passwordFilled() === false) {
kpxcUsernameIcons.newIcon(usernameField, _databaseClosed);
kpxcUsernameIcons.newIcon(usernameField, _databaseState);
}
// Initialize form-submit for remembering credentials
@ -615,7 +621,7 @@ kpxcFields.useDefinedCredentialFields = function() {
// Handle custom TOTP field
if (_f(creds.totp)) {
kpxcTOTPIcons.newIcon(_f(creds.totp), _databaseClosed);
kpxcTOTPIcons.newIcon(_f(creds.totp), _databaseState);
}
let found = _f(creds.username) || _f(creds.password);
@ -929,20 +935,20 @@ kpxc.clearAllFromPage = function() {
// Switch credentials if database is changed or closed
kpxc.detectDatabaseChange = async function(response) {
_databaseClosed = true;
_databaseState = DatabaseState.LOCKED;
kpxc.clearAllFromPage();
kpxc.switchIcons(true);
kpxc.switchIcons();
if (document.visibilityState !== 'hidden') {
if (response.new !== '' && response.new !== response.old) {
if (response.hash.new !== '' && response.hash.new !== response.hash.old) {
_called.retrieveCredentials = false;
const settings = await browser.runtime.sendMessage({
action: 'load_settings'
});
kpxc.settings = settings;
await kpxc.initCredentialFields(true);
kpxc.switchIcons(false); // Unlocked
_databaseClosed = false;
_databaseState = DatabaseState.UNLOCKED;
kpxc.switchIcons();
// If user has requested a manual fill through context menu the actual credential filling
// is handled here when the opened database has been regognized. It's not a pretty hack.
@ -950,6 +956,9 @@ kpxc.detectDatabaseChange = async function(response) {
await kpxc.fillInFromActiveElement(false, _called.manualFillRequested === ManualFill.PASS);
_called.manualFillRequested = ManualFill.NONE;
}
} else if (!response.connected) {
_databaseState = DatabaseState.DISCONNECTED;
kpxc.switchIcons();
}
}
};
@ -1008,12 +1017,13 @@ kpxc.initCredentialFields = async function(forceCall, inputs) {
return;
}
// Update database closed status
// Check database closed status
const res = await browser.runtime.sendMessage({
action: 'get_status',
args: [ true ]
});
_databaseClosed = res.databaseClosed;
_databaseState = !res.keePassXCAvailable ? DatabaseState.DISCONNECTED : DatabaseState.LOCKED;
kpxcFields.prepareVisibleFieldsWithID('select');
kpxc.initPasswordGenerator(inputs);
@ -1061,7 +1071,7 @@ kpxc.initPasswordGenerator = function(inputs) {
for (let i = 0; i < inputs.length; i++) {
if (inputs[i] && inputs[i].getLowerCaseAttribute('type') === 'password') {
kpxcPasswordIcons.newIcon(true, inputs[i], inputs, i, _databaseClosed);
kpxcPasswordIcons.newIcon(true, inputs[i], inputs, i, _databaseState);
}
}
};
@ -1073,7 +1083,7 @@ kpxc.initOTPFields = function(inputs) {
const autocomplete = i.getLowerCaseAttribute('autocomplete');
if (autocomplete === 'one-time-code' || acceptedOTPFields.some(f => (id && id.includes(f)) || (name && name.includes(f)))) {
kpxcTOTPIcons.newIcon(i, _databaseClosed);
kpxcTOTPIcons.newIcon(i, _databaseState);
}
}
};
@ -1876,10 +1886,10 @@ kpxc.getDocumentLocation = function() {
};
// Sets the icons to corresponding database lock status
kpxc.switchIcons = function(locked) {
kpxcUsernameIcons.switchIcon(locked);
kpxcPasswordIcons.switchIcon(locked);
kpxcTOTPIcons.switchIcon(locked);
kpxc.switchIcons = function() {
kpxcUsernameIcons.switchIcon(_databaseState);
kpxcPasswordIcons.switchIcon(_databaseState);
kpxcTOTPIcons.switchIcon(_databaseState);
};
kpxc.setPasswordFilled = function(state) {
@ -1918,8 +1928,13 @@ kpxcEvents.triggerActivatedTab = async function() {
kpxc.init();
// Update username field lock state
const state = await browser.runtime.sendMessage({ action: 'check_database_hash' });
kpxc.switchIcons(state === '');
const res = await browser.runtime.sendMessage({
action: 'get_status',
args: [ true ]
});
_databaseState = !res.keePassXCAvailable ? DatabaseState.DISCONNECTED : DatabaseState.LOCKED;
kpxc.switchIcons();
// initCredentialFields calls also "retrieve_credentials", to prevent it
// check of init() was already called

View file

@ -3,20 +3,20 @@
const kpxcPasswordIcons = {};
kpxcPasswordIcons.icons = [];
kpxcPasswordIcons.newIcon = function(useIcons, field, inputs, pos, databaseClosed = true) {
kpxcPasswordIcons.icons.push(new PasswordIcon(useIcons, field, inputs, pos, databaseClosed));
kpxcPasswordIcons.newIcon = function(useIcons, field, inputs, pos, databaseState = DatabaseState.DISCONNECTED) {
kpxcPasswordIcons.icons.push(new PasswordIcon(useIcons, field, inputs, pos, databaseState));
};
kpxcPasswordIcons.switchIcon = function(locked) {
kpxcPasswordIcons.icons.forEach(u => u.switchIcon(locked));
kpxcPasswordIcons.switchIcon = function(state) {
kpxcPasswordIcons.icons.forEach(u => u.switchIcon(state));
};
class PasswordIcon extends Icon {
constructor(useIcons, field, inputs, pos, databaseClosed) {
constructor(useIcons, field, inputs, pos, databaseState) {
super();
this.useIcons = useIcons;
this.databaseClosed = databaseClosed;
this.databaseState = databaseState;
this.initField(field, inputs, pos);
kpxcUI.monitorIconPosition(this);
@ -77,7 +77,7 @@ PasswordIcon.prototype.createIcon = function(field) {
icon.style.width = Pixels(size);
icon.style.height = Pixels(size);
if (this.databaseClosed) {
if (this.databaseState === DatabaseState.DISCONNECTED || this.databaseState === DatabaseState.LOCKED) {
icon.style.filter = 'saturate(0%)';
}

View file

@ -7,21 +7,21 @@ const ignoredTypes = [ 'email', 'password', 'username' ];
var kpxcTOTPIcons = {};
kpxcTOTPIcons.icons = [];
kpxcTOTPIcons.newIcon = function(field, databaseClosed = true) {
kpxcTOTPIcons.icons.push(new TOTPFieldIcon(field, databaseClosed));
kpxcTOTPIcons.newIcon = function(field, databaseState = DatabaseState.DISCONNECTED) {
kpxcTOTPIcons.icons.push(new TOTPFieldIcon(field, databaseState));
};
kpxcTOTPIcons.switchIcon = function(locked) {
kpxcTOTPIcons.icons.forEach(u => u.switchIcon(locked));
kpxcTOTPIcons.switchIcon = function(state) {
kpxcTOTPIcons.icons.forEach(u => u.switchIcon(state));
};
class TOTPFieldIcon extends Icon {
constructor(field, databaseClosed = true) {
constructor(field, databaseState = DatabaseState.DISCONNECTED) {
super();
this.icon = null;
this.inputField = null;
this.databaseClosed = databaseClosed;
this.databaseState = databaseState;
this.initField(field);
kpxcUI.monitorIconPosition(this);
@ -70,7 +70,7 @@ TOTPFieldIcon.prototype.createIcon = function(field) {
icon.style.width = Pixels(size);
icon.style.height = Pixels(size);
if (this.databaseClosed) {
if (this.databaseState === DatabaseState.DISCONNECTED || this.databaseState === DatabaseState.LOCKED) {
icon.style.filter = 'saturate(0%)';
}

View file

@ -22,15 +22,15 @@ class Icon {
}
}
switchIcon(locked) {
switchIcon(state) {
if (!this.icon) {
return;
}
if (locked) {
this.icon.style.filter = 'saturate(0%)';
} else {
if (state === DatabaseState.UNLOCKED) {
this.icon.style.filter = 'saturate(100%)';
} else {
this.icon.style.filter = 'saturate(0%)';
}
}
}
@ -94,7 +94,6 @@ kpxcUI.setIconPosition = function(icon, field) {
icon.style.top = Pixels(rect.top + document.scrollingElement.scrollTop + offset + 1);
icon.style.left = Pixels(rect.left + document.scrollingElement.scrollLeft + field.offsetWidth - size - offset);
}
};
/**

View file

@ -3,8 +3,8 @@
const kpxcUsernameIcons = {};
kpxcUsernameIcons.icons = [];
kpxcUsernameIcons.newIcon = function(field, databaseClosed = true) {
kpxcUsernameIcons.icons.push(new UsernameFieldIcon(field, databaseClosed));
kpxcUsernameIcons.newIcon = function(field, databaseState = DatabaseState.DISCONNECTED) {
kpxcUsernameIcons.icons.push(new UsernameFieldIcon(field, databaseState));
};
kpxcUsernameIcons.switchIcon = function(locked) {
@ -13,30 +13,24 @@ kpxcUsernameIcons.switchIcon = function(locked) {
class UsernameFieldIcon extends Icon {
constructor(field, databaseClosed = true) {
constructor(field, databaseState = DatabaseState.DISCONNECTED) {
super();
this.databaseClosed = databaseClosed;
this.databaseState = databaseState;
this.icon = null;
this.inputField = null;
this.initField(field,);
this.initField(field);
kpxcUI.monitorIconPosition(this);
}
switchIcon(locked) {
switchIcon(state) {
if (!this.icon) {
return;
}
if (locked) {
this.icon.classList.remove(getIconClassName());
this.icon.classList.add(getIconClassName(true));
this.icon.title = tr('usernameLockedFieldText');
} else {
this.icon.classList.remove(getIconClassName(true));
this.icon.classList.add(getIconClassName());
this.icon.title = tr('usernameFieldText');
}
this.icon.classList.remove('lock', 'moz-lock', 'unlock', 'moz-unlock', 'disconnected', 'moz-disconnected');
this.icon.classList.add(getIconClassName(state));
this.icon.title = getIconText(state);
}
}
@ -66,7 +60,7 @@ UsernameFieldIcon.prototype.createIcon = function(target) {
}
const field = target;
const className = getIconClassName(this.databaseClosed);
const className = getIconClassName(this.databaseState);
// Size the icon dynamically, but not greater than 24 or smaller than 14
const size = Math.max(Math.min(24, field.offsetHeight - 4), 14);
@ -82,7 +76,7 @@ UsernameFieldIcon.prototype.createIcon = function(target) {
const icon = kpxcUI.createElement('div', 'kpxc kpxc-username-icon ' + className,
{
'title': this.databaseClosed ? tr('usernameLockedFieldText') : tr('usernameFieldText'),
'title': getIconText(this.databaseState),
'alt': tr('usernameFieldIcon'),
'size': size,
'offset': offset,
@ -143,13 +137,25 @@ const iconClicked = async function(field, icon) {
}
};
const getIconClassName = function(locked = false) {
if (locked) {
const getIconClassName = function(state = DatabaseState.UNLOCKED) {
if (state === DatabaseState.LOCKED) {
return (isFirefox() ? 'lock-moz' : 'lock');
} else if (state === DatabaseState.DISCONNECTED) {
return (isFirefox() ? 'lock-disconnected' : 'disconnected');
}
return (isFirefox() ? 'unlock-moz' : 'unlock');
};
const getIconText = function(state) {
if (state === DatabaseState.LOCKED) {
return tr('usernameLockedFieldText');
} else if (state === DatabaseState.DISCONNECTED) {
return tr('usernameDisconnectedFieldText');
}
return tr('usernameFieldText');
};
const fillCredentials = function(field) {
const fieldId = field.getAttribute('data-kpxc-id');
kpxcFields.prepareId(fieldId);

View file

@ -3,6 +3,16 @@
cursor: pointer;
}
.kpxc-username-icon.disconnected {
background: url('chrome-extension://__MSG_@@extension_id__/icons/disconnected.svg') right no-repeat;
background-size: contain;
}
.kpxc-username-icon.disconnected-moz {
background: url('moz-extension://__MSG_@@extension_id__/icons/disconnected.svg') right no-repeat;
background-size: contain;
}
.kpxc-username-icon.lock {
background: url('chrome-extension://__MSG_@@extension_id__/icons/locked.svg') right no-repeat;
background-size: contain;
@ -21,4 +31,4 @@
.kpxc-username-icon.unlock-moz {
background: url('moz-extension://__MSG_@@extension_id__/icons/keepassxc.svg') right no-repeat;
background-size: contain;
}
}

View file

@ -0,0 +1 @@
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:version="1.0 (4035a4f, 2020-05-01)" sodipodi:docname="keepassxc-temp.svg" viewBox="0 0 100 100" id="svg2"><defs id="defs854"/><sodipodi:namedview inkscape:current-layer="svg2" inkscape:window-maximized="0" inkscape:window-y="22" inkscape:window-x="0" inkscape:cy="78.296519" inkscape:cx="-110.28072" inkscape:zoom="1.435" showgrid="false" id="namedview852" inkscape:window-height="1057" inkscape:window-width="1765" inkscape:pageshadow="2" inkscape:pageopacity="0" guidetolerance="10" gridtolerance="10" objecttolerance="10" borderopacity="1" bordercolor="#666666" pagecolor="#ffffff" inkscape:document-rotation="0"/><circle id="circle833" r="45.9" cy="50" cx="50" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff;stroke:#515151;stroke-width:3.1319;stroke-linecap:round;stroke-linejoin:round"/><linearGradient gradientTransform="matrix(1 0 0 -1 0 -1384.1102)" y2="-1392.7863" x2="49.6968" y1="-1470.9402" x1="50.2693" gradientUnits="userSpaceOnUse" id="SVGID_1_"><stop id="stop835" style="stop-color:gray" offset="0"/><stop id="stop837" style="stop-color:#4b4b4d" offset="1"/></linearGradient><path id="path840" d="M56.7 13.7c.1.5.2 1 .2 1.5.0 3.8-3.1 6.9-6.9 6.9s-6.9-3.1-6.9-6.9c0-.5.1-1 .2-1.5 2.2-.4 4.5-.6 6.7-.6C52.3 13 54.5 13.3 56.7 13.7zM30.6 22.1c0 7.7 4.5 14.4 11.1 17.5v35.1L50 83l8.3-8.3-.5-7.3 3.9-3.9-3.9-3.9 5.9-5.9-5.9-5.9.5-8.2c6.5-3.1 11.1-9.8 11.1-17.5.0-1.3-.1-2.5-.4-3.8C80.1 25 86.9 37 87 50c0 20.4-16.5 37-37 37-20.4.0-37-16.5-37-37 0-13 6.8-25 18-31.7C30.8 19.6 30.6 20.8 30.6 22.1zM44.5 44.2h2.8v27.7h-2.8V44.2v0 0z" style="fill:url(#SVGID_1_)"/><linearGradient gradientTransform="matrix(1 0 0 1 0 -1484)" y2="1574.0038" x2="73.8" y1="1532.1382" x1="73.8" gradientUnits="userSpaceOnUse" id="SVGID_2_"><stop id="stop842" style="stop-color:#d69029" offset="0"/><stop id="stop844" style="stop-color:#af7125" offset="1"/></linearGradient><rect style="fill:red;stroke-width:.991528;fill-opacity:.50439882" id="rect845" width="40" height="40" x="60" y="60"/><rect y="65" x="65" height="35" width="35" id="rect847" style="fill:red;fill-opacity:1;stroke-width:.867586"/><g style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:43.6198px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:1.09049" id="text946" transform="scale(0.99105545,1.0090253)" aria-label="X"><path id="path849" style="stroke-width:1.09049" d="M97.875515 96.132332H88.418879L81.581986 85.695954 74.617301 96.132332H65.58664L76.832369 80.158284 65.820926 64.418522h9.435337l6.602607 9.882611 6.794295-9.882611h9.05196l-11.07534 15.420281z"/></g></svg>

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -1,126 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="100"
height="100"
viewBox="0 0 99.999997 100"
id="svg2"
version="1.1">
<defs
id="defs4">
<linearGradient
id="linearGradient4257">
<stop
style="stop-color:#808080;stop-opacity:1"
offset="0"
id="stop4259" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop4261" />
</linearGradient>
<linearGradient
id="linearGradient4316-3-6">
<stop
style="stop-color:#226e23;stop-opacity:1"
offset="0"
id="stop4173" />
<stop
style="stop-color:#63ab3a;stop-opacity:1"
offset="1"
id="stop4175" />
</linearGradient>
<linearGradient
id="linearGradient4316-3">
<stop
id="stop4167"
offset="0"
style="stop-color:#226e23;stop-opacity:1" />
<stop
id="stop4169"
offset="1"
style="stop-color:#63ab3a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4316">
<stop
style="stop-color:#226e23;stop-opacity:1"
offset="0"
id="stop4318" />
<stop
style="stop-color:#63ab3a;stop-opacity:1"
offset="1"
id="stop4320" />
</linearGradient>
<linearGradient
id="linearGradient4153"
osb:paint="solid">
<stop
style="stop-color:#b3b3b3;stop-opacity:1;"
offset="0"
id="stop4155" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061215,-1008.6172)" />
<radialGradient
gradientUnits="userSpaceOnUse"
r="43.571938"
fy="41.189114"
fx="-82.91127"
cy="41.189114"
cx="-82.91127"
id="radialGradient5106"
xlink:href="#linearGradient4316" />
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324-3"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,118.96071,-1109.1994)" />
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324-3-6"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061235,-1008.6171)" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="86.356995"
x2="53.238865"
y1="12.753036"
x1="53.238865"
id="linearGradient5199"
xlink:href="#linearGradient4316-3-6" />
<linearGradient
xlink:href="#linearGradient4257"
id="linearGradient4263"
x1="50.09866"
y1="86.831215"
x2="49.526104"
y2="8.6772995"
gradientUnits="userSpaceOnUse" />
</defs>
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4f, 2020-05-01)"
sodipodi:docname="keepassxc-dark.svg"
version="1.1"
viewBox="0 0 100 100"
id="svg2">
<metadata
id="metadata7">
id="metadata856">
<rdf:RDF>
<cc:Work
rdf:about="">
@ -131,24 +24,70 @@
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs854" />
<sodipodi:namedview
inkscape:current-layer="svg2"
inkscape:window-maximized="0"
inkscape:window-y="22"
inkscape:window-x="0"
inkscape:cy="50"
inkscape:cx="50"
inkscape:zoom="5.74"
showgrid="false"
id="namedview852"
inkscape:window-height="1057"
inkscape:window-width="1765"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<circle
id="circle833"
r="45.9"
cy="50"
cx="50"
id="path5201"
style="opacity:0.87099998;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.13186812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373"
r="45.934067" />
<circle
r="42.32143"
cy="50.000023"
cx="50"
id="path3336"
style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff;stroke:#515151;stroke-width:3.1319;stroke-linecap:round;stroke-linejoin:round" />
<linearGradient
gradientTransform="matrix(1 0 0 -1 0 -1384.1102)"
y2="-1392.7863"
x2="49.6968"
y1="-1470.9402"
x1="50.2693"
gradientUnits="userSpaceOnUse"
id="SVGID_1_">
<stop
id="stop835"
style="stop-color:gray"
offset="0" />
<stop
id="stop837"
style="stop-color:#4b4b4d"
offset="1" />
</linearGradient>
<path
id="path4264"
d="M 50,6.3242189 A 43.676472,43.676472 0 0 0 6.3242189,50 43.676472,43.676472 0 0 0 50,93.675781 43.676472,43.676472 0 0 0 93.675781,50 43.676472,43.676472 0 0 0 50,6.3242189 Z m 0,6.7109371 c 2.26423,0.0083 4.523397,0.224904 6.748047,0.646485 0.10716,0.48368 0.167969,0.98402 0.167969,1.5 0,3.82265 -3.097269,6.918015 -6.917969,6.916015 -3.82069,0.0022 -6.916016,-3.091382 -6.916016,-6.914062 0,-0.5181 0.06204,-1.02034 0.169922,-1.50586 C 45.476743,13.257569 47.7359,13.042035 50,13.035156 Z m -18.994141,5.298828 c -0.24053,1.21916 -0.371333,2.474142 -0.371093,3.763672 0,7.71966 4.528393,14.367959 11.064453,17.480469 l 0,35.089844 8.298828,8.298828 8.300781,-8.300781 -0.476562,-7.34961 3.914062,-3.912109 -3.914062,-3.912109 5.871093,-5.867188 -5.871093,-5.871094 0.476562,-8.177734 c 6.53802,-3.11057 11.066406,-9.758856 11.066406,-17.478516 0,-1.28696 -0.133397,-2.540982 -0.373046,-3.757812 C 80.124647,25.007387 86.946634,37.023584 86.964844,50 86.964304,70.414588 70.41459,86.964292 50,86.964844 29.58541,86.964292 13.035701,70.414589 13.035156,50 13.050706,37.021755 19.872279,25.003208 31.005859,18.333984 Z m 13.458985,25.898438 2.767578,0 0,27.666016 -2.765625,0 -0.002,-27.664063 0,-0.002 z"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path3336-3-2-7"
d="m 56.747561,13.681815 c 0.107159,0.48368 0.16838,0.98465 0.16838,1.50063 0,3.822651 -3.097351,6.917921 -6.91805,6.915921 -3.82069,0.0022 -6.91594,-3.09115 -6.91594,-6.913831 0,-0.5181 0.0626,-1.02142 0.17048,-1.50694 C 45.477221,13.25743 47.7359,13.042554 50,13.035675 c 2.26423,0.0083 4.52291,0.224559 6.74756,0.64614 z m -26.11261,8.416551 c 0,7.71966 4.528179,14.36677 11.064239,17.47928 l 0,35.091179 8.2987,8.2987 8.30082,-8.3008 -0.47566,-7.3495 3.91258,-3.9126 -3.91258,-3.9126 5.86992,-5.867799 -5.86992,-5.8699 0.47565,-8.17878 c 6.53802,-3.11057 11.06635,-9.75752 11.06635,-17.47718 0,-1.28696 -0.13288,-2.54209 -0.37253,-3.75892 11.132459,6.667543 17.953549,18.684164 17.97176,31.66058 C 86.96374,70.414615 70.414591,86.963775 50,86.964325 29.58541,86.963775 13.03626,70.414615 13.03572,50.000026 c 0.0155,-12.978245 6.83607,-24.997676 17.96965,-31.6669 -0.24053,1.21916 -0.37066,2.47571 -0.37042,3.76524 z m 13.829769,22.13472 2.76764,0 0,27.665839 -2.76554,0 -0.002,-27.663749 0,-0.002 z"
style="opacity:0.94;fill:url(#linearGradient4263);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
id="path840"
d="M56.7 13.7c.1.5.2 1 .2 1.5.0 3.8-3.1 6.9-6.9 6.9-3.8.0-6.9-3.1-6.9-6.9.0-.5.1-1 .2-1.5 2.2-.4 4.5-.6 6.7-.6C52.3 13 54.5 13.3 56.7 13.7zM30.6 22.1c0 7.7 4.5 14.4 11.1 17.5v35.1L50 83l8.3-8.3-.5-7.3 3.9-3.9-3.9-3.9 5.9-5.9-5.9-5.9.5-8.2c6.5-3.1 11.1-9.8 11.1-17.5.0-1.3-.1-2.5-.4-3.8C80.1 25 86.9 37 87 50c0 20.4-16.5 37-37 37-20.4.0-37-16.5-37-37 0-13 6.8-25 18-31.7C30.8 19.6 30.6 20.8 30.6 22.1zM44.5 44.2h2.8v27.7h-2.8V44.2v0 0z"
style="fill:url(#SVGID_1_)" />
<linearGradient
gradientTransform="matrix(1 0 0 1 0 -1484)"
y2="1574.0038"
x2="73.8"
y1="1532.1382"
x1="73.8"
gradientUnits="userSpaceOnUse"
id="SVGID_2_">
<stop
id="stop842"
style="stop-color:#d69029"
offset="0" />
<stop
id="stop844"
style="stop-color:#af7125"
offset="1" />
</linearGradient>
</svg>

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 838 B

After

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

84
keepassxc-browser/icons/key.svg Executable file → Normal file
View file

@ -1,83 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1580.5179"
height="1580.6893"
viewBox="0 0 1580.5179 1580.6893"
version="1.1"
id="svg4"
sodipodi:docname="key.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<cc:license
rdf:resource="http://scripts.sil.org/OFL" />
</cc:Work>
<cc:License
rdf:about="http://scripts.sil.org/OFL">
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/Reproduction" />
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/Distribution" />
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/Embedding" />
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeWorks" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/Notice" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/Attribution" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/ShareAlike" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeRenaming" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/BundlingWhenSelling" />
</cc:License>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1912"
inkscape:window-height="1123"
id="namedview6"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.13169643"
inkscape:cx="-3350.8437"
inkscape:cy="657.46337"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="m 1031.9282,172.22131 c 95.8833,0.36701 191.9895,37.30487 265.5838,110.57282 146.8843,147.53692 148.0881,384.75593 2.5897,530.70544 -97.7018,97.38591 -236.5332,128.57231 -361.78173,94.27804 l -128.30946,128.30879 -167.06446,-95.90478 -31.28574,31.28434 92.8776,155.44494 -31.28575,31.2844 -155.44355,-92.8755 -31.28576,31.2843 92.87695,155.445 -31.28577,31.2836 -155.44491,-92.8755 -31.28439,31.2843 92.87557,155.445 -31.28374,31.2843 H 216.35415 c -24.46014,0 -44.15188,-19.6917 -44.15188,-44.1518 V 1144.0674 L 673.02244,643.24721 C 638.43635,517.86281 669.64414,378.6713 767.67162,281.07152 840.38147,208.05744 936.04477,171.85429 1031.9288,172.22131 Z m 96.9043,169.51074 c -28.3068,0 -56.613,10.79789 -78.2108,32.39573 -43.1944,43.19503 -43.1944,113.22678 0,156.42179 43.1949,43.19502 113.2274,43.19502 156.4217,0 43.1957,-43.19501 43.1957,-113.22676 0,-156.42179 -21.5972,-21.59784 -49.904,-32.39642 -78.2109,-32.39642 z"
id="path2"
inkscape:connector-curvature="0"
style="fill:#6cac4d;fill-opacity:1;stroke:#467720;stroke-width:44.10611725;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="1580.5179" height="1580.6893" viewBox="0 0 1580.5179 1580.6893" id="svg4" sodipodi:docname="key.svg" inkscape:version="0.92.2 5c3e80d, 2017-08-06"><defs id="defs8"/><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1912" inkscape:window-height="1123" id="namedview6" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:zoom=".13169643" inkscape:cx="-3350.8437" inkscape:cy="657.46337" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg4"/><path d="m1031.9282 172.22131c95.8833.36701 191.9895 37.30487 265.5838 110.57282 146.8843 147.53692 148.0881 384.75593 2.5897 530.70544-97.7018 97.38591-236.5332 128.57231-361.78173 94.27804L810.01051 1036.0864l-167.06446-95.90478-31.28574 31.28434 92.8776 155.44494-31.28575 31.2844-155.44355-92.8755-31.28576 31.2843 92.87695 155.445-31.28577 31.2836-155.44491-92.8755-31.28439 31.2843 92.87557 155.445-31.28374 31.2843H216.35415c-24.46014.0-44.15188-19.6917-44.15188-44.1518V1144.0674L673.02244 643.24721C638.43635 517.86281 669.64414 378.6713 767.67162 281.07152 840.38147 208.05744 936.04477 171.85429 1031.9288 172.22131zm96.9043 169.51074c-28.3068.0-56.613 10.79789-78.2108 32.39573-43.1944 43.19503-43.1944 113.22678.0 156.42179 43.1949 43.19502 113.2274 43.19502 156.4217.0 43.1957-43.19501 43.1957-113.22676.0-156.42179-21.5972-21.59784-49.904-32.39642-78.2109-32.39642z" id="path2" inkscape:connector-curvature="0" style="fill:#6cac4d;fill-opacity:1;stroke:#467720;stroke-width:44.10611725;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/></svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -1,208 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
viewBox="0 0 99.999997 100"
id="svg2"
version="1.1"
sodipodi:docname="locked.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1231"
inkscape:window-height="877"
id="namedview29"
showgrid="false"
inkscape:zoom="2.36"
inkscape:cx="137.9347"
inkscape:cy="-19.107205"
inkscape:window-x="867"
inkscape:window-y="158"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<linearGradient
id="linearGradient4257">
<stop
style="stop-color:#808080;stop-opacity:1"
offset="0"
id="stop4259" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop4261" />
</linearGradient>
<linearGradient
id="linearGradient4316-3-6">
<stop
style="stop-color:#226e23;stop-opacity:1"
offset="0"
id="stop4173" />
<stop
style="stop-color:#63ab3a;stop-opacity:1"
offset="1"
id="stop4175" />
</linearGradient>
<linearGradient
id="linearGradient4316-3">
<stop
id="stop4167"
offset="0"
style="stop-color:#226e23;stop-opacity:1" />
<stop
id="stop4169"
offset="1"
style="stop-color:#63ab3a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4316">
<stop
style="stop-color:#226e23;stop-opacity:1"
offset="0"
id="stop4318" />
<stop
style="stop-color:#63ab3a;stop-opacity:1"
offset="1"
id="stop4320" />
</linearGradient>
<linearGradient
id="linearGradient4153"
osb:paint="solid">
<stop
style="stop-color:#b3b3b3;stop-opacity:1;"
offset="0"
id="stop4155" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061215,-1008.6172)" />
<radialGradient
gradientUnits="userSpaceOnUse"
r="43.571938"
fy="41.189114"
fx="-82.91127"
cy="41.189114"
cx="-82.91127"
id="radialGradient5106"
xlink:href="#linearGradient4316" />
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324-3"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,118.96071,-1109.1994)" />
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324-3-6"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061235,-1008.6171)" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="86.356995"
x2="53.238865"
y1="12.753036"
x1="53.238865"
id="linearGradient5199"
xlink:href="#linearGradient4316-3-6" />
<linearGradient
xlink:href="#linearGradient4257"
id="linearGradient4263"
x1="50.09866"
y1="86.831215"
x2="49.526104"
y2="8.6772995"
gradientUnits="userSpaceOnUse" />
</defs>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<circle
cy="50"
cx="50"
id="path5201"
style="opacity:0.87099998;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.13186812;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373"
r="45.934067" />
<circle
r="42.32143"
cy="50.000023"
cx="50"
id="path3336"
style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4264"
d="M 50,6.3242189 A 43.676472,43.676472 0 0 0 6.3242189,50 43.676472,43.676472 0 0 0 50,93.675781 43.676472,43.676472 0 0 0 93.675781,50 43.676472,43.676472 0 0 0 50,6.3242189 Z m 0,6.7109371 c 2.26423,0.0083 4.523397,0.224904 6.748047,0.646485 0.10716,0.48368 0.167969,0.98402 0.167969,1.5 0,3.82265 -3.097269,6.918015 -6.917969,6.916015 -3.82069,0.0022 -6.916016,-3.091382 -6.916016,-6.914062 0,-0.5181 0.06204,-1.02034 0.169922,-1.50586 C 45.476743,13.257569 47.7359,13.042035 50,13.035156 Z m -18.994141,5.298828 c -0.24053,1.21916 -0.371333,2.474142 -0.371093,3.763672 0,7.71966 4.528393,14.367959 11.064453,17.480469 l 0,35.089844 8.298828,8.298828 8.300781,-8.300781 -0.476562,-7.34961 3.914062,-3.912109 -3.914062,-3.912109 5.871093,-5.867188 -5.871093,-5.871094 0.476562,-8.177734 c 6.53802,-3.11057 11.066406,-9.758856 11.066406,-17.478516 0,-1.28696 -0.133397,-2.540982 -0.373046,-3.757812 C 80.124647,25.007387 86.946634,37.023584 86.964844,50 86.964304,70.414588 70.41459,86.964292 50,86.964844 29.58541,86.964292 13.035701,70.414589 13.035156,50 13.050706,37.021755 19.872279,25.003208 31.005859,18.333984 Z m 13.458985,25.898438 2.767578,0 0,27.666016 -2.765625,0 -0.002,-27.664063 0,-0.002 z"
style="opacity:1;fill:#f9f9f9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path3336-3-2-7"
d="m 56.747561,13.681815 c 0.107159,0.48368 0.16838,0.98465 0.16838,1.50063 0,3.822651 -3.097351,6.917921 -6.91805,6.915921 -3.82069,0.0022 -6.91594,-3.09115 -6.91594,-6.913831 0,-0.5181 0.0626,-1.02142 0.17048,-1.50694 C 45.477221,13.25743 47.7359,13.042554 50,13.035675 c 2.26423,0.0083 4.52291,0.224559 6.74756,0.64614 z m -26.11261,8.416551 c 0,7.71966 4.528179,14.36677 11.064239,17.47928 l 0,35.091179 8.2987,8.2987 8.30082,-8.3008 -0.47566,-7.3495 3.91258,-3.9126 -3.91258,-3.9126 5.86992,-5.867799 -5.86992,-5.8699 0.47565,-8.17878 c 6.53802,-3.11057 11.06635,-9.75752 11.06635,-17.47718 0,-1.28696 -0.13288,-2.54209 -0.37253,-3.75892 11.132459,6.667543 17.953549,18.684164 17.97176,31.66058 C 86.96374,70.414615 70.414591,86.963775 50,86.964325 29.58541,86.963775 13.03626,70.414615 13.03572,50.000026 c 0.0155,-12.978245 6.83607,-24.997676 17.96965,-31.6669 -0.24053,1.21916 -0.37066,2.47571 -0.37042,3.76524 z m 13.829769,22.13472 2.76764,0 0,27.665839 -2.76554,0 -0.002,-27.663749 0,-0.002 z"
style="opacity:0.94;fill:url(#linearGradient4263);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#fe0101;fill-opacity:1;stroke:none;stroke-width:10.35855961;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373;paint-order:fill markers stroke"
id="rect838"
width="30"
height="30"
x="69"
y="69.152542" />
<rect
y="65.152542"
x="65.099998"
height="34"
width="34"
id="rect840"
style="fill:#fe0101;fill-opacity:0.28240739;stroke:none;stroke-width:11.73970127;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373;paint-order:fill markers stroke" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373;paint-order:fill markers stroke"
id="rect865"
width="6.0801892"
height="29.562309"
x="115.6887"
y="-14.881159"
transform="matrix(0.70561918,0.70859126,-0.70561918,0.70859126,0,0)" />
<rect
transform="matrix(-0.70859126,0.70561918,-0.70859126,-0.70561918,0,0)"
y="-133.51057"
x="-2.6410608"
height="29.562309"
width="6.0801892"
id="rect867"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431373;paint-order:fill markers stroke" />
</svg>
<svg baseProfile="basic" id="svg2" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 100 100"><circle style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff;stroke:#515151;stroke-width:3.1319;stroke-linecap:round;stroke-linejoin:round" cx="50" cy="50" r="45.9"/><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="50.2693" y1="-1470.9402" x2="49.6968" y2="-1392.7863" gradientTransform="matrix(1 0 0 -1 0 -1384.1102)"><stop offset="0" style="stop-color:gray"/><stop offset="1" style="stop-color:#4b4b4d"/></linearGradient><path style="fill:url(#SVGID_1_)" d="M56.7 13.7c.1.5.2 1 .2 1.5.0 3.8-3.1 6.9-6.9 6.9-3.8.0-6.9-3.1-6.9-6.9.0-.5.1-1 .2-1.5 2.2-.4 4.5-.6 6.7-.6C52.3 13 54.5 13.3 56.7 13.7zM30.6 22.1c0 7.7 4.5 14.4 11.1 17.5v35.1L50 83l8.3-8.3-.5-7.3 3.9-3.9-3.9-3.9 5.9-5.9-5.9-5.9.5-8.2c6.5-3.1 11.1-9.8 11.1-17.5.0-1.3-.1-2.5-.4-3.8C80.1 25 86.9 37 87 50c0 20.4-16.5 37-37 37-20.4.0-37-16.5-37-37 0-13 6.8-25 18-31.7C30.8 19.6 30.6 20.8 30.6 22.1zM44.5 44.2h2.8v27.7h-2.8V44.2v0 0z"/><linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="73.8" y1="1532.1382" x2="73.8" y2="1574.0038" gradientTransform="matrix(1 0 0 1 0 -1484)"><stop offset="0" style="stop-color:#d69029"/><stop offset="1" style="stop-color:#af7125"/></linearGradient><path style="fill:url(#SVGID_2_)" d="M59.6 94.8c-3.7.0-6.7-3-6.7-6.7V67.6c0-3.3 2.5-6.1 5.7-6.6v-4.1c0-8.4 6.8-15.2 15.2-15.2S89 48.5 89 56.9V61c3.2.5 5.7 3.3 5.7 6.6v20.5c0 3.7-3 6.7-6.7 6.7.0.0-28.4.0-28.4.0zM79.7 61v-5c0-3.2-2.6-5.9-5.9-5.9S68 52.7 68 56v5H79.7z"/><path style="fill:#fff" d="M73.8 42.7c7.8.0 14.2 6.4 14.2 14.2V62c3.1.0 5.7 2.6 5.7 5.7v20.5c0 3.1-2.6 5.7-5.7 5.7H59.6c-3.1.0-5.7-2.6-5.7-5.7V67.6c0-3.1 2.6-5.7 5.7-5.7v-5.1C59.6 49.1 66 42.7 73.8 42.7M67 62h13.7v-6c0-3.8-3.1-6.9-6.9-6.9C70 49.1 67 52.2 67 56v6M73.8 40.7c-8.9.0-16.2 7.3-16.2 16.2v3.3c-3.3.9-5.7 3.9-5.7 7.4v20.5c0 4.2 3.4 7.7 7.7 7.7H88c4.2.0 7.7-3.4 7.7-7.7V67.6c0-3.5-2.4-6.5-5.7-7.4v-3.3C90 48 82.7 40.7 73.8 40.7v0zM69 60v-4c0-2.7 2.2-4.9 4.9-4.9 2.7.0 4.9 2.2 4.9 4.9v4H69v0z"/></svg>

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1,216 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100"
height="100"
viewBox="0 0 99.999997 100"
id="svg2"
version="1.1"
sodipodi:docname="otp.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
<title
id="title836">OTP icon</title>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1402"
inkscape:window-height="1053"
id="namedview29"
showgrid="false"
inkscape:zoom="4.72"
inkscape:cx="19.20533"
inkscape:cy="22.698472"
inkscape:window-x="867"
inkscape:window-y="158"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<linearGradient
id="linearGradient4257">
<stop
style="stop-color:#808080;stop-opacity:1"
offset="0"
id="stop4259" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop4261" />
</linearGradient>
<linearGradient
id="linearGradient4316-3-6">
<stop
style="stop-color:#226e23;stop-opacity:1"
offset="0"
id="stop4173" />
<stop
style="stop-color:#63ab3a;stop-opacity:1"
offset="1"
id="stop4175" />
</linearGradient>
<linearGradient
id="linearGradient4316-3">
<stop
id="stop4167"
offset="0"
style="stop-color:#226e23;stop-opacity:1" />
<stop
id="stop4169"
offset="1"
style="stop-color:#63ab3a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4316">
<stop
style="stop-color:#226e23;stop-opacity:1"
offset="0"
id="stop4318" />
<stop
style="stop-color:#63ab3a;stop-opacity:1"
offset="1"
id="stop4320" />
</linearGradient>
<linearGradient
id="linearGradient4153"
osb:paint="solid">
<stop
style="stop-color:#b3b3b3;stop-opacity:1;"
offset="0"
id="stop4155" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061215,-1008.6172)" />
<radialGradient
gradientUnits="userSpaceOnUse"
r="43.571938"
fy="41.189114"
fx="-82.91127"
cy="41.189114"
cx="-82.91127"
id="radialGradient5106"
xlink:href="#linearGradient4316" />
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324-3"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,118.96071,-1109.1994)" />
<linearGradient
xlink:href="#linearGradient4316"
id="linearGradient4324-3-6"
x1="50.757614"
y1="964.83679"
x2="50.757614"
y2="1042.2632"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061235,-1008.6171)" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="86.356995"
x2="53.238865"
y1="12.753036"
x1="53.238865"
id="linearGradient5199"
xlink:href="#linearGradient4316-3-6" />
<linearGradient
xlink:href="#linearGradient4257"
id="linearGradient4263"
x1="50.09866"
y1="86.831215"
x2="49.526104"
y2="8.6772995"
gradientUnits="userSpaceOnUse" />
</defs>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>OTP icon</dc:title>
<cc:license
rdf:resource="http://scripts.sil.org/OFL" />
<dc:creator>
<cc:Agent>
<dc:title>KeePassXC Team</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>KeePassXC Team</dc:title>
</cc:Agent>
</dc:rights>
<dc:subject>
<rdf:Bag>
<rdf:li>otp</rdf:li>
<rdf:li>totp</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:date>2019</dc:date>
</cc:Work>
<cc:License
rdf:about="http://scripts.sil.org/OFL">
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/Reproduction" />
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/Distribution" />
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/Embedding" />
<cc:permits
rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeWorks" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/Notice" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/Attribution" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/ShareAlike" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeRenaming" />
<cc:requires
rdf:resource="http://scripts.sil.org/pub/OFL/BundlingWhenSelling" />
</cc:License>
</rdf:RDF>
</metadata>
<path
style="fill:#6cac4d;fill-opacity:1;stroke:#467720;stroke-width:3.28421712;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
d="m 17.573148,24.970678 h 64.853704 c 4.426642,0 7.990329,4.214625 7.990329,9.449831 v 27.398502 c 0,5.235207 -3.563687,9.449832 -7.990329,9.449832 H 78.373496 74.320139 L 74.28734,83.531602 64.520559,71.268843 H 62.160069 58.106713 54.053356 50 45.946644 41.893287 37.839931 33.786574 29.733218 25.679861 21.626504 17.573148 c -4.426642,0 -7.9903288,-4.214625 -7.9903288,-9.449832 V 34.420509 c 0,-5.235206 3.5636868,-9.449831 7.9903288,-9.449831 z"
id="rect872"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssscccccccccccccccssss" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="20"
y="69.295219"
id="text868"><tspan
sodipodi:role="line"
id="tspan866"
x="26"
y="69.295219">***</tspan></text>
</svg>
<svg xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="100" height="100" viewBox="0 0 99.999997 100" id="svg2" sodipodi:docname="otp.svg" inkscape:version="0.92.2 5c3e80d, 2017-08-06"><title id="title836">OTP icon</title><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1402" inkscape:window-height="1053" id="namedview29" showgrid="false" inkscape:zoom="4.72" inkscape:cx="19.20533" inkscape:cy="22.698472" inkscape:window-x="867" inkscape:window-y="158" inkscape:window-maximized="0" inkscape:current-layer="svg2"/><defs id="defs4"><linearGradient id="linearGradient4257"><stop style="stop-color:#808080;stop-opacity:1" offset="0" id="stop4259"/><stop style="stop-color:#4d4d4d;stop-opacity:1" offset="1" id="stop4261"/></linearGradient><linearGradient id="linearGradient4316-3-6"><stop style="stop-color:#226e23;stop-opacity:1" offset="0" id="stop4173"/><stop style="stop-color:#63ab3a;stop-opacity:1" offset="1" id="stop4175"/></linearGradient><linearGradient id="linearGradient4316-3"><stop id="stop4167" offset="0" style="stop-color:#226e23;stop-opacity:1"/><stop id="stop4169" offset="1" style="stop-color:#63ab3a;stop-opacity:1"/></linearGradient><linearGradient id="linearGradient4316"><stop style="stop-color:#226e23;stop-opacity:1" offset="0" id="stop4318"/><stop style="stop-color:#63ab3a;stop-opacity:1" offset="1" id="stop4320"/></linearGradient><linearGradient id="linearGradient4153" osb:paint="solid"><stop style="stop-color:#b3b3b3;stop-opacity:1" offset="0" id="stop4155"/></linearGradient><linearGradient xlink:href="#linearGradient4316" id="linearGradient4324" x1="50.757614" y1="964.83679" x2="50.757614" y2="1042.2632" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061215,-1008.6172)"/><radialGradient gradientUnits="userSpaceOnUse" r="43.571938" fy="41.189114" fx="-82.91127" cy="41.189114" cx="-82.91127" id="radialGradient5106" xlink:href="#linearGradient4316"/><linearGradient xlink:href="#linearGradient4316" id="linearGradient4324-3" x1="50.757614" y1="964.83679" x2="50.757614" y2="1042.2632" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0561225,0,0,1.0561225,118.96071,-1109.1994)"/><linearGradient xlink:href="#linearGradient4316" id="linearGradient4324-3-6" x1="50.757614" y1="964.83679" x2="50.757614" y2="1042.2632" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0561225,0,0,1.0561225,-2.8061235,-1008.6171)"/><linearGradient gradientUnits="userSpaceOnUse" y2="86.356995" x2="53.238865" y1="12.753036" x1="53.238865" id="linearGradient5199" xlink:href="#linearGradient4316-3-6"/><linearGradient xlink:href="#linearGradient4257" id="linearGradient4263" x1="50.09866" y1="86.831215" x2="49.526104" y2="8.6772995" gradientUnits="userSpaceOnUse"/></defs><path style="fill:#6cac4d;fill-opacity:1;stroke:#467720;stroke-width:3.28421712;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" d="m17.573148 24.970678h64.853704c4.426642.0 7.990329 4.214625 7.990329 9.449831v27.398502c0 5.235207-3.563687 9.449832-7.990329 9.449832H78.373496 74.320139L74.28734 83.531602 64.520559 71.268843H62.160069 58.106713 54.053356 50 45.946644 41.893287 37.839931 33.786574 29.733218 25.679861 21.626504 17.573148c-4.426642.0-7.9903288-4.214625-7.9903288-9.449832V34.420509c0-5.235206 3.5636868-9.449831 7.9903288-9.449831z" id="rect872" inkscape:connector-curvature="0" sodipodi:nodetypes="ssssscccccccccccccccssss"/><text style="font-style:normal;font-weight:400;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#fff;fill-opacity:1;stroke:#fff;stroke-width:.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" x="20" y="69.295219" id="text868"><tspan sodipodi:role="line" id="tspan866" x="26" y="69.295219">***</tspan></text></svg>

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View file

@ -107,6 +107,7 @@
}
},
"web_accessible_resources": [
"icons/disconnected.svg",
"icons/keepassxc.svg",
"icons/key.svg",
"icons/locked.svg",