From d4c8c10b3926113cf3d37f5473734924a1c4c447 Mon Sep 17 00:00:00 2001 From: Samuel Onoja Date: Wed, 7 Oct 2026 12:50:05 +0100 Subject: [PATCH] Replace Ferese logos with shared Fe mark --- README.md | 6 +-- assets/branding/ferese-blue-dark.svg | 19 -------- assets/branding/ferese-blue-flat.svg | 15 ------ assets/branding/ferese-blue-light.svg | 17 ------- assets/branding/ferese-symbolic.svg | 3 ++ assets/branding/ferese.svg | 3 ++ crates/ferese-theme/assets/icons/ferese.svg | 6 --- crates/ferese-theme/src/icons.rs | 4 +- packaging/icons/ferese.svg | 18 ------- scripts/build-site.py | 6 +-- scripts/installer/inventory.json | 4 +- scripts/update-branding.py | 51 ++++++++++++++++++++ shell/ferese-lock/src/main.rs | 5 +- site/README.md | 22 ++++++--- site/assets/favicon-32.png | Bin 784 -> 1598 bytes site/assets/favicon.ico | Bin 2269 -> 4879 bytes site/index.html | 8 +-- 17 files changed, 84 insertions(+), 103 deletions(-) delete mode 100644 assets/branding/ferese-blue-dark.svg delete mode 100644 assets/branding/ferese-blue-flat.svg delete mode 100644 assets/branding/ferese-blue-light.svg create mode 100644 assets/branding/ferese-symbolic.svg create mode 100644 assets/branding/ferese.svg delete mode 100644 crates/ferese-theme/assets/icons/ferese.svg delete mode 100644 packaging/icons/ferese.svg create mode 100644 scripts/update-branding.py diff --git a/README.md b/README.md index a866daa..e2442cc 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,5 @@

- - - - Ferese - + Ferese

A configurable Wayland desktop

diff --git a/assets/branding/ferese-blue-dark.svg b/assets/branding/ferese-blue-dark.svg deleted file mode 100644 index 489ca4d..0000000 --- a/assets/branding/ferese-blue-dark.svg +++ /dev/null @@ -1,19 +0,0 @@ -AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYToyMDBiNDZhNS00MzBjLTQ0YzYtOWEyNi00MTJjOTY0ZDZlNTUAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaAU3ROHwJLvccKfifOtisiMAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDphYzgzM2JmYS0xNWUxLTQyYjUtYWE0Yy03ZTA4MjIyOTkzN2RscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNoKnwqCDusoXBZopMLg7kk1QAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggWrQV4c0Z2wXDwLizvmxmPGGcoXngs0I7I9FDRtxHWrCkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaKsn7yKWhg+JwUsLE4l1HHMAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCBdct3O/g97e2fKBP+gUsy4YgkpnwHV1CeZWnYPU69p0mRuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBi5Zmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjIwMGI0NmE1LTQzMGMtNDRjNi05YTI2LTQxMmM5NjRkNmU1NS9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjlkY2FjOTYwLWEzMWUtNDNlMS04YTMxLWJlNTYwN2UxYTI4NHJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCBatBXhzRnbBcPAuLO+bGY8YZyheeCzQjsj0UNG3EdasKJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggxheLqIxsdl4BSsN5iCOfu7njZksjyK9LTM3YVyy3h0uiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFggzKu+bf43egViKIdS5Po/09V4cwbp08Z7caz0fE+Woc10Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQLMPG6qaleAEo2sgjt8jBg7FPmIvvWEsLv8nuN6rYv7R4j0ijBj7h/vRNFSmoPdJeY0BhrJhfFioMAXWUKHldBM= - Ferese Blue glow (dark) - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/branding/ferese-blue-flat.svg b/assets/branding/ferese-blue-flat.svg deleted file mode 100644 index aeaaab9..0000000 --- a/assets/branding/ferese-blue-flat.svg +++ /dev/null @@ -1,15 +0,0 @@ -AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTo5MjZiMGZjMC03NzgzLTQyMjEtYjQ4ZC1lNmNiYzNjMDViZDIAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaIwcQOifgdYBkQq+CZ9YANQAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDo4ODExMjQ0Yy04YjA3LTQ2NzUtODQzMi0zY2NhYzQ0ODViZDFscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNo3XpLe6BUgGn6u/EXqBpahwAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggTfOC90ZuSUsMb3m0SS6AHpToOt8ZIwG7pY6E8uPho66kZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaL6emUOsKdDfhUli6KFBL3wAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCCHORF8I/qCVx2OCPdNJg7IEQl+IocVqCMSuKCixYOpVmRuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBi5Zmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjkyNmIwZmMwLTc3ODMtNDIyMS1iNDhkLWU2Y2JjM2MwNWJkMi9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjM2MWY1YThkLTFmNjAtNDhkNC1iMjI5LWI4OWJlYzc3OThhOHJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCBN84L3Rm5JSwxvebRJLoAelOg63xkjAbuljoTy4+GjrqJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggQ1jsnE3M6NjwOEibVzQLOGVizW8lSiAh24YjmMF/IACiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg8+STvA5M2LMsUCIt+QLX2MjHWADRyr/REUb26DN6GaV0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQNuiM2idIjOwTct7+6LBG3TXPZn/iKJ2IkrhT473SS8GDV5d2N7S/cfCIAHiabg22IXFXdkr9zMVMBbgM7wraUg= - Ferese — flat - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/branding/ferese-blue-light.svg b/assets/branding/ferese-blue-light.svg deleted file mode 100644 index c0e59a6..0000000 --- a/assets/branding/ferese-blue-light.svg +++ /dev/null @@ -1,17 +0,0 @@ -AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTo0ZGEyNWIzZi00MWY2LTQyZmUtODYxOS1hMzYxZmExZGY5ZjUAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaMWT+erUN/0ltovTisUDl3AAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDoxMjlkNWVhYi00ODA1LTRiMGMtYjZlYy0wOGM3NWIyMWE3MDVscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNozOYTMPzLnzA8QdTfbX73ngAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFggjlLsRndCO72mRss4tAAhv3x2Pp+nXIUGYhCLkBlNBjWkZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaPoH+Alu2rF6Xq43POgXKXwAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCCOp0GlGbehYxHafv+VWEY+znuLp7ed4j44iRqLXVOemWRuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBi5Zmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjRkYTI1YjNmLTQxZjYtNDJmZS04NjE5LWEzNjFmYTFkZjlmNS9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOmM0YTIwM2VkLWNmOTMtNDE5NS05NjZlLTMxNDg2NWNlMzlmZXJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCCOUuxGd0I7vaZGyzi0ACG/fHY+n6dchQZiEIuQGU0GNaJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFgg16LtIL9sWqVVOUn/rVs9b2vnQJUZvEVx3ijZ9N9AxqOiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFggLRwRahdQ3ZbIdkViwGS993ZlrIo3AVfqeDHDQefdmvl0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQN655ttZWCd7S6ee2x/ao8Kcl6/PbEzpfMKvkB1NRcHWzlhFk/qcP5dPJvJyctCvQW4lEr01BIgmxDrPBHOrbsQ= - Ferese Blue (light) - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/branding/ferese-symbolic.svg b/assets/branding/ferese-symbolic.svg new file mode 100644 index 0000000..6804e6e --- /dev/null +++ b/assets/branding/ferese-symbolic.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/branding/ferese.svg b/assets/branding/ferese.svg new file mode 100644 index 0000000..23c92b1 --- /dev/null +++ b/assets/branding/ferese.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/crates/ferese-theme/assets/icons/ferese.svg b/crates/ferese-theme/assets/icons/ferese.svg deleted file mode 100644 index 0529370..0000000 --- a/crates/ferese-theme/assets/icons/ferese.svg +++ /dev/null @@ -1,6 +0,0 @@ - - Ferese - Ferese symbol with smooth cubic Bezier paths and a transparent background. - - - diff --git a/crates/ferese-theme/src/icons.rs b/crates/ferese-theme/src/icons.rs index 61363b3..313c0e3 100644 --- a/crates/ferese-theme/src/icons.rs +++ b/crates/ferese-theme/src/icons.rs @@ -11,7 +11,7 @@ pub const DISPLAY_EXTERNAL: &[u8] = include_bytes!("../assets/icons/display-exte pub const DISPLAY_EXTEND: &[u8] = include_bytes!("../assets/icons/display-extend.svg"); pub const DISPLAY_MIRROR: &[u8] = include_bytes!("../assets/icons/display-mirror.svg"); pub const DISPLAY: &[u8] = include_bytes!("../assets/icons/display.svg"); -pub const FERESE: &[u8] = include_bytes!("../assets/icons/ferese.svg"); +pub const FERESE: &[u8] = include_bytes!("../../../assets/branding/ferese-symbolic.svg"); pub const OVERVIEW: &[u8] = include_bytes!("../assets/icons/overview.svg"); pub const AIRPLANE: &[u8] = include_bytes!("../assets/icons/status/airplane.svg"); pub const BATTERY_25: &[u8] = include_bytes!("../assets/icons/status/battery-25.svg"); @@ -66,7 +66,7 @@ pub const WIFI_OFF: &[u8] = include_bytes!("../assets/icons/status/wifi-off.svg" pub const VOLUME: &[u8] = include_bytes!("../assets/icons/volume.svg"); pub const WIFI: &[u8] = include_bytes!("../assets/icons/wifi.svg"); -pub const APPLICATION: &[u8] = include_bytes!("../../../packaging/icons/ferese.svg"); +pub const APPLICATION: &[u8] = include_bytes!("../../../assets/branding/ferese.svg"); pub fn tinted(source: &'static [u8], size: u16, foreground: Color) -> icon::Icon { accented(source, size, foreground, foreground) diff --git a/packaging/icons/ferese.svg b/packaging/icons/ferese.svg deleted file mode 100644 index 75d65e2..0000000 --- a/packaging/icons/ferese.svg +++ /dev/null @@ -1,18 +0,0 @@ - - Ferese — gradient - Ferese symbol with smooth cubic Bezier paths and a transparent background. - - - - - - - - - - - - - - - diff --git a/scripts/build-site.py b/scripts/build-site.py index 4de7053..45f2213 100644 --- a/scripts/build-site.py +++ b/scripts/build-site.py @@ -103,13 +103,13 @@ for page_number, (slug, title, source) in enumerate(PAGES): doc = f''' {escape(title)} — Ferese handbook - + - +
{body}
View this guide on GitHub
-''' +''' (OUTPUT / 'docs' / f'{slug}.html').write_text(doc) (OUTPUT / 'docs/search-index.json').write_text(json.dumps(search_index, ensure_ascii=False)) print(f'Built website and {len(PAGES)} handbook pages at {OUTPUT}') diff --git a/scripts/installer/inventory.json b/scripts/installer/inventory.json index 097274f..72d2878 100644 --- a/scripts/installer/inventory.json +++ b/scripts/installer/inventory.json @@ -130,14 +130,14 @@ "policy": "managed" }, { - "source": "packaging/icons/ferese.svg", + "source": "assets/branding/ferese.svg", "target": "integration/usr/local/share/icons/hicolor/scalable/apps/ferese.svg", "mode": "0644", "destination": "/usr/local/share/icons/hicolor/scalable/apps/ferese.svg", "policy": "managed" }, { - "source": "packaging/icons/ferese.svg", + "source": "assets/branding/ferese.svg", "target": "integration/usr/local/share/icons/hicolor/scalable/apps/dev.ferese.Settings.svg", "mode": "0644", "destination": "/usr/local/share/icons/hicolor/scalable/apps/dev.ferese.Settings.svg", diff --git a/scripts/update-branding.py b/scripts/update-branding.py new file mode 100644 index 0000000..08874ba --- /dev/null +++ b/scripts/update-branding.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +"""Export Ferese's symbolic icon and favicons from its canonical SVG.""" +from io import BytesIO +from pathlib import Path +import xml.etree.ElementTree as ET + +import cairo +import gi +from PIL import Image + +gi.require_version('Rsvg', '2.0') +from gi.repository import Rsvg + +ROOT = Path(__file__).resolve().parent.parent +BRANDING = ROOT / 'assets/branding' +SVG = 'http://www.w3.org/2000/svg' +ET.register_namespace('', SVG) + + +def render(path, size): + handle = Rsvg.Handle.new_from_file(str(path)) + surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, *size) + viewport = Rsvg.Rectangle() + viewport.x = viewport.y = 0 + viewport.width, viewport.height = size + handle.render_document(cairo.Context(surface), viewport) + output = BytesIO() + surface.write_to_png(output) + output.seek(0) + with Image.open(output) as image: + return image.convert('RGBA') + + +def main(): + symbolic = ET.parse(BRANDING / 'ferese.svg').getroot() + for defs in symbolic.findall(f'{{{SVG}}}defs'): + symbolic.remove(defs) + for path in symbolic.iter(f'{{{SVG}}}path'): + path.set('fill', 'currentColor') + ET.indent(symbolic, space=' ') + (BRANDING / 'ferese-symbolic.svg').write_text(ET.tostring(symbolic, encoding='unicode') + '\n') + + icon = render(BRANDING / 'ferese.svg', (512, 512)) + icon.resize((32, 32), Image.Resampling.LANCZOS).save(ROOT / 'site/assets/favicon-32.png') + icon.save(ROOT / 'site/assets/favicon.ico', sizes=[(16, 16), (32, 32), (48, 48)]) + + print('Updated symbolic icon and favicons from the canonical Fe mark.') + + +if __name__ == '__main__': + main() diff --git a/shell/ferese-lock/src/main.rs b/shell/ferese-lock/src/main.rs index f98c903..50f20a8 100644 --- a/shell/ferese-lock/src/main.rs +++ b/shell/ferese-lock/src/main.rs @@ -557,10 +557,7 @@ fn line_icon(path: &str, size: u16) -> widget::icon::Icon { } fn ferese_symbol() -> widget::icon::Icon { - widget::icon( - widget::icon::from_svg_bytes(include_bytes!("../../../packaging/icons/ferese.svg").as_slice()).symbolic(true), - ) - .size(30) + widget::icon(widget::icon::from_svg_bytes(ferese_theme::icons::FERESE).symbolic(true)).size(30) } #[cfg(test)] diff --git a/site/README.md b/site/README.md index 84fe277..08043c3 100644 --- a/site/README.md +++ b/site/README.md @@ -38,15 +38,21 @@ documentation](https://docs.github.com/en/pages/getting-started-with-github-page ## Brand assets -The Ferese symbols live in `assets/branding`. The website uses -`ferese-blue-dark.svg`. The README chooses the light or dark SVG to match -the reader's appearance and uses the flat blue SVG as its fallback. Keep their -1024×1024 canvas square so the symbol and glow are not stretched or cropped. +`assets/branding/ferese.svg` is the canonical blue Fe mark used by the README, +website, favicons and installed application icons. Its square 950×950 viewBox is +shared with `ferese-symbolic.svg`, which uses the same shape and `currentColor` +for shell and notification icons. Keep both variants in sync. -The favicon uses the flat blue symbol. `site/assets/favicon-32.png` is 32×32; -`site/assets/favicon.ico` contains 16×16, 32×32 and 48×48 images. These files are -checked in, so building the site needs no icon renderer. Their links work at -both the site root and the GitHub Pages project path. +Regenerate the symbolic icon and raster favicons after updating the canonical SVG: + +```sh +python3 scripts/update-branding.py +``` + +The exporter requires Python PyGObject, Pycairo, Pillow and librsvg. The generated +`site/assets/favicon-32.png` is 32×32; `site/assets/favicon.ico` contains 16×16, +32×32 and 48×48 images. They are checked in, so the site build needs no renderer. +The links work at both the site root and the GitHub Pages project path. The light and dark wallpapers live in `assets/wallpapers`. Both are 3840×2160 and are bundled by the installer. Ferese selects the matching image diff --git a/site/assets/favicon-32.png b/site/assets/favicon-32.png index 3cbf4fe85095a5fd9cc9062aaa6876bf6bbf684c..3feb2ba79376c0ec80d3a885bab3514fb6031666 100644 GIT binary patch delta 1582 zcmV+}2GRMD2EGiCBYy@3NklH-RV1*pi}J%bBGF)CcA8{kNQfGuOrj#fsKImx5m8WK zGqOYX%yd;(b$$2lkM3rgnZa~3{MwUrx{|*A-Bag2z5|>uM1Lslh;iQkp9maBwA!=X zC5h#4%GFDqpOfcvmexSbnB=ZYe9xw#>G!^-UXJ4GN6o?!x#*JD0ian`nj%n3{^x&| z=IWCZ`(l%|l}gD8uYgyH)HVRP6X0gfq=q9!2mt={23pN>bU=?8bAqApv3FO+wlSAyv3xP{b$zG4fSUaKtB)QbkRMO0=l;Zt;E2s!bsCe)iC zff{^xUlMnzjwrsyjz_vy2p9dN~3F;FO^@>NrNho10?TFEzg<ma#%valW+gx-5P3ip6d{TW08P;o zt%$r5t0>xl{5PF_-Sexm*Xmzs*xCZ4(aD!~h0mB%%#Fct6td#KGte^#>+okCEJY9PUYk5V5-L<=FK!V?6o-3XOdSJo?3QN--`A|z6MLQ5 z>UxQ1|K)IOM(P>`0Mm0KnGC5+1}dHY$bT4^H+R<8uU>i-0I2rnOEw4BnF;-1SW=(y z5$mq^woowtH8Gc-fO2ynWJulqf?OsfC%EkG_*7b!&p+9xo2l8qK|GO_h;xBoy#K4N zX}R&5ZNVBz3ugN#m&!nu)zmmKb%acX1=Sk?)MqG5UDgDn)K9Wi=WP`MAa%YO&} zihv{_494@sz9UATOGkd&F>tRLZ`onRQ`z5j+y|)ygeW))j;+Qn$51U%(sylJqK ztx5$4;fU6s9p5MT@C<_zU}g^h`m-Roq^ef!D1fJ6%gP&Om1apfNQo+wp<4wjO8wl| zP2R}3iH>SB8UUaS6(VA&NT$Fg#wd4Vw}CQ_Xc`Y)ZNx|-4~Oc1cdP%g+kYze!9n1A zR6ZkcL`!3j*6ZG>P&Ww%MCd)>)S`{0LuBc{U(h9q-VX9>4VY^KWwTiw?sXxr8+=lQ zLJZo4ssZgi!-6Gh>I#*@E&ZQ;S& zH;CNy*TTP1UDxBqH48$`ZhxZ_cbIG6j!%u>=lv3V94X!c@DXO2LW1RHOY4fT==~tN z+`1o|`hm^~+cAu6LLmr%PS9<7=|$+qS|e#dg_Q_VKv)cR^Kfa!fz1~kg(KR9NRG4b z0y$%|+MVJ|U60)+99{uMzJT}d`&-LCpt=(-Q1WqM_sBVFD>QmKE++)W_iK)5={mnS gJqHBWY98YY{|A zNKA`@To@5VuL<%oDi?IJjU)&{Z3N3@LCZjhKq!e)$Ffo>E81wJSWG&P`}dDt$2-Fv z9jC(0d~iAE{Lk%tTR#sQUp>2?Dz{foveJw!+#DYWMwEA>(^+u#LZ_J zs1$X+JPyOuFS23TZSRbV?g@?Nk|t2pz&pXHAmGF(P)-a7>FAdX4WjOqM4x3Glrd9m z_Ail;dA`V;nE|+pG(Or)&fS4B&}Xv;ze8n;c`z0aa*ihYJvu?cr&T4jhPln|U~ zk&o7jfKE6igJM>Ssr#))zpzG>H1b~7(IwMDLo^#=oE&PUsaV?x0V3&W(YiT%+QNBA zJaH{&vwwmbNq*iGdrG(A*qdhZTKOzjKw4!?SDG;&mX%Q2$i*QY*JT4|WT~1|Uv(Wv zhduN@o^K>)nZ_Bx0Q$o53=zv2$dLp1$;xq0E$0RmoTkO3g%&0c?J6#=)~up7op+Nr zI#kpeJIR*k$?j1cA1}mK%wtzbK>-%~|3MkI#d3)`DM4L>9_m2?h3Plpu@ rK#Tsw{uzP)iPSGyia?6Mx)b;Va8mRg#u{M_00000NkvXXu0mjf@cdq7 diff --git a/site/assets/favicon.ico b/site/assets/favicon.ico index 815b07442b968256228b924ebd68a609f0d75efd..da3605bc12debd2198934f415df1068e92a81301 100644 GIT binary patch delta 4823 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 delta 2188 zcmV;72y^$3CfyM<000310{{>Z00000AOLUy001@s001B$00000AOP(G005=|001yB z00000AOK1P005H&ku)WL0XIoRK~#90?UB1LLje@Vf8XuBUa3VTV)jZ%E3rveA`+b> zCYzN>h!)9Bqa-Y1kQh8x>0~pB7`jz1BH}+V7+5TN?=dv0ME?T5~W ziuFb=6A^TKF1z77GZD-Sx)2YMk-IDC%K0ucrB-b^wPvL-#)TPwYIWHz`+5!v+VAj4 znK;BqOXLCE`oz%X1S3tvf!oAb+1FdW{iUx;GHXY2Sdvk$84PEwzv57mk&xI53d%KF zE#|Oj@KW*E`D);h7bJk7?~(Q37vaFNwYPZe8O)l<-1~Z}85kr~oyB5NVZCt3w|K0= zoQx%)6PUT((D^4rUo~)8QN%Hj?p?6v_BcIZj8PfmypsXifEyW8!KS_y{P9Lpa*au+ znl=c$0@uLljmH_jqDHs*%lH7P#Aj5V-pWmr0SO;}AOHXWAP5Ek0047(dh`GQ0<=j) zK~#90?UYYQR8bVhe`nr|qEwOuEg~_r6b1hzZA!{o1W^(awkXI&5kd6NApgq)HQPvn zAk;>%Tqd*(gb0L^Fm)^|ld__XMk5xcGtN6LoEhKPI6Ag$zSXu~al{eF z{|@0a!YRP8C&i-fjVZrk6)$MeeQMDK@>#+*kbk;51oaCZ9u#nGKwHurUC-~z@AZgBH4tW|N>dhHoWtS>LI&VaVHRZy z=vN0%M-7HB!+)_j;)o-T_23UQ#q;?GaMLuC0SPaE1QAI@K~#90?U!9_6jc<*e`ofi zVDO_MfJ8tOF*Kp=E;g}ZwX`Z~8o$uAF($?rM2$j%F}Ay{IJ`0uUX=B?G>EWL;YMKIc=)2i84+xC`8E>et3gxFdF7cC166HW z9tu&9utt?igvF}N7dUKNvKb)Op`W6(%rNB`$_E$!CUIhijLnIG$_~BRaA^_PfN(1i z$_SrV*rP5xhP&j4iNemRd|6bwVR0o`wf@vLtWBe zNd9=cZc_NjC;Yr^$%hjU;n^gvHT9ZNhnG>dDlEw9pd3NiVp}p$fbL0-TCywFt`7o# z59I`fvzd=GG@ues^7Lqm9$=A2hjYM7_BKArtj}T)*r&M$RKsK~&a?(%?Ro>yr_kux zK{=8Zn!mH;mm)Q1;lfBxeG7+NxesfkMoq+>vJU@ zRLX>1Q^Y$MJmIxC|0a4HV!e_QcXNgr$5=*ij;jyen?oGsxGV!TNnPqFkNeJ|yf*xnoG*cY-YjZb zbwxT%pFsVT&~Vt{2`q8_#%7gJN@&P)7dcZNrMD!CCsCP9Dwt-0cV)(B05-Etvc zhO9SWz!KluQ1*Upic_rQ3E~N@Q-dDh4v+9jNz-Us*=N2N*?T}ao9A|P&^Iy*;t8#D z4U!5?UU7x*BMuJ?cFU=mfxK7?97?ZA8KF!#;&kjPyOQ;m3v zPKCBig9?A9BUBzY<#)eiRSB&K8Ptz&$R?nCIsq!20-ingrW}}!aDM}Ts za6fR<_+hOpBKV;(nUq!96W4P>%*tIi)O zV<|v5#IiK(7g$)}oR@&!G;AxyC9t4BvdVT{9s(113W&^Lh>OrK%HDLE-KG2(7WGeD zZR%np#d?%F6_zVpZ(O-AXZ(Y3T9luF0dYAren12S1Ox;G1Ox<>kbeQDxL0}1_VdgD O0000 Ferese — Wayland desktop - + @@ -23,7 +23,7 @@
- +

A configurable Wayland desktop.

@@ -116,7 +116,7 @@