Update Lepton v6.5.0. Update prefs

This commit is contained in:
RealStickman 2022-12-04 09:37:08 +01:00
parent 259dbec147
commit 10a63d99e3
16 changed files with 2772 additions and 2134 deletions

View File

@ -19,9 +19,26 @@ N: Yunsup Sim
E: pedogunu@gmail.com
W: https://ethansup.net
----------
Sponsors
N: Jani Haiko
E: haiko.jani@gmail.com
W: https://github.com/ojaha065
N: nikkehtine
E: nikkehtine@int.pl
W: https://github.com/nikkehtine
N: OSS.kr
W: https://www.oss.kr/
----------
Contributors
N: 2641a40fd44383320adde4b027a1d0b03bd550
W: https://github.com/2641a40fd44383320adde4b027a1d0b03bd550
N: 7k5x
E: 7k5xlp0onfire@gmail.com
W: https://github.com/7k5x

View File

@ -1,3 +1,3 @@
[Info]
Ver=v6.3.0
Ver=v6.5.0
Branch=photon-style

View File

@ -0,0 +1,61 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300" viewBox="0 0 300 300">
<defs>
<linearGradient id="a" x1="-300.021" y1="-272.736" x2="547.138" y2="574.423" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ccfbff"/>
<stop offset="1" stop-color="#c9e4ff"/>
</linearGradient>
<linearGradient id="b" x1="-18.672" y1="23.78" x2="279.805" y2="322.256" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#00c8d7"/>
<stop offset="1" stop-color="#0a84ff"/>
</linearGradient>
</defs>
<path d="M73.275 165.84l63.117-26.74a1 1 0 0 0-.78-1.842L72.494 164a1 1 0 0 0 .78 1.842z" fill="#eaeaee"/>
<path d="M110.05 144.74l15.834-6.708a.5.5 0 1 0-.39-.921l-15.834 6.708a.5.5 0 0 0 .39.921z" fill="#eaeaee"/>
<path d="M59.35 176.038a.5.5 0 0 1 .265-.655l2.762-1.17a.5.5 0 1 1 .39.921l-2.762 1.17a.5.5 0 0 1-.655-.266zm10.128-4.291a.5.5 0 0 1 .265-.655l11.049-4.681a.5.5 0 1 1 .39.921l-11.049 4.681a.5.5 0 0 1-.654-.266zm19.336-8.192a.5.5 0 0 1 .265-.655l.921-.39a.5.5 0 1 1 .39.921l-.921.39a.5.5 0 0 1-.654-.266zm4.6-1.951a.5.5 0 0 1 .265-.655l2.762-1.17a.5.5 0 1 1 .39.921l-2.762 1.17a.5.5 0 0 1-.65-.27zm10.128-4.291a.5.5 0 0 1 .265-.655l11.049-4.681a.5.5 0 0 1 .39.921l-11.046 4.68a.5.5 0 0 1-.653-.265z" fill="#eaeaee"/>
<path d="M103.245 194.26L208.809 161a1 1 0 0 0-.6-1.908l-105.565 33.26a1 1 0 1 0 .6 1.908z" fill="#eaeaee"/>
<path d="M116 185l26.482-8.343a.5.5 0 1 0-.3-.954l-26.482 8.342a.5.5 0 0 0 .3.954z" fill="#eaeaee"/>
<path d="M84.918 204.09a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 0 1 .3.954l-11.445 3.606a.5.5 0 0 1-.627-.327zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 1 1 .3.954l-2.861.9a.5.5 0 0 1-.627-.326zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 1 1 .3.954l-.954.3a.5.5 0 0 1-.627-.33zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 1 1 .3.954l-11.445 3.599a.5.5 0 0 1-.628-.327zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 1 1 .3.954l-2.861.9a.5.5 0 0 1-.628-.334zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 1 1 .3.954l-.954.3a.5.5 0 0 1-.628-.337zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 1 1 .3.954l-11.445 3.606a.5.5 0 0 1-.627-.342zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 0 1 .3.954l-2.861.9a.5.5 0 0 1-.629-.342zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 1 1 .3.954l-.954.3a.5.5 0 0 1-.629-.345zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 0 1 .3.954l-11.445 3.606a.5.5 0 0 1-.629-.35zm19.076-6.01a.5.5 0 0 1 .327-.627l2.861-.9a.5.5 0 0 1 .3.954l-2.861.9a.5.5 0 0 1-.629-.349zm6.677-2.1a.5.5 0 0 1 .327-.627l.954-.3a.5.5 0 0 1 .3.954l-.954.3a.5.5 0 0 1-.63-.352zm9.538-3a.5.5 0 0 1 .327-.627l11.445-3.606a.5.5 0 1 1 .3.954l-11.445 3.606a.5.5 0 0 1-.63-.357z" fill="#eaeaee"/>
<path d="M50.883 109.437L73.366 97.57s-15.334-12.008-1.472-21.924C84.256 66.8 96.745 77.71 96.745 77.71s-2.589-8.73 6.13-11.4c8.6-2.633 20.994 6.885 20.994 6.885l19.577-10.334" fill="#fff"/>
<path d="M141.872 58.947L136.085 62a.588.588 0 0 1-.549-1.04l5.788-3.055a.588.588 0 1 1 .549 1.04zm-15.152 8l-1.04.549a.588.588 0 0 1-.549-1.04l1.04-.549a.588.588 0 0 1 .549 1.04zM72.4 94.811l-1.674.884a.588.588 0 0 1-.549-1.04l.9-.478a24.222 24.222 0 0 1-.591-.543.588.588 0 1 1 .81-.853c.7.664 1.177 1.039 1.188 1.048a.588.588 0 0 1-.088.983zm-10 5.277l-12.485 6.59a.588.588 0 1 1-.549-1.04l12.485-6.59a.588.588 0 1 1 .549 1.04zm59.158-31.3a.588.588 0 0 1-.6-.026 45.206 45.206 0 0 0-3-1.776.588.588 0 1 1 .559-1.036 46.056 46.056 0 0 1 3.086 1.824.588.588 0 0 1-.045 1.014zM68.064 90.2a.588.588 0 0 1-.751-.176q-.348-.483-.681-1a.588.588 0 0 1 .993-.631c.208.328.423.643.642.946a.588.588 0 0 1-.133.821.666.666 0 0 1-.07.04zm25.892-16.6a.587.587 0 0 1-.6-.031c-.293-.2-.617-.4-.972-.62a.588.588 0 0 1 .611-1.006c.37.225.71.444 1.016.649a.588.588 0 0 1-.052 1.008zm15.815-10.047a.586.586 0 0 1-.405.053 14.722 14.722 0 0 0-7.557-.008 8.578 8.578 0 0 0-4.693 3.166.588.588 0 0 1-.966-.673 9.747 9.747 0 0 1 5.314-3.618 15.855 15.855 0 0 1 8.163-.013.588.588 0 0 1 .144 1.093zm-21.029 7.324a.587.587 0 0 1-.486.029 21.942 21.942 0 0 0-3.291-.988.588.588 0 0 1 .246-1.151 23.255 23.255 0 0 1 3.468 1.04.588.588 0 0 1 .063 1.07zm-23.055 8.291a.589.589 0 0 1-.827-.722 14.421 14.421 0 0 1 5.452-6.558 19.345 19.345 0 0 1 5.307-2.711.588.588 0 1 1 .361 1.123A18.263 18.263 0 0 0 71 72.844a13.284 13.284 0 0 0-5.031 6.006.59.59 0 0 1-.282.318z" fill="#eaeaee"/>
<path d="M144.627 62.6l-92.656 48.906a1.176 1.176 0 0 1-1.1-2.081l92.656-48.907a1.176 1.176 0 1 1 1.1 2.081z" fill="#fff"/>
<path d="M185.779 90.824l13.771 3.409s-1.925-10.7 7.531-9.678c8.434.909 9.583 10.091 9.583 10.091s2.165-4.6 6.788-2.471c4.558 2.1 6.186 10.666 6.186 10.666l11.991 2.968" fill="#fff"/>
<path d="M200.337 92.789l-13.752-3.4a.59.59 0 0 1 .284-1.146l13.752 3.4a.59.59 0 0 1-.284 1.146zm42.412 10.311l-.529-.131a.59.59 0 1 1 .284-1.146l.529.131a.59.59 0 0 1-.284 1.146zm-5.113-1.266l-3.438-.851a.59.59 0 1 1 .284-1.146l3.438.851a.59.59 0 0 1-.284 1.146zm-20.166-8.627a.614.614 0 0 1-.445-.506l-.035-.222a.589.589 0 0 1 .4-.662 5.483 5.483 0 0 1 6-2.637 7.111 7.111 0 0 1 1.259.447 10.622 10.622 0 0 1 4.381 4.221.591.591 0 0 1-1 .626 9.484 9.484 0 0 0-3.872-3.774 5.935 5.935 0 0 0-1.05-.374c-3.3-.818-4.891 2.422-4.957 2.562a.592.592 0 0 1-.681.319zm-14.675-9.061a.591.591 0 0 1-.2-1.053 6.8 6.8 0 0 1 3.628-1.19.591.591 0 0 1 .07 1.179 5.632 5.632 0 0 0-3.009.97.589.589 0 0 1-.489.094zm9 .181a.6.6 0 0 1-.146-.057 9.055 9.055 0 0 0-1-.478.59.59 0 0 1-.324-.769.6.6 0 0 1 .769-.325 10.36 10.36 0 0 1 1.128.54.59.59 0 0 1-.428 1.089z" fill="#eaeaee"/>
<path d="M242.217 107.236l-56.755-14.049a1.181 1.181 0 1 1 .567-2.292l56.755 14.049a1.181 1.181 0 0 1-.567 2.292z" fill="#fff"/>
<ellipse cx="155.535" cy="245.952" rx="7.463" ry="43.55" transform="rotate(-86.464 155.535 245.951)" fill="#eaeaee"/>
<path d="M112.695 226.207l-64.217-18.684a1 1 0 1 0-.559 1.92l64.217 18.684a1 1 0 1 0 .559-1.92z" fill="#eaeaee"/>
<path d="M243.246 226.609L178.5 209.394a1 1 0 0 0-.514 1.933l64.751 17.215a1 1 0 1 0 .514-1.933z" fill="#eaeaee"/>
<path d="M146.467 240.275a.789.789 0 0 0 .166-.037.82.82 0 0 1-.205.045z" fill="#fff"/>
<g fill="#fff">
<path d="M179.037 101.776l-.121-.547a12.937 12.937 0 0 0-.4-1.386 12.75 12.75 0 0 0-22.367-3.36l-4.583-.2a5 5 0 0 0-4.02-2.981 5 5 0 0 0-1.409-1.736l-.987 5.022-.259 1.327 1.261-.689 2.337-1.286.866 3.905 8.492.371.509-.8a9.751 9.751 0 0 1 16.444 10.478l-1.117 1.753a166 166 0 0 1 5.9 23.121c.32-.012 11.494 70.842 11.421 75.734a61.9 61.9 0 0 1-.1 10.1c-.433 3.64-1.661 13.195-5.4 14.023a2.76 2.76 0 0 1-1.855-.234c-.957-.484-1.864-1.833-3.817-11.386a123 123 0 0 1-15.17 4.294 149.57 149.57 0 0 1-17.448 2.843c2.283 9.563 1.761 10.211 1.121 11.019a2.76 2.76 0 0 1-1.582 1c-3.739.829-8.634-6.281-10.574-9.446a46.87 46.87 0 0 1-2.769-5.378c-2.744-3.417-5.519-2.72-2.775.881a47.78 47.78 0 0 0 2.805 5.4 38.26 38.26 0 0 0 6.116 7.863c2.261 2.07 4.879 3.528 7.652 2.913a5.81 5.81 0 0 0 3.292-2.061c.926-1.229 1.334-2.436 1.126-4.9a43.46 43.46 0 0 0-.916-5.379c4.453-.567 9.452-1.439 14.4-2.536 3.437-.762 7.923-1.869 12.292-3.277A61.92 61.92 0 0 0 179 232.33c.863 2.369 1.735 4.03 3.085 4.714a5.017 5.017 0 0 0 3.538.655c2.812-.623 4.751-1.742 6.522-6.337a46.05 46.05 0 0 0 1.841-10.27 75.3 75.3 0 0 0-.13-11.375c.029-4.493-.48-7.184-.945-13.441-1.184-16.126-9.59-59.447-11.018-64.876a168.439 168.439 0 0 0-5.141-20.053l.342-.537a12.8 12.8 0 0 0 1.475-3.236c.1-.361.189-.718.262-1.082a12.68 12.68 0 0 0 .206-4.716z"/>
<path d="M134.237 228.656l-6.947-14.593c-1.686-6.992-20.874-79.082-21.813-86.213l-3.447-2.2a9.76 9.76 0 0 1 10.489-16.449l2.087 1.33c4.834-2.638 12.315-6.642 15.256-7.744 3.252-1.223 9.874-6.285 12.141-8.119L146 91.43c-.11-.078-.209-.158-.317-.227a5 5 0 0 0-5.729.4c-3.239 2.623-8.884 6.732-11.307 7.627-2.713 1.021-8.725 4.167-14.083 7.075l-.6-.38a12.76 12.76 0 1 0-13.679 21.468l2.254 1.436c.592 4.611 14.794 90.939 28.1 99.384z"/>
<path d="M186.722 176.206s10.389-4.558 15.3-2.655c3.46 1.339 7.075 4.468 9.434 12.129s2.346 13.664-1.921 16.234-9.314 1.9-10.178-.979c-.621-2.067-2.547-9.158-2.547-9.158s-1.255-.941-6.281 1.683z"/>
<path d="M116.553 182.33s-16.275-1.34-19.879 3.447c-2.232 2.964-4.4 7.12-3.154 15.039s3.888 13.307 8.85 13.744 9.2-2.381 8.716-5.346c-.349-2.129-1.73-9.347-1.73-9.347s.135 1.219 11.44 2.024z"/>
</g>
<path d="M205.432 180.5c-3.039-4.414-6.895-5.465-18.936.241-3.035-15.577-8.491-43.6-8.527-43.761a260.987 260.987 0 0 0-.7-3.767l-.039-.176-.958-4.325-.113-.508-.361-1.63-.307-1.386-.314-1.416q-.216-.976-.5-1.937l-.206-.927q-.369-1.342-.756-2.67a5 5 0 0 0-.285-.961q-.305-1.008-.618-2c-.065-.293-.179-.575-.275-.871-.3-.957-.6-1.833-.924-2.735l1.623-2.8a7.778 7.778 0 0 0-13.12-8.359l-.448.7a12.79 12.79 0 0 1 7.84 4.408.5.5 0 0 1-.755.659 11.81 11.81 0 0 0-7.682-4.115l-.084.131-11.187-.495-.052-.234-.059.013-.576-2.6-4.955 2.737.067-.343-.192.1 1.014-5.131c-1.3 1.047-8.6 6.812-12.5 8.282-3.064 1.15-11.506 5.715-16.035 8.2-4.027 2.582-4.287 5.938-4.3 6.074a.5.5 0 0 1-.391.455l-.137.03a.5.5 0 0 1-.474-.52c-.035-.156.269-3.778 4.383-6.615l-2.111-1.345a7.778 7.778 0 0 0-8.359 13.12l3.817 2.432.463.287c.312 3.3 1.05 7.88 2.09 13.129a244.916 244.916 0 0 0 2.3 10.359l.182.82s.136 11.739 6.835 36.611c-13.88-.9-19.023.179-20.366 4.046-1.625 4.678.566 13.9 1.116 15.346a4 4 0 0 0 4.6 2.486 4.046 4.046 0 0 0 .557-.167c2.064-.782 1.925-2.583 1.145-4.648-1.047-2.768-.811-7.074-.755-9.09 2.342-1.09 8.613-.388 16.016.208a437.29 437.29 0 0 0 5.028 15.915c3.14 9.547 6.214 11.174 9.089 14.624a46.19 46.19 0 0 0 2.75 5.383c2.74 4.412 5.31 7.181 7.025 8.174l.357.177.091.041.277.092.13.033.2.037.156-.035.137-.03a.821.821 0 0 0 .205-.045l.059-.013a.781.781 0 0 0 .214-.191c.465-.584-.541-5.4-1.791-10.532a17.821 17.821 0 0 1-5.563-1.625.5.5 0 1 1 .446-.9 17.649 17.649 0 0 0 4.866 1.482c2.018-.14 4.231-.364 6.637-.693l.185-.041 2.114-.3.989-.158 1.423-.234 1.45-.25.976-.216 1.836-.356.586-.13 2.119-.47.312-.069a115.067 115.067 0 0 0 17.231-4.884c2.187-1.13 5.312-3.021 5.347-3.049a.5.5 0 0 1 .518.858c-.136.081-2.713 1.625-4.879 2.8 1.044 5.218 2.365 11.073 3.045 11.414a.77.77 0 0 0 .476.069l.049-.011.215-.048.088-.019.205-.138.087-.07.2-.2.09-.1.216-.273.078-.109.228-.358.046-.072a15.559 15.559 0 0 0 1.319-3.293l-.019-.088.221-.807.033-.13.215-.877-.022-.1c.072-.323.143-.646.211-.989.213-1.071 1.234-3.087.359-4.558a61.5 61.5 0 0 0 .075-9.829l-.015-.068-.033-.658c.569-3.666-.534-19.041-.534-19.041l-.4-2.048c5.392-2.54 8.767-3.317 11.088-3.221.826 1.839 2.666 5.179 2.763 8.137.074 2.206.67 4.468 2.876 4.4a4 4 0 0 0 3.869-4.122c-.047-1.53-.432-9.45-3.24-13.53z" fill="url(#a)"/>
<g fill="#f9f9fa">
<path d="M120.69 115.886c-2.232 1.282-7.4 4.415-7.3 9.164s2.239 19.146 3.2 20.184 16.5-.365 17.218-1.631-1.208-31.981-1.974-32.714-8.428 3.437-11.144 4.997z"/>
<path d="M173.771 187.946c-.254-1.838 4.982-9.811 7.446-13.441-2.179-10.881-6.769-31.937-7.541-34.944-1.738-10.523-4.47-21.185-8.722-28.908-2.181-3.961-12.142-6.956-23.757-5.16l-4.669 36.8s-.428 3.26-2.172 3.549c-1.431.237-13.05 3.558-17.183 4.745q.248.932.505 1.867c.248 1.63 4.281 18.045 7.083 28.711 4.165 2.817 11.809 8.193 12.283 10.016.429 1.652-2.666 8.234-4.839 12.552 2.917 7.157 5.781 12.57 7.815 14.158 12.135 9.6 40.827 2.219 43.492-11.964a69.862 69.862 0 0 0 .03-7.868c-3.884-3.376-9.553-8.541-9.771-10.113z"/>
</g>
<g fill="url(#b)">
<path d="M124.228 131.126a1.4 1.4 0 0 0 1.064-1.67l-.679-3.066a1.4 1.4 0 1 0-2.734.606l.679 3.066a1.4 1.4 0 0 0 1.67 1.064z"/>
<path d="M165.962 143.534a1.4 1.4 0 0 0 1.064-1.67l-.679-3.066a1.4 1.4 0 1 0-2.734.606l.679 3.066a1.4 1.4 0 0 0 1.67 1.064z"/>
<path d="M125.543 137.062a5.7 5.7 0 0 0 3.981-3.341 1 1 0 1 0-1.876-.7 3.72 3.72 0 0 1-2.548 2.091 3.67 3.67 0 0 1-3.193-.819 1 1 0 0 0-1.4 1.428 5.7 5.7 0 0 0 5.036 1.341z"/>
<path d="M167.278 149.47a5.7 5.7 0 0 0 3.991-3.343 1 1 0 0 0-1.866-.7 3.64 3.64 0 0 1-5.741 1.272 1 1 0 0 0-1.395 1.426 5.7 5.7 0 0 0 5.011 1.345z"/>
<path d="M156.452 156.752a6.476 6.476 0 0 1-.522.387 6.69 6.69 0 0 1 .8 1.377 4.69 4.69 0 0 1-.525 4.333 1 1 0 0 0 1.592 1.21 6.72 6.72 0 0 0 .808-6.321 7.62 7.62 0 0 0-.365-.762 4.47 4.47 0 0 0 1.118.081 5 5 0 0 0 3.889-2.108 1 1 0 0 0-1.693-1.061 3.06 3.06 0 0 1-2.335 1.181 4.41 4.41 0 0 1-1.548-.31 6.4 6.4 0 0 1-.921 1.814 1.579 1.579 0 0 1-.298.179z"/>
<path d="M155.906 157.107a6.476 6.476 0 0 0 .522-.387 1.58 1.58 0 0 0 .249-.184 6.4 6.4 0 0 0 .921-1.814 14.34 14.34 0 0 0 .973-5.9 2.88 2.88 0 0 0-1.181-2.149 1.75 1.75 0 0 0-1.792-.017c-2.144 1-6.864 6.325-7.348 10.764a1.52 1.52 0 0 0 .906 1.594c1.376.615 5.074-.928 6.75-1.907z"/>
<path d="M205.286 200.2a5.653 5.653 0 0 0 4.378-4.134c.93-3.7-1.4-15.212-7.182-18.87-5.91-3.741-18 3.543-19.94 4.564-.488.258-.789.725-.531 1.213a1 1 0 0 0 1.35.418c14.7-7.753 16.768-5.262 18.106-4.473 4.967 2.926 7.036 13.563 6.257 16.658a3.561 3.561 0 0 1-3.3 2.686.794.794 0 0 1-.858-.791c-1.144-9.775-3.335-12.139-3.582-12.377a1 1 0 0 0-.744-.28c-.358.018-2.956-.343-13.509 4.457a.97.97 0 0 0-.37 1.365 1.049 1.049 0 0 0 1.365.369c7.878-3.365 10.1-3.936 12.094-4.148.54.877 1.925 3.726 2.759 10.845a2.777 2.777 0 0 0 2.714 2.555 4.132 4.132 0 0 0 .993-.057z"/>
<path d="M122.9 161.253l-16.287 3.61a1 1 0 0 1-.433-1.953l16.287-3.61a1 1 0 0 1 .433 1.953z"/>
<path d="M124.115 166.721l-16.287 3.61a1 1 0 1 1-.433-1.953l16.287-3.61a1 1 0 1 1 .433 1.953z"/>
<path d="M125.219 171.7l-16.287 3.61a.5.5 0 1 1-.216-.976l16.284-3.61a.5.5 0 0 1 .216.976z"/>
<path d="M177.123 139.793a1 1 0 0 1-1.06-1.514l8.964-14.069a1 1 0 0 1 1.687 1.075l-8.964 14.069a1 1 0 0 1-.627.439z"/>
<path d="M105.051 211.452a5.653 5.653 0 0 1-5.63-2.134c-2.28-3.056-4.647-14.652-.62-20.181 3.171-4.352 22.929-3.128 25.11-2.93a1 1 0 0 1 .9 1.087 1.024 1.024 0 0 1-1.086.9c-22.257-.643-23.329 2.139-23.329 2.139-3.462 4.61-1.284 15.225.625 17.784a3.561 3.561 0 0 0 4.076 1.213.794.794 0 0 0 .488-1.06c-2.7-9.464-1.586-12.489-1.449-12.8a1 1 0 0 1 .58-.544c.337-.121 7.4-.753 19.966.848a1 1 0 1 1-.253 1.983c-10.344-1.318-16.621-1.676-18.541-1.106-.162 1.018-.346 4.18 1.62 11.072a2.777 2.777 0 0 1-1.524 3.4 4.132 4.132 0 0 1-.933.329z"/>
<path d="M154.954 133.172s2.432 4.544 3.463 4.542 1.742-2.279 4.785-3.524c3.272-1.339 5.033.538 6.124-.251s1.2-5.459.718-6.368-3.7-2.42-8.672-.654-6.905 5.347-6.418 6.255z"/>
<path d="M131.166 148.6a6.476 6.476 0 0 0 .643.1 1.58 1.58 0 0 0 .307.046 6.4 6.4 0 0 0 1.934-.631 14.34 14.34 0 0 0 4.857-3.481 2.88 2.88 0 0 0 .685-2.355 1.75 1.75 0 0 0-1.255-1.279c-2.225-.807-9.326-.381-12.807 2.416a1.52 1.52 0 0 0-.486 1.768c.538 1.397 4.244 2.916 6.122 3.416z"/>
<path d="M131.973 147.394s-.186 6.672 2.354 8.45"/>
<path d="M134.349 156.844a1 1 0 0 1-.595-.181c-2.9-2.028-2.8-8.559-2.781-9.3a.982.982 0 0 1 1.028-.972 1 1 0 0 1 .972 1.027c-.064 2.374.4 6.536 1.929 7.6a1 1 0 0 1-.553 1.819z"/>
<path d="M191.146 210.564c-.657-8.673-1.389-15.793-2.2-22.113a70.69 70.69 0 0 0-1.943.918c.927 6.929 1.676 13.949 2.144 21.2l.015.068a61.494 61.494 0 0 1-.075 9.829c-.254 3.16-.151 3.467-.359 4.558-.067.343-.139.666-.211.989l.022.1-.215.877-.033.13-.221.807.019.088a15.562 15.562 0 0 1-1.319 3.293l-.046.072-.228.358-.078.109-.216.273-.09.1-.2.2-.087.07-.205.138-.088.019-.215.048-.049.011a.77.77 0 0 1-.476-.069c-.67-.343-2-6.187-3.045-11.414 2.134-1.139 4.734-2.719 4.879-2.8a.5.5 0 1 0-.518-.858s-3.162 1.909-5.347 3.049l-.156.035a113.632 113.632 0 0 1-16.147 4.695l-1.25.277-2.119.47-.586.13-1.837.356-.976.216-1.45.25-1.423.233-.989.158-2.114.3-.185.041c-2.4.326-4.649.559-6.637.693a17.65 17.65 0 0 1-4.866-1.482.5.5 0 1 0-.446.9 17.821 17.821 0 0 0 5.563 1.625c1.25 5.131 2.256 9.948 1.791 10.532a.769.769 0 0 1-.224.193l-.1.022a.784.784 0 0 1-.166.037l-.137.03-.156.035-.2-.037-.13-.033-.276-.092-.091-.041-.357-.177c-1.723-.98-4.285-3.762-7.025-8.174a46.184 46.184 0 0 1-2.75-5.383c-2.877-3.46-6.6-10.108-9.711-19.642q-1.77-5.725-3.244-10.808c-.206-.022-.41-.043-.606-.059-.655-.052-1.3-.1-1.936-.157 4.495 15.768 9.369 28.443 13.727 31.643a46.869 46.869 0 0 0 2.769 5.378c1.93 3.116 6.835 10.274 10.574 9.446a2.76 2.76 0 0 0 1.582-1c.64-.808 1.16-1.466-1.121-11.019a149.565 149.565 0 0 0 17.448-2.843 123 123 0 0 0 15.17-4.294c1.953 9.554 2.86 10.9 3.817 11.386a2.76 2.76 0 0 0 1.855.234c3.739-.829 5.571-8.783 5.4-14.023a61.9 61.9 0 0 0 .1-10.101zm-79.172-59.54l-.182-.82-2.3-10.359c-1.052-5.257-1.793-9.845-2.11-13.124l-.441-.281-3.817-2.432a7.778 7.778 0 1 1 8.359-13.12l2.111 1.345c-4.114 2.837-4.368 6.448-4.383 6.615a.5.5 0 0 0 .474.52l.137-.03a.5.5 0 0 0 .391-.455c-.032-.146.249-3.5 4.3-6.074 4.568-2.5 12.973-7.044 16.035-8.2 3.885-1.465 11.18-7.23 12.5-8.282l.2-.167-1.02 5.194-.067.343 4.955-2.737.059-.013.63 2.841 11.181.492.084-.131a11.81 11.81 0 0 1 7.682 4.115.5.5 0 1 0 .755-.659 12.79 12.79 0 0 0-7.84-4.408l.448-.7a7.778 7.778 0 1 1 13.12 8.359l-1.634 2.564c.311.894.616 1.81.924 2.735.065.293.188.573.275.871q.3.957.618 2a5 5 0 0 0 .285.961q.386 1.328.756 2.67l.206.927q.216.976.5 1.938l.314 1.416.307 1.386.361 1.63.112.508.959 4.325.039.176c2.917 16.877 6.122 32.387 8.549 48.11a99.288 99.288 0 0 1 1.969-.924c-2.147-13.977-4.762-25.188-7.888-44.349a179.865 179.865 0 0 0-6.07-24.087l1.117-1.753a9.751 9.751 0 0 0-16.447-10.479l-.509.8-8.492-.371-.859-3.91-2.337 1.286-1.261.689.259-1.327.987-5.022.076-.4-.3.24-3.993 3.241c-2.342 1.82-8.958 6.861-12.167 8.094-2.941 1.1-10.422 5.106-15.256 7.744l-2.087-1.33a9.76 9.76 0 1 0-11.04 16.1q.269.185.55.351l3.447 2.2A571.373 571.373 0 0 0 117.6 187.6q1.175.069 2.441.158c-6.999-25.479-8.067-36.735-8.067-36.735z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path fill="#212121" d="M0 3.789c0-.349.283-.632.632-.632h2.743c.838 0 1.64.333 2.233.925l2.484 2.485a2.74 2.74 0 0 0 1.936.801h3.816l-3.132-3.132a.632.632 0 1 1 .894-.894l4.21 4.211a.632.632 0 0 1 0 .894l-4.21 4.21a.631.631 0 1 1-.894-.893l3.132-3.132h-3.765a2.74 2.74 0 0 0-1.985.852L5.837 11.86a3.158 3.158 0 0 1-2.29.983H.632a.632.632 0 0 1 0-1.264h2.915c.52 0 1.016-.213 1.374-.59l2.257-2.376c.217-.228.458-.428.718-.597a4.004 4.004 0 0 1-.697-.556L4.715 4.976a1.895 1.895 0 0 0-1.34-.555H.632A.632.632 0 0 1 0 3.789Z" />
</svg>

After

Width:  |  Height:  |  Size: 676 B

View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M4 3.192a2 2 0 0 0-2 2v4.585H1c-1.334 0-1.334 1.485 0 1.485h7v-.485a1 1 0 0 1 .872-.99h-5.64V7.34h.01V5.36a1.11 1.11 0 0 1 1.113-1.114h7.035a1.11 1.11 0 0 1 1.113 1.113v1.418h.496a1 1 0 0 1 1 1V5.192a2 2 0 0 0-2-2h-8z"/>
<path d="M8.695 10.604h6.186L12.528 8.25a.342.342 0 0 1 .484-.483L16 10.758v.376l-2.989 2.988a.34.34 0 0 1-.483 0 .343.343 0 0 1 0-.483l2.353-2.353H8.695a.341.341 0 0 1 0-.682z"/>
</svg>

After

Width:  |  Height:  |  Size: 561 B

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
<path d="M16 .655a.632.632 0 0 0-1.263 0v2.863C13.765 2.35 12.506 1.36 10.924.87a9.419 9.419 0 0 0-6.091.162C2.883 1.758 1.04 3.23.078 4.984a.632.632 0 1 0 1.107.607c.796-1.45 2.38-2.74 4.088-3.375a8.156 8.156 0 0 1 5.277-.139c1.433.444 2.586 1.401 3.477 2.578h-3.29a.632.632 0 0 0 0 1.264h4.631A.632.632 0 0 0 16 5.287zM4.037 6.939a2 2 0 0 0-2 2v4.089H.998c-1.332.002-1.332 1.527 0 1.527h14c1.335.002 1.335-1.527 0-1.527v.002h-1.3V8.938a2 2 0 0 0-2-2zm.407 1.065h6.818a1.11 1.11 0 0 1 1.113 1.113v3.913H3.33V9.117a1.11 1.11 0 0 1 1.114-1.113z"/>
</svg>

After

Width:  |  Height:  |  Size: 696 B

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M3.207 2.4h1.207A1.4 1.4 0 0 1 5.8 1.2h6.4a2.6 2.6 0 0 1 2.6 2.6v6.4a1.4 1.4 0 0 1-1.2 1.386v1.206A2.6 2.6 0 0 0 16 10.2V3.8A3.8 3.8 0 0 0 12.2 0H5.8a2.6 2.6 0 0 0-2.593 2.4ZM0 5.8a2.6 2.6 0 0 1 2.6-2.6h7.6a2.6 2.6 0 0 1 2.6 2.6v7.6a2.6 2.6 0 0 1-2.6 2.6H2.6A2.6 2.6 0 0 1 0 13.4Zm2.6-1.4a1.4 1.4 0 0 0-1.4 1.4v5.8h4.6a1.8 1.8 0 0 1 1.8 1.8v1.4h2.6a1.4 1.4 0 0 0 1.4-1.4V5.8a1.4 1.4 0 0 0-1.4-1.4zm3.8 10.4v-1.4a.6.6 0 0 0-.6-.6H1.2v.6a1.4 1.4 0 0 0 1.4 1.4z"/>
</svg>

After

Width:  |  Height:  |  Size: 620 B

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M7.024 1.951a6.636 6.636 0 0 1 6.538 5.5 3.34 3.34 0 0 0-1.184.037A5.465 5.465 0 0 0 1.56 8.585a5.463 5.463 0 0 0 5.854 5.45v1.173a6.634 6.634 0 1 1-.39-13.257zm.586 5.78V4.878l-.006-.08a.586.586 0 0 0-1.165.08V8.39l.005.07a1.36 1.36 0 0 1 .734-.585Zm4.993-5.691.064.047.904.752a.585.585 0 0 1-.684.947l-.065-.047-.904-.753a.585.585 0 0 1 .685-.946ZM8.78 0a.585.585 0 0 1 .08 1.165l-.08.006H5.268a.585.585 0 0 1-.08-1.166L5.269 0zm.343 8.306c.152.11.243.286.243.474v6.635a.585.585 0 0 1-1.17 0V9.593l-.401.133a.585.585 0 0 1-.37-1.11l1.17-.39a.585.585 0 0 1 .528.08zm1.414 2.426a2.537 2.537 0 0 1 5.073 0v2.731a2.537 2.537 0 0 1-5.073 0Zm2.536-1.366c-.754 0-1.366.611-1.366 1.366v2.731a1.366 1.366 0 1 0 2.732 0v-2.731c0-.755-.611-1.366-1.366-1.366z"/>
</svg>

After

Width:  |  Height:  |  Size: 911 B

View File

@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M9.709 7.344h-1.84a.477.477 0 0 0-.337.813l2.555 2.554a.477.477 0 0 0 .673 0l2.554-2.554c.3-.3.088-.813-.337-.813h-1.84V4.548h.002v-1.19h-.002v-.786H9.71v.785h-.003v1.19h.004v2.797z"/>
<path d="M13.714 3.357h-1.146v1.19h1.146c.329 0 .596.267.596.596v7.619a.595.595 0 0 1-.596.595H2.286a.595.595 0 0 1-.596-.595V3.238c0-.328.267-.595.596-.595h3.47a.6.6 0 0 1 .442.197l1.36 1.51A.593.593 0 0 0 8 4.548h.277v-1.19h-.012L7.082 2.042a1.79 1.79 0 0 0-1.328-.59H2.286C1.3 1.452.5 2.252.5 3.237v9.524c0 .985.801 1.786 1.786 1.786h11.428c.985 0 1.786-.801 1.786-1.786v-7.62c0-.984-.801-1.785-1.786-1.785z"/>
</svg>

After

Width:  |  Height:  |  Size: 759 B

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="context-fill" fill-opacity="context-fill-opacity" xmlns="http://www.w3.org/2000/svg">
<path d="M8 0c.312 0 .57.232.61.532l.005.083v2.746l1.782-1.565a.615.615 0 0 1 .813.924L8.615 5l-.001 2.384H11l2.28-2.594a.615.615 0 0 1 .796-.11l.073.055a.615.615 0 0 1 .11.795l-.054.073-1.566 1.78h2.745c.311 0 .569.232.61.532L16 8a.616.616 0 0 1-.532.61l-.083.005h-2.747l1.566 1.783a.615.615 0 0 1 .008.804l-.064.065a.615.615 0 0 1-.804.007l-.065-.063L11 8.615l-2.386-.001V11l2.597 2.28a.616.616 0 0 1 .11.796l-.054.073a.616.616 0 0 1-.796.111l-.073-.055-1.783-1.567-.001 2.747a.616.616 0 0 1-.532.61L7.997 16a.616.616 0 0 1-.61-.532l-.005-.083V12.64l-1.779 1.564a.615.615 0 0 1-.813-.924L7.382 11V8.615H5.18l-2.459 2.8a.615.615 0 0 1-.925-.813l1.746-1.987H.615a.616.616 0 0 1-.61-.531L0 8c0-.311.231-.569.532-.61l.083-.005H3.18L1.795 5.807a.615.615 0 0 1 .925-.811l2.096 2.388h2.567V4.998L4.79 2.718a.616.616 0 0 1-.11-.796l.055-.072a.616.616 0 0 1 .795-.111l.073.055 1.78 1.565.002-2.744c0-.283.191-.521.451-.593l.08-.016z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,997 @@
<#
.SYNOPSIS
Installer for Lepton
.DESCRIPTION
Installs Lepton onto selected Firefox profiles
.INPUTS
TODO: input directories for installation?
Would need to discuss a non-interactive install system
.OUTPUTS
TODO: output directories that Lepton has been installed to?
.PARAMETER u
Specifies whether to update a current installation
Defaults to false
.PARAMETER f
Specifies a custom path to look for Firefox profiles in
.PARAMETER p
Specifies a custom name to use when creating a profile
.PARAMETER h
Shows this help message
.PARAMETER ?
Shows this help message
.PARAMETER WhatIf
Runs the installer without actioning any file copies/moves
Equivalent to a dry-run
.EXAMPLE
PS> .\Install.ps1 -u -f C:\Users\someone\ff-profiles
Updates current installations in the profile directory 'C:\Users\someone\ff-profiles'
.LINK
https://github.com/black7375/Firefox-UI-Fix#readme
#>
[CmdletBinding(
SupportsShouldProcess = $true,
PositionalBinding = $false
)]
param(
[Alias("u")]
[switch]$updateMode,
[Alias("f")]
[string]$profileDir,
[Alias("p")]
[string]$profileName,
[Alias("h")]
[switch]$help = $false
)
#** Helper Utils ***************************************************************
#== Message ====================================================================
function Lepton-ErrorMessage() {
Write-Error "FAILED: ${args}"
exit -1
}
function Lepton-OKMessage() {
$local:SIZE = 50
$local:FILLED = ""
for ($i = 0; $i -le ($SIZE - 2); $i++) {
$FILLED += "."
}
$FILLED += "OK"
$local:message = "${args}"
Write-Host ${message}(${FILLED}.Substring(${message}.Length))
}
$PSMinSupportedVersion = 2
function Verify-PowerShellVersion {
Write-Host -NoNewline "Checking PowerShell version... "
$PSVersion = [int](Select-Object -Property Major -First 1 -ExpandProperty Major -InputObject $PSVersionTable.PSVersion)
Write-Host "[$PSVersion]"
if ($PSVersion -lt $PSMinSupportedVersion) {
Write-Error -Category NotInstalled "You need a minimum PowerShell version of [$PSMinSupportedVersion] to use this installer"
exit -1
}
}
#== Required Tools =============================================================
function Install-Choco() {
# https://chocolatey.org/install
# https://docs.chocolatey.org/en-us/choco/setup#non-administrative-install
$InstallDir='C:\ProgramData\chocoportable'
$env:ChocolateyInstall="$InstallDir"
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
$env:Path += ";C:\ProgramData\chocoportable" # Adimin: ";C:\ProgramData\chocolatey"
refreshenv
}
function Check-Git() {
if ( -Not (Get-Command git -errorAction SilentlyContinue) ) {
if ( -Not (Get-Command choco -errorAction SilentlyContinue) ) {
Install-Choco
}
choco install git.commandline -y
$env:Path += ";C:\tools\git\bin" # Adimin: ";C:\Program Files\Git\bin"
refreshenv
}
Lepton-OKMessage "Required - git"
}
#== PATH / File ================================================================
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$currentDir = (Get-Location).path
function Filter-Path() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string[]] $pathList,
[Parameter(Position=1)]
[string] $option = "Any"
)
return $pathList.Where({ Test-Path -Path "$_" -PathType "${option}" })
}
function Copy-Auto() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $file,
[Parameter(Mandatory=$true, Position=1)]
[string] $target
)
if ( "${file}" -eq "${target}" ) {
Write-Host "'${file}' and ${target} are same file"
return 0
}
if ( Test-Path -Path "${target}" ) {
Write-Host "${target} already exists."
Write-Host "Now making a backup.."
Copy-Auto "${target}" "${target}.bak"
Remove-Item "${target}" -Recurse -Force
Write-Host ""
}
Copy-Item -Path "${file}" -Destination "${target}" -Force -Recurse
}
function Move-Auto() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $file,
[Parameter(Mandatory=$true, Position=1)]
[string] $target
)
if ( "${file}" -eq "${target}" ) {
Write-Host "'${file}' and ${target} are same file"
return 0
}
if ( Test-Path -Path "${target}" ) {
Write-Host "${target} already exists."
Write-Host "Now making a backup.."
Move-Auto "${target}" "${target}.bak"
Write-Host ""
}
Get-ChildItem -Path "${target}" -Recurse | Move-Item -Path "${file}" -Destination "${target}" -Force
}
function Restore-Auto() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $file
)
$local:target = "${file}.bak"
if ( Test-Path -Path "${file}" ) {
Remove-Item "${file}" -Recurse -Force
}
Get-ChildItem -Path "${target}" -Recurse | Move-Item -Destination "${file}" -Force
$local:lookupTarget = "${target}.bak"
if ( Test-Path -Path "${lookupTarget}" ) {
Restore-Auto "${target}"
}
}
function Write-File() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $filePath,
[Parameter(Position=1)]
[string] $fileContent = ""
)
if ( "${fileContent}" -eq "" ) {
New-Item -Path "${filePath}" -Force
}
else {
Out-File -FilePath "${filePath}" -InputObject "${fileContent}" -Force
}
}
#== INI File ================================================================
# https://devblogs.microsoft.com/scripting/use-powershell-to-work-with-any-ini-file/
function Get-IniContent () {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $filePath
)
$ini = @{}
switch -regex -file $filePath {
"^\[(.+)\]" {
# Section
$section = $matches[1]
$ini[$section] = @{}
$CommentCount = 0
}
"^(;.*)$" {
# Comment
$value = $matches[1]
$CommentCount = $CommentCount + 1
$name = Comment + $CommentCount
$ini[$section][$name] = $value
}
"(.+?)\s*=(.*)" {
# For compatibility
if ( $section -eq $null ) {
$section = "Info"
$ini[$section] = @{}
}
# Key
$name,$value = $matches[1..2]
$ini[$section][$name] = $value
}
}
return $ini
}
function Out-IniFile() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $filePath,
[Parameter(Position=1)]
[hashtable] $iniObject = @{}
)
# Create new file
$local:outFile = New-Item -ItemType file -Path "${filepath}" -Force
foreach ($i in $iniObject.keys) {
if (!($($iniObject[$i].GetType().Name) -eq "Hashtable")) {
#No Sections
Add-Content -Path $outFile -Value "$i=$($iniObject[$i])"
}
else {
#Sections
Add-Content -Path $outFile -Value "[$i]"
Foreach ($j in ($iniObject[$i].keys | Sort-Object)) {
if ($j -match "^Comment[\d]+") {
Add-Content -Path $outFile -Value "$($iniObject[$i][$j])"
}
else {
Add-Content -Path $outFile -Value "$j=$($iniObject[$i][$j])"
}
}
Add-Content -Path $outFile -Value ""
}
}
}
#** Select Menu ****************************************************************
# https://github.com/chrisseroka/ps-menu
function Check-PsMenu() {
if(-Not (Get-InstalledModule ps-menu -ErrorAction silentlycontinue)) {
Set-PSRepository PSGallery -InstallationPolicy Trusted
Install-Module -Name ps-menu -Confirm:$False -Force
}
}
function DrawMenu {
param ($menuItems, $menuPosition, $Multiselect, $selection)
$l = $menuItems.length
for ($i = 0; $i -le $l; $i++) {
if ($menuItems[$i] -ne $null){
$item = $menuItems[$i]
if ($Multiselect) {
if ($selection -contains $i){
$item = '[x] ' + $item
}
else {
$item = '[ ] ' + $item
}
}
if ($i -eq $menuPosition) {
Write-Host "> $($item)" -ForegroundColor Green
}
else {
Write-Host " $($item)"
}
}
}
}
function Toggle-Selection {
param ($pos, [array]$selection)
if ($selection -contains $pos){
$result = $selection | where {$_ -ne $pos}
}
else {
$selection += $pos
$result = $selection
}
$result
}
function Menu {
param ([array]$menuItems, [switch]$ReturnIndex=$false, [switch]$Multiselect)
$vkeycode = 0
$pos = 0
$selection = @()
if ($menuItems.Length -gt 0) {
try {
[console]::CursorVisible=$false #prevents cursor flickering
DrawMenu $menuItems $pos $Multiselect $selection
While ($vkeycode -ne 13 -and $vkeycode -ne 27) {
$press = $host.ui.rawui.readkey("NoEcho,IncludeKeyDown")
$vkeycode = $press.virtualkeycode
If ($vkeycode -eq 38 -or $press.Character -eq 'k') {$pos--}
If ($vkeycode -eq 40 -or $press.Character -eq 'j') {$pos++}
If ($vkeycode -eq 36) { $pos = 0 }
If ($vkeycode -eq 35) { $pos = $menuItems.length - 1 }
If ($press.Character -eq ' ') { $selection = Toggle-Selection $pos $selection }
if ($pos -lt 0) {$pos = 0}
If ($vkeycode -eq 27) {$pos = $null }
if ($pos -ge $menuItems.length) {$pos = $menuItems.length -1}
if ($vkeycode -ne 27) {
$startPos = [System.Console]::CursorTop - $menuItems.Length
[System.Console]::SetCursorPosition(0, $startPos)
DrawMenu $menuItems $pos $Multiselect $selection
}
}
}
finally {
[System.Console]::SetCursorPosition(0, $startPos + $menuItems.Length)
[console]::CursorVisible = $true
}
}
else {
$pos = $null
}
if ($ReturnIndex -eq $false -and $pos -ne $null) {
if ($Multiselect){
return $menuItems[$selection]
}
else {
return $menuItems[$pos]
}
}
else {
if ($Multiselect) {
return $selection
}
else {
return $pos
}
}
}
#** Profile ********************************************************************
#== Profile Dir ================================================================
# $HOME = (get-psprovider 'FileSystem').Home
$firefoxProfileDirPaths = @(
"${HOME}\AppData\Roaming\Mozilla\Firefox",
"${HOME}\AppData\Roaming\Waterfox",
"${HOME}\AppData\Roaming\librewolf",
"${HOME}\AppData\Roaming\Ghostery Browser",
"${HOME}\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser"
)
function Check-ProfileDir() {
Param (
[Parameter(Position=0)]
[string] $profileDir = ""
)
if ( "${profileDir}" -ne "" ) {
$global:firefoxProfileDirPaths = @("${profileDir}")
}
$global:firefoxProfileDirPaths = Filter-Path $global:firefoxProfileDirPaths "Container"
if ( $firefoxProfileDirPaths.Length -eq 0 ) {
Lepton-ErrorMessage "Unable to find firefox profile dir."
}
Lepton-OKMessage "Profiles dir found"
}
#== Profile Info ===============================================================
$PROFILEINFOFILE="profiles.ini"
function Check-ProfileIni() {
foreach ( $profileDir in $global:firefoxProfileDirPaths ) {
if ( -Not (Test-Path -Path "${profileDir}\${PROFILEINFOFILE}" -PathType "Leaf") ) {
Lepton-ErrorMessage "Unable to find ${PROFILEINFOFILE} at ${profileDir}"
}
}
Lepton-OKMessage "Profiles info file found"
}
#== Profile PATH ===============================================================
$firefoxProfilePaths = @()
function Update-ProfilePaths() {
foreach ( $profileDir in $global:firefoxProfileDirPaths ) {
$local:iniContent = Get-IniContent "${profileDir}\${PROFILEINFOFILE}"
$global:firefoxProfilePaths += $iniContent.Values.Path | ForEach-Object { "${profileDir}\${PSItem}" }
}
if ( $firefoxProfilePaths.Length -ne 0 ) {
Lepton-OkMessage "Profile paths updated"
}
else {
Lepton-ErrorMessage "Doesn't exist profiles"
}
}
# TODO: Multi select support
function Select-Profile() {
Param (
[Parameter(Position=0)]
[string] $profileName = ""
)
if ( "${profileName}" -ne "" ) {
$local:targetPath = ""
foreach ( $profilePath in $global:firefoxProfilePaths ) {
if ( "${profilePath}" -like "*${profileName}" ) {
$targetPath = "${profilePath}"
break
}
}
if ( "${targetPath}" -ne "" ) {
Lepton-OkMessage "Profile, `"${profileName}`" found"
$global:firefoxProfilePaths = @("${targetPath}")
}
else {
Lepton-ErrorMessage "Unable to find ${profileName}"
}
}
else {
if ( $firefoxProfilePaths.Length -eq 1 ) {
Lepton-OkMessage "Auto detected profile"
}
else {
$global:firefoxProfilePaths = Menu $firefoxProfilePaths
if ( $firefoxProfilePaths.Length -eq 0 ) {
Lepton-ErrorMessage "Please select profiles"
}
Lepton-OkMessage "Selected profile"
}
}
}
#** Lepton Info File ***********************************************************
# If you interst RFC, see install.sh
#== Lepton Info ================================================================
$LEPTONINFOFILE ="lepton.ini"
function Check-LeptonIni() {
foreach ( $profileDir in $global:firefoxProfileDirPaths ) {
if ( -Not (Test-Path -Path "${profileDir}\${LEPTONINFOFILE}") ) {
Lepton-ErrorMessage "Unable to find ${LEPTONINFOFILE} at ${profileDir}"
}
}
Lepton-OkMessage "Lepton info file found"
}
#== Create info file ===========================================================
# We should always create a new one, as it also takes into account the possibility of setting it manually.
# Updates happen infrequently, so the creation overhead is less significant.
function Get-ProfileDir() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $profilePath
)
foreach ( $profileDir in $firefoxProfileDirPaths ) {
if ( "$profilePath" -like "${profileDir}*" ) {
return "$profileDir"
}
}
}
$CHROMEINFOFILE="LEPTON"
function Write-LeptonInfo() {
# Init info
$local:output = @{}
$local:prevDir = $firefoxProfileDirPaths[0]
$local:latestPath = ( $firefoxProfilePaths | Select-Object -Last 1 )
foreach ( $profilePath in $global:firefoxProfilePaths ) {
$local:LEPTONINFOPATH = "${profilePath}\chrome\${CHROMEINFOFILE}"
$local:LEPTONGITPATH = "${profilePath}\chrome\.git"
# Profile info
$local:Type = ""
$local:Ver = ""
$local:Branch = ""
$local:Path = ""
if ( Test-Path -Path "${LEPTONINFOPATH}" ) {
if ( Test-Path -Path "${LEPTONGITPATH}" -PathType "Container" ) {
$Type = "Git"
$Ver = $(git --git-dir "${LEPTONGITPATH}" rev-parse HEAD)
$Branch = $(git --git-dir "${LEPTONGITPATH}" rev-parse --abbrev-ref HEAD)
}
else {
$local:iniContent = Get-IniContent "${LEPTONINFOPATH}"
$Type = $iniContent["Info"]["Type"]
$Ver = $iniContent["Info"]["Ver"]
$Branch = $iniContent["Info"]["Branch"]
if ( "${Type}" -eq "" ) {
$Type = "Local"
}
}
$Path = "${profilePath}"
}
# Flushing
$local:profileDir = Get-ProfileDir "${profilePath}"
$local:profileName = Split-Path "${profilePath}" -Leaf
if ( "${prevDir}" -ne "${profileDir}" ) {
Out-IniFile "${prevDir}\${LEPTONINFOFILE}" $output
$output = @{}
}
# Make output contents
foreach ( $key in @("Type", "Branch", "Ver", "Path") ) {
$local:value = (Get-Variable -Name "${key}").Value
if ( "$value" -ne "" ) {
$output["${profileName}"] += @{"${key}" = "${value}"}
}
}
# Latest element flushing
if ( "${profilePath}" -eq "${latestPath}" ) {
Out-IniFile "${profileDir}\${LEPTONINFOFILE}" $output
}
$prevDir = "${profileDir}"
}
# Verify
Check-LeptonIni
Lepton-OkMessage "Lepton info file created"
}
#** Install ********************************************************************
#== Install Types ==============================================================
$updateMode = $false
$leptonBranch = "master"
function Select-Distribution() {
while ( $true ) {
$local:selected = $false
$local:selectedDistribution = Menu @("Original(default)", "Photon-Style", "Proton-Style", "Update")
switch ( $selectedDistribution ) {
"Original(default)" { $global:leptonBranch = "master" ; $selected = $true }
"Photon-Style" { $global:leptonBranch = "photon-style"; $selected = $true }
"Proton-Style" { $global:leptonBranch = "proton-style"; $selected = $true }
"Update" { $global:updateMode = $true ; $selected = $true }
default { Write-Host "Invalid option, reselect please." }
}
if ( $selected -eq $true ) {
break
}
}
Lepton-OkMessage "Selected ${selectedDistribution}"
}
$leptonInstallType = "Network" # Other types: Local, Release
function Check-InstallType() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string[]] $targetList,
[Parameter(Mandatory=$true, Position=1)]
[string] $installType
)
$local:targetCount = $targetList.Length
$local:foundCount = (Filter-Path $targetList ).Length
if ( "${targetCount}" -eq "${foundCount}" ) {
$global:leptonInstallType="${installType}"
}
}
$checkLocalFiles = @(
"userChrome.css",
"userContent.css",
"icons"
)
$checkReleaseFiles = @(
"user.js"
"chrome\userChrome.css"
"chrome\userContent.css"
"chrome\icons"
)
function Check-InstallTypes() {
Check-InstallType $checkLocalFiles "Local"
Check-InstallType $checkReleaseFiles "Release"
Lepton-OkMessage "Checked install type: ${leptonInstallType}"
if ( "${leptonInstallType}" -eq "Network" ) {
Select-Distribution
}
if ( "${leptonInstallType}" -eq "Local" ) {
if ( Test-Path -Path ".git" -PathType "Container" ) {
Select-Distribution
git checkout "${leptonBranch}"
}
}
}
#== Custom Install =============================================================
$customFiles = @(
"user-overrides.js",
"userChrome-overrides.css",
"userContent-overrides.css"
)
$localCustomFiles = $customFiles.Clone()
$customFileExist = $false
function Check-CustomFiles() {
$global:localCustomFiles = Filter-Path $localCustomFiles
if ( $global:localCustomFiles.Length -gt 0 ) {
$global:customFileExist = $true
Lepton-OKMessage "Check custom file detected"
foreach ( $customFile in $global:localCustomFiles ) {
Write-Host "- ${customFile}"
}
}
}
function Copy-CustomFiles() {
if ( "${customFileExist}" -eq $true ) {
# If Release or Network mode, Local is passed (Already copied)
if ( "${leptonInstallType}" -ne "Local" ) {
foreach ( $profilePath in $global:firefoxProfilePaths ) {
foreach ( $customFile in $global:localCustomFiles ) {
if ( "${customFile}" -eq "user-overrides.js" ) {
Copy-Auto "${customFile}" "${profilePath}\${customFile}"
}
else {
Copy-Auto "${customFile}" "${profilePath}\chrome\${customFile}"
}
}
}
}
Lepton-OKMessage "End custom file copy"
}
}
$customMethod = ""
$customReset = $false
$customAppend = $false
function Set-CustomMethod() {
$local:menuAppend="Append - Maintain changes in existing files and apply custom"
$local:menuOverwrite="Overwrite - After initializing the change, apply only custom"
$local:menuNone="None - Maintain changes in existing files"
$local:menuReset="Reset- Reset to pure lepton theme without custom"
Write-Host "Select custom method"
while ( "${customMethod}" -eq "" ) {
$local:applyMethod = Menu @("${menuAppend}", "${menuOverwrite}", "${menuNone}", "${menuReset}")
switch ( $applyMethod ) {
"${menuAppend}" {
$global:customMethod = "Append"
$global:customAppend = $true
}
"${menuOverwrite}" {
$global:customMethod = "Overwrite"
$global:customReset = $true
$global:customAppend = $true
}
"${menuNone}" {
$global:customMethod = "None"
}
"${menuReset}" {
$global:customMethod = "Reset"
$global:customReset = $true
}
default { Write-Host "Invalid option, reselect please." }
}
}
Lepton-OKMessage "Selected ${customMethod}"
}
$customFileApplied = $false
function Apply-CustomFile() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $profilePath,
[Parameter(Mandatory=$true, Position=1)]
[string] $targetPath,
[Parameter(Mandatory=$true, Position=2)]
[string] $customPath,
[Parameter(Position=3)]
[string] $otherCustomPath = ""
)
$local:leptonDir = "${profilePath}\chrome"
$local:gitDir = "${leptonDir}\.git"
if ( Test-Path -Path "${customPath}" -PathType leaf ) {
$global:customFileApplied = $true
if ( "${customMethod}" -eq "" ) {
Set-CustomMethod
}
if ( "${customReset}" -eq $true ) {
if ( "${targetPath}" -like "*user.js" ) {
Copy-Item -Path "${leptonDir}\user.js" -Destination "${targetPath}" -Force
}
else {
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout HEAD -- "${targetPath}"
}
}
if ( "${customAppend}" -eq $true ) {
# Apply without duplication
if ( -not (Write-Output "$(Write-Output $(Get-Content -Path "${targetPath}"))" | Select-String -Pattern "$(Write-Output $(Get-Content -Path "${customPath}"))" -SimpleMatch -Quiet) ) {
Get-Content -Path "${customPath}" | Out-File -FilePath "${targetPath}" -Append
}
}
}
elseif ( "${otherCustomPath}" -ne "" ) {
Apply-CustomFile "${profilePath}" "${targetPath}" "${otherCustomPath}"
}
}
function Apply-CustomFiles() {
foreach ( $profilePath in $global:firefoxProfilePaths ) {
foreach ( $customFile in $global:customFiles ) {
$local:targetFile = $customFile.Replace("-overrides", "")
if ( "${customFile}" -eq "user-overrides.js" ) {
$local:targetPath = "${profilePath}\${targetFile}"
$local:customPath = "${profilePath}\user-overrides.js"
$local:otherCustomPath = "${profilePath}\chrome\user-overrides.js"
Apply-CustomFile "${profilePath}" "${targetPath}" "${customPath}" "${otherCustomPath}"
}
else {
Apply-CustomFile "${profilePath}" "${profilePath}\chrome\${targetFile}" "${profilePath}\chrome\${customFile}"
}
}
}
if ( "${customFileApplied}" -eq $true ) {
Lepton-OKMessage "End custom file applied"
}
}
#== Install Helpers ============================================================
$chromeDuplicate = $false
function Check-ChromeExist() {
if ( (Test-Path -Path "chrome") -and (-Not (Test-Path -Path "chrome\${LEPTONINFOFILE}")) ) {
$global:chromeDuplicate = $true
Move-Auto "chrome" "chrome.bak"
Lepton-OkMessage "Backup files"
}
}
function Check-ChromeRestore() {
if ( "${chromeDuplicate}" -eq $true ) {
Restore-Auto "chrome"
Lepton-OkMessage "End restore files"
}
Lepton-OkMessage "End check restore files"
}
function Clean-Lepton() {
if ( ($chromeDuplicate -ne $true) -and (Test-Path -Path "chrome") ) {
Remove-Item -Path "chrome" -Recurse -Force
}
Lepton-OkMessage "End clean files"
}
function Clone-Lepton() {
Param (
[Parameter(Position=0)]
[string] $branch = ""
)
if ( "${branch}" -eq "" ) {
$branch = "${leptonBranch}"
}
git clone -b "${branch}" https://github.com/black7375/Firefox-UI-Fix.git chrome
if ( -Not (Test-Path -Path "chrome" -PathType "Container") ) {
Lepton-ErrorMessage "Unable to find downloaded files"
}
}
function Copy-Lepton() {
Param (
[Parameter(Position=0)]
[string] $chromeDir = "chrome",
[Parameter(Position=1)]
[string] $userJSPath = "${chromeDir}\user.js"
)
foreach ( $profilePath in $global:firefoxProfilePaths ) {
Copy-Auto "${userJSPath}" "${profilePath}\user.js"
Copy-Auto "${chromeDir}" "${profilePath}\chrome"
}
Lepton-OkMessage "End profile copy"
}
#== Each Install ===============================================================
function Install-Local() {
Copy-Lepton "${currentDir}" "user.js"
Copy-CustomFiles
Apply-CustomFiles
}
function Install-Release() {
Copy-Lepton "chrome" "user.js"
Copy-CustomFiles
Apply-CustomFiles
}
function Install-Network() {
Check-ChromeExist
Check-Git
Clone-Lepton
Copy-Lepton
Copy-CustomFiles
Clean-Lepton
Check-ChromeRestore
Apply-CustomFiles
}
function Install-Profile() {
Lepton-OkMessage "Started install"
switch ( "${leptonInstallType}" ) {
"Local" { Install-Local }
"Release" { Install-Release }
"Network" { Install-Network }
}
Lepton-OkMessage "End install"
}
#** Update *********************************************************************
function Stash-File() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $leptonDir,
[Parameter(Mandatory=$true, Position=1)]
[string] $gitDir
)
if ( "$(git --git-dir "${gitDir}" --work-tree "${leptonDir}" diff --stat)" -ne '' ) {
git --git-dir "${gitDir}" --work-tree "${leptonDir}" stash --quiet
return $true
}
return $false
}
function Restore-File() {
Param (
[Parameter(Mandatory=$true, Position=0)]
[string] $leptonDir,
[Parameter(Mandatory=$true, Position=1)]
[string] $gitDir,
[Parameter(Position=2)]
[string] $gitDirty = "$false"
)
if ( "${gitDirty}" -eq $true ) {
git --git-dir "${gitDir}" --work-tree "${leptonDir}" stash pop --quiet
}
}
function Update-Profile() {
Check-Git
foreach ( $profileDir in $global:firefoxProfileDirPaths ) {
$local:LEPTONINFOPATH = "${profileDir}\${LEPTONINFOFILE}"
$local:LEPTONINFO = Get-IniContent "${LEPTONINFOPATH}"
$local:sections = $LEPTONINFO.Keys
if ( $sections.Length -ne 0 ) {
foreach ( $section in $sections ) {
$local:Type = $LEPTONINFO["${section}"]["Type"]
$local:Branch = $LEPTONINFO["${section}"]["Branch"]
$local:Path = $LEPTONINFO["${section}"]["Path"]
$local:leptonDir = "${Path}\chrome"
$local:gitDir = "${leptonDir}\.git"
if ( "${Type}" -eq "Git" ) {
$local:gitDirty = $(Stash-File "${leptonDir}" "${gitDir}")
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout "${Branch}"
git --git-dir "${gitDir}" --work-tree "${leptonDir}" pull --no-edit
Restore-File "${leptonDir}" "${gitDir}" "$gitDirty"
}
elseif ( "${Type}" -eq "Local" -or "${Type}" -eq "Release" ) {
Check-ChromeExist
Clone-Lepton
$firefoxProfilePaths = @("${Path}")
Copy-Lepton
if ( "${Branch}" -eq $null ) {
$Branch = "${leptonBranch}"
}
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout "${Branch}"
if ( "${Type}" -eq "Release" ) {
$local:Ver=$(git --git-dir "${gitDir}" describe --tags --abbrev=0)
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout "tags/${Ver}"
}
Clean-Lepton
Check-ChromeRestore
}
else {
Lepton-ErrorMessage "Unable to find update type, ${Type} at ${section}"
}
}
}
}
Apply-CustomFiles
}
#** Main ***********************************************************************
function Check-Help {
# Cheap and dirty way of getting the same output as '-?' for '-h' and '-Help'
if ($help) {
Get-Help "$PSCommandPath"
exit 0
}
}
function Install-Lepton {
Verify-PowerShellVersion # Check installed version meets minimum
Check-InstallTypes
Check-ProfileDir $profileDir
Check-ProfileIni
Update-ProfilePaths
Write-LeptonInfo
Check-CustomFiles
if ( $updateMode ) {
Update-Profile
}
else {
Select-Profile $profileName
Install-Profile
}
Write-LeptonInfo
}
Check-Help
Install-Lepton

View File

@ -0,0 +1,954 @@
#!/usr/bin/env bash
#** Helper Utils ***************************************************************
#== Message ====================================================================
lepton_error_message() {
>&2 echo "FAILED: ${@}"
exit 1
}
lepton_ok_message() {
local SIZE=50
local FILLED=""
for ((i=0; i<=$((SIZE - 2)); i++)); do
FILLED+="."
done
FILLED+="OK"
local message="${@}"
echo "${message}${FILLED:${#message}}"
}
lepton_spinner() {
local chars="/-\|"
for (( i=0; i<${#chars}; i++ )); do
sleep 0.5
echo -en "${chars:$i:1}" "\r"
done
}
#== Required Tools =============================================================
PACAPT_PATH="/usr/local/bin/pacapt"
PACAPT_INSTALLED=true
pacapt_install() {
if ! [ -x "$(command -v pacapt)" ]; then
echo "Universal Package Manager(icy/pacapt) Download && Install(need sudo permission)"
echo "It is installed temporarily and will be removed when installation is complete."
sudo curl https://github.com/icy/pacapt/raw/ng/pacapt -Lo "${PACAPT_PATH}"
sudo chmod 755 "${PACAPT_PATH}"
sudo ln -sv "${PACAPT_PATH}" /usr/local/bin/pacman || true
PACAPT_INSTALLED=false
fi
sudo pacapt -Sy
}
pacapt_uninstall() {
if [[ "${PACAPT_INSTALLED}" == false ]]; then
sudo rm -rf "${PACAPT}"
fi
}
mac_command_line_developer_tools() {
# https://unix.stackexchange.com/questions/408280/until-statement-waiting-for-process-to-finish-being-ignored
XCODE_MESSAGE="$(osascript -e 'tell app "System Events" to display dialog "Please click install when Command Line Developer Tools appears"')"
if [ "$XCODE_MESSAGE" = "button returned:OK" ]; then
xcode-select --install
else
lepton_error_message "You have cancelled the installation, please rerun the installer."
fi
until [ "$(xcode-select -p 1>/dev/null 2>&1; echo $?)" -eq 0 ]; do
lepton_spinner
done
echo ""
lepton_ok_message "Installed Command Line Developer Tools"
}
check_git() {
if ! [ -x "$(command -v git)" ]; then
if [[ "${OSTYPE}" == "linux"* || "${OSTYPE}" == "FreeBSD" ]]; then
pacapt_install
sudo pacapt -S git
pacapt_uninstall
elif [[ "${OSTYPE}" == "darwin"* ]]; then
mac_command_line_developer_tools
else
lepton_error_message "OS NOT DETECTED, couldn't install required packages. Please manually install git."
fi
fi
if [[ "${OSTYPE}" == "darwin"* ]]; then
if ! [ "$(git --help 1>/dev/null 2>&1; echo $?)" -eq 0 ]; then
mac_command_line_developer_tools
fi
fi
lepton_ok_message "Required - git"
}
#== PATH / File ================================================================
currentDir=$( cd "$(dirname $0)" ; pwd )
paths_filter() {
local pathListName="$1" # array name
local option="$2"
# Set array
eval "local pathList=(\"\${${pathListName}[@]}\")"
# Set default option
if [ -z "$option" ]; then
option="-e"
fi
# Check path
local foundedTargets=()
for checkTarget in "${pathList[@]}"; do
if [ "$option" "$checkTarget" ]; then
foundedTargets+=("$checkTarget")
fi
done
# Replace
eval "${pathListName}=(\"\${foundedTargets[@]}\")"
}
autocp() {
local file="${1}"
local target="${2}"
if [ "${file}" == "${target}" ]; then
echo "'${file}' and ${target} are same file"
return 0
fi
if [ -e "${target}" ]; then
echo "${target} already exists."
echo "Now making a backup.."
autocp "${target}" "${target}.bak"
rm -rf "${target}"
echo ""
fi
cp -rf "${file}" "${target}"
}
automv() {
local file="${1}"
local target="${2}"
if [ "${file}" == "${target}" ]; then
echo "'${file}' and ${target} are same file"
return 0
fi
if [ -e "${target}" ]; then
echo "${target} already exists."
echo "Now making a backup.."
automv "${target}" "${target}.bak"
echo ""
fi
mv -f "${file}" "${target}"
}
autorestore() {
local file="${1}"
local target="${file}.bak"
if [ -e "${file}" ]; then
rm -rf "${file}"
fi
mv -f "${target}" "${file}"
local lookupTarget="${target}.bak"
if [ -e "${lookupTarget}" ]; then
autorestore "${target}"
fi
}
write_file() {
local filePath="$1"
local fileContent="$2"
if [ -z "${fileContent}" ]; then
if [ -e "${filePath}" ]; then
rm -rf "${filePath}"
fi
touch "${filePath}"
else
echo -e "${fileContent}" | tee "${filePath}" > /dev/null
fi
}
#== INI File ================================================================
get_ini_section() {
local filePath="$1"
local output=$(grep -E "^\[" "${filePath}" |sed -e "s/^\[//g" -e "s/\]$//g")
echo "${output}"
}
get_ini_value() {
local filePath="$1"
local key="$2"
local section="$3"
local output=""
if [ "${section}" == "" ]; then
output=$(grep -E "^${key}" "${filePath}" | cut -f 2 -d"=")
echo "${output}"
else
local sectionStart=""
for line in $(cat "${filePath}"); do
if [[ "${sectionStart}" == "true" && "${line}" == "["* ]]; then
return 0
fi
if [ "${line}" == "[${section}]" ]; then
sectionStart="true"
fi
if [ "${sectionStart}" == "true" ]; then
output=$(echo "${line}" | grep -E "^${key}" | cut -f 2 -d"=" )
if [ "${output}" != "" ]; then
echo "${output}"
fi
fi
done
fi
}
set_ini_section() {
local section="$1"
echo "[${section}]\n"
}
set_ini_value() {
local key="$1"
local value="$2"
if [ "${value}" == "" ]; then
echo ""
else
echo "${key}=${value}\n"
fi
}
#== Multiselect ================================================================
# https://stackoverflow.com/questions/45382472/bash-select-multiple-answers-at-once/54261882
multiselect() {
echo 'Select with <space>, confirm with <enter>'
# little helpers for terminal print control and key input
ESC=$( printf "\033")
cursor_blink_on() { printf "$ESC[?25h"; }
cursor_blink_off() { printf "$ESC[?25l"; }
cursor_to() { printf "$ESC[$1;${2:-1}H"; }
print_inactive() { printf "$2 $1 "; }
print_active() { printf "$2 $ESC[7m $1 $ESC[27m"; }
get_cursor_row() { IFS=';' read -sdR -p $'\E[6n' ROW COL; echo ${ROW#*[}; }
key_input() {
local key
IFS= read -rsn1 key 2>/dev/null >&2
if [[ $key = "" ]]; then echo enter; fi;
if [[ $key = $'\x20' ]]; then echo space; fi;
if [[ $key = $'\x1b' ]]; then
read -rsn2 key
if [[ $key = [A ]]; then echo up; fi;
if [[ $key = [B ]]; then echo down; fi;
fi
}
toggle_option() {
local arr_name=$1
eval "local arr=(\"\${${arr_name}[@]}\")"
local option=$2
if [[ ${arr[option]} == true ]]; then
arr[option]=
else
arr[option]=true
fi
eval $arr_name='("${arr[@]}")'
}
local retval=$1
local options
local defaults
IFS=';' read -r -a options <<< "$2"
if [[ -z $3 ]]; then
defaults=()
else
IFS=';' read -r -a defaults <<< "$3"
fi
local selected=()
for ((i=0; i<${#options[@]}; i++)); do
selected+=("${defaults[i]}")
printf "\n"
done
# determine current screen position for overwriting the options
local lastrow=`get_cursor_row`
local startrow=$(($lastrow - ${#options[@]}))
# ensure cursor and input echoing back on upon a ctrl+c during read -s
trap "cursor_blink_on; stty echo; printf '\n'; exit" 2
cursor_blink_off
local active=0
while true; do
# print options by overwriting the last lines
local idx=0
for option in "${options[@]}"; do
local prefix="[ ]"
if [[ ${selected[idx]} == true ]]; then
prefix="[x]"
fi
cursor_to $(($startrow + $idx))
if [ $idx -eq $active ]; then
print_active "$option" "$prefix"
else
print_inactive "$option" "$prefix"
fi
((idx++))
done
# user key control
case `key_input` in
space) toggle_option selected $active;;
enter) break;;
up) ((active--));
if [ $active -lt 0 ]; then active=$((${#options[@]} - 1)); fi;;
down) ((active++));
if [ $active -ge ${#options[@]} ]; then active=0; fi;;
esac
done
# cursor position back to normal
cursor_to $lastrow
printf "\n"
cursor_blink_on
eval $retval='("${selected[@]}")'
}
#** Profile ********************************************************************
#== Profile Dir ================================================================
firefoxProfileDirPaths=(
"${HOME}/.mozilla/firefox"
"${HOME}/.waterfox"
"${HOME}/.librewolf"
"${HOME}/.ghostery browser"
"${HOME}/.pulse-browser"
"${HOME}/.firedragon"
"${HOME}/.local/opt/tor-browser/app/Browser/TorBrowser/Data/Browser"
"${HOME}/.var/app/org.mozilla.firefox/.mozilla/firefox"
"${HOME}/snap/firefox/common/.mozilla/firefox"
"${HOME}/Library/Application Support/Firefox"
"${HOME}/Library/Application Support/Waterfox"
"${HOME}/Library/Application Support/libreWolf"
"${HOME}/Library/Application Support/Ghostery Browser"
"${HOME}/Library/Application Support/pulse-browser"
"${HOME}/Library/Application Support/TorBrowser/Browser"
)
check_profile_dir() {
local profileDir="$1"
if [ "${profileDir}" != "" ]; then
firefoxProfileDirPaths=("${profileDir}")
fi
paths_filter firefoxProfileDirPaths -d
local foundCount="${#firefoxProfileDirPaths[@]}"
if [ "${foundCount}" -eq 0 ]; then
lepton_error_message "Unable to find firefox profile dir."
fi
lepton_ok_message "Profiles dir found"
}
#== Profile Info ===============================================================
PROFILEINFOFILE="profiles.ini"
check_profile_ini() {
for profileDir in "${firefoxProfileDirPaths[@]}"; do
if [ ! -f "${profileDir}/${PROFILEINFOFILE}" ]; then
lepton_error_message "Unable to find ${PROFILEINFOFILE} at ${profileDir}"
fi
done
lepton_ok_message "Profiles info file found"
}
#== Profile PATH ===============================================================
firefoxProfilePaths=()
update_profile_paths() {
local IFS=$'\n'
for profileDir in "${firefoxProfileDirPaths[@]}"; do
local escapeDir=$(echo "${profileDir}" | sed "s|\/|\\\/|g")
firefoxProfilePaths+=($(
get_ini_value "${profileDir}/${PROFILEINFOFILE}" "Path" |
sed "s/^/${escapeDir}\//"
))
done
local foundCount="${#firefoxProfilePaths[@]}"
if ! [ "${foundCount}" -eq 0 ]; then
lepton_ok_message "Profile paths updated"
else
lepton_error_message "Doesn't exist profiles"
fi
}
select_profile() {
local profileName="$1"
if [ "${profileName}" != "" ]; then
local targetPath=""
for profilePath in "${firefoxProfilePaths[@]}"; do
if [[ "${profilePath}" == *"${profileName}" ]]; then
targetPath="${profilePath}"
break
fi
done
if [ "${targetPath}" != "" ]; then
lepton_ok_message "Profile, \"${profileName}\" found"
firefoxProfilePaths=("${targetPath}")
else
lepton_error_message "Unable to find ${profileName}"
fi
else
local foundCount="${#firefoxProfilePaths[@]}"
if [ "${foundCount}" -eq 1 ]; then
lepton_ok_message "Auto detected profile"
else
local multiPaths=""
for profilePath in "${firefoxProfilePaths[@]}"; do
multiPaths+="${profilePath};"
done
multiselect profileSelected "${multiPaths}"
local targetPaths=()
for ((i=0; i<"${#profileSelected[@]}"; i++)); do
local result="${profileSelected[${i}]}"
if [ "$result" == "true" ]; then
targetPaths+=("${firefoxProfilePaths[${i}]}")
fi
done
firefoxProfilePaths=("${targetPaths[@]}")
foundCount="${#firefoxProfilePaths[@]}"
if [ "${foundCount}" -eq 0 ]; then
lepton_error_message "Please select profiles"
fi
lepton_ok_message "Multi selected profiles"
fi
fi
}
#** Lepton Info File ***********************************************************
#== Info File format & update policy ===========================================
## `LEPTON` file format
# If this file exist in same directory as the `userChrome.css` file,
# it is recognized as the "Lepton" installation directory.
# [Info]
# Branch=master | photon-style | proton-style
# Ver=<git tag> | <git hash> | [NULL]
## `lepton.ini` file Format
# [Profile Name]
# Type=Local | Release | Git
# Branch=master | photon-style | proton-style
# Ver=<git tag> | <git hash> | [NULL]
# Path=<Full PATH>
## Update Policy
# Type
# - Local(unknown): force latest commit update
# - Release(<git tag>): force latest tag update
# - Git<git hash>: latest commit update
#== Lepton Info ================================================================
LEPTONINFOFILE="lepton.ini"
check_lepton_ini() {
for profileDir in "${firefoxProfileDirPaths[@]}"; do
if [ ! -f "${profileDir}/${LEPTONINFOFILE}" ]; then
lepton_error_message "Unable to find ${LEPTONINFOFILE} at ${profileDir}"
fi
done
lepton_ok_message "Lepton info file found"
}
#== Create info file ===========================================================
# We should always create a new one, as it also takes into account the possibility of setting it manually.
# Updates happen infrequently, so the creation overhead is less significant.
get_profile_dir() {
local profilePath="$1"
for profileDir in "${firefoxProfileDirPaths[@]}"; do
if [[ "${profilePath}" == "${profileDir}"* ]]; then
echo "${profileDir}"
return 0
fi
done
}
CHROMEINFOFILE="LEPTON"
write_lepton_info() {
# Init info
local output=""
local prevDir="${firefoxProfileDirPaths[0]}"
local latestPath="${firefoxProfilePaths[${#firefoxProfilePaths[@]} - 1]}"
for profilePath in "${firefoxProfilePaths[@]}"; do
local LEPTONINFOPATH="${profilePath}/chrome/${CHROMEINFOFILE}"
local LEPTONGITPATH="${profilePath}/chrome/.git"
# Profile info
local Type=""
local Ver=""
local Branch=""
local Path=""
if [ -f "${LEPTONINFOPATH}" ]; then
if [ -d "${LEPTONGITPATH}" ]; then
Type="Git"
Ver=$( git --git-dir "${LEPTONGITPATH}" rev-parse HEAD)
Branch=$(git --git-dir "${LEPTONGITPATH}" rev-parse --abbrev-ref HEAD)
else
Type=$( get_ini_value "${LEPTONINFOPATH}" "TYPE" )
Ver=$( get_ini_value "${LEPTONINFOPATH}" "Ver" )
Branch=$(get_ini_value "${LEPTONINFOPATH}" "Branch")
if [ "${Type}" == "" ]; then
Type="Local"
fi
fi
Path="${profilePath}"
fi
# Flushing
local profileDir=$(get_profile_dir "${profilePath}")
local profileName=$(basename "${profilePath}")
if [ "${prevDir}" != "${profileDir}" ]; then
write_file "${prevDir}/${LEPTONINFOFILE}" "${output}"
output=""
fi
# Make output contents
if [ -f "${LEPTONINFOPATH}" ]; then
output="${output}$(set_ini_section ${profileName})"
fi
for key in "Type" "Branch" "Ver" "Path"; do
eval "local value=\${${key}}"
output="${output}$(set_ini_value ${key} ${value})"
done
# Latest element flushing
if [ "${profilePath}" == "${latestPath}" ]; then
write_file "${profileDir}/${LEPTONINFOFILE}" "${output}"
fi
prevDir="${profileDir}"
done
# Verify
check_lepton_ini
lepton_ok_message "Lepton info file created"
}
#** Install ********************************************************************
#== Install Types ==============================================================
updateMode=""
leptonBranch="master"
select_distribution() {
local selectedDistribution=""
select distribution in "Original(default)" "Photon-Style" "Proton-Style" "Update"; do
selectedDistribution="${distribution}"
case "${distribution}" in
"Original(default)") leptonBranch="master"; break;;
"Photon-Style") leptonBranch="photon-style"; break;;
"Proton-Style") leptonBranch="proton-style"; break;;
"Update") updateMode="true"; break;;
*) echo "Invalid option, reselect please.";;
esac
done
lepton_ok_message "Selected ${selectedDistribution}"
}
leptonInstallType="Network" # Other types: Local, Release
check_install_type() {
local targetListName="${1}"
local installType="${2}"
eval "local targetCount=\${#${targetListName}[@]}"
paths_filter "${targetListName}"
eval "local foundCount=\${#${targetListName}[@]}"
if [ "${targetCount}" -eq "${foundCount}" ]; then
leptonInstallType="${installType}"
fi
}
checkLocalFiles=(
userChrome.css
userContent.css
icons
)
checkReleaseFiles=(
user.js
chrome/userChrome.css
chrome/userContent.css
chrome/icons
)
check_install_types() {
check_install_type checkLocalFiles "Local"
check_install_type checkReleaseFiles "Release"
lepton_ok_message "Checked install type: ${leptonInstallType}"
if [ "${leptonInstallType}" == "Network" ]; then
select_distribution
fi
if [ "${leptonInstallType}" == "Local" ]; then
if [ -d ".git" ]; then
select_distribution
git checkout "${leptonBranch}"
fi
fi
}
#== Custom Install =============================================================
customFiles=(
user-overrides.js
userChrome-overrides.css
userContent-overrides.css
)
localCustomFiles=("${customFiles[@]}")
customFileExist=""
check_custom_files() {
paths_filter localCustomFiles
if [ "${#localCustomFiles[@]}" -gt 0 ]; then
customFileExist="true"
lepton_ok_message "Check custom file detected"
for customFile in "${localCustomFiles[@]}"; do
echo "- ${customFile}"
done
fi
}
copy_custom_files() {
if [ "${customFileExist}" == "true" ]; then
# If Release or Network mode, Local is passed (Already copied)
if [ "${leptonInstallType}" != "Local" ]; then
for profilePath in "${firefoxProfilePaths[@]}"; do
for customFile in "${localCustomFiles[@]}"; do
if [ "${customFile}" == "user-overrides.js" ]; then
autocp "${customFile}" "${profilePath}/${customFile}"
else
autocp "${customFile}" "${profilePath}/chrome/${customFile}"
fi
done
done
fi
lepton_ok_message "End custom file copy"
fi
}
customMethod=""
customReset=""
customAppend=""
set_custom_method() {
local menuAppend="Append - Maintain changes in existing files and apply custom"
local menuOverwrite="Overwrite - After initializing the change, apply only custom"
local menuNone="None - Maintain changes in existing files"
local menuReset="Reset- Reset to pure lepton theme without custom"
echo "Select custom method"
select applyMethod in "${menuAppend}" "${menuOverwrite}" "${menuNone}" "${menuReset}"; do
case "${applyMethod}" in
"${menuAppend}")
customMethod="Append"
customAppend="true"
break;;
"${menuOverwrite}")
customMethod="Overwrite"
customReset="true"
customAppend="true"
break;;
"${menuNone}")
customMethod="None"
break;;
"${menuReset}")
customMethod="Reset"
customReset="true"
break;;
*)
echo "Invalid option, reselect please.";;
esac
done
lepton_ok_message "Selected ${customMethod}"
}
customFileApplied=""
apply_custom_file() {
local profilePath=$1
local targetPath=$2
local customPath=$3
local otherCustomPath=$4
local leptonDir="${profilePath}/chrome"
local gitDir="${leptonDir}/.git"
if [ -f "${customPath}" ]; then
customPathApplied="true"
if [ -z "${customMethod}" ]; then
set_custom_method
fi
if [ "${customReset}" == "true" ]; then
if [[ "${targetPath}" == *"user.js" ]]; then
\cp -f "${leptonDir}/user.js" "${targetPath}"
else
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout HEAD -- "${targetPath}"
fi
fi
if [ "${customAppend}" == "true" ]; then
# Apply without duplication
if ! grep -Fq "$(echo $(cat "${customPath}"))" <(echo "$(echo $(cat "${targetPath}"))"); then
cat "${customPath}" >> "${targetPath}"
fi
fi
elif [ -n "${otherCustomPath}" ]; then
apply_custom_file "${profilePath}" "${targetPath}" "${otherCustomPath}"
fi
}
apply_custom_files() {
for profilePath in "${firefoxProfilePaths[@]}"; do
for customFile in "${customFiles[@]}"; do
local targetFile="${customFile//-overrides/}"
if [ "${customFile}" == "user-overrides.js" ]; then
local targetPath="${profilePath}/${targetFile}"
local customPath="${profilePath}/user-overrides.js"
local otherCustomPath="${profilePath}/chrome/user-overrides.js"
apply_custom_file "${profilePath}" "${targetPath}" "${customPath}" "${otherCustomPath}"
else
apply_custom_file "${profilePath}" "${profilePath}/chrome/${targetFile}" "${profilePath}/chrome/${customFile}"
fi
done
done
if [ "${customFileApplied}" == "true" ]; then
lepton_ok_message "End custom file applied"
fi
}
#== Install Helpers ============================================================
chromeDuplicate=""
check_chrome_exist() {
if [ -e "chrome" ] && [ ! -f "chrome/${LEPTONINFOFILE}" ]; then
chromeDuplicate="true"
automv chrome chrome.bak
lepton_ok_message "Backup files"
fi
}
check_chrome_restore() {
if [ "${chromeDuplicate}" == "true" ]; then
autorestore chrome
lepton_ok_message "End restore files"
fi
lepton_ok_message "End check restore files"
}
clean_lepton() {
if [ ! "${chromeDuplicate}" == "true" ] && [ -e "chrome" ]; then
rm -rf chrome
fi
lepton_ok_message "End clean files"
}
clone_lepton() {
local branch="$1"
if [ -z "${branch}" ]; then
branch="${leptonBranch}"
fi
git clone -b "${branch}" https://github.com/black7375/Firefox-UI-Fix.git chrome
if ! [ -d "chrome" ]; then
lepton_error_message "Unable to find downloaded files"
fi
}
copy_lepton() {
local chromeDir="$1"
local userJSPath="$2"
if [ -z "${chromeDir}" ]; then
chromeDir="chrome"
fi
if [ -z "${userJSPath}" ]; then
userJSPath="${chromeDir}/user.js"
fi
for profilePath in "${firefoxProfilePaths[@]}"; do
autocp "${userJSPath}" "${profilePath}/user.js"
autocp "${chromeDir}" "${profilePath}/chrome"
done
lepton_ok_message "End profile copy"
}
#== Each Install ===============================================================
install_local() {
copy_lepton "${currentDir}" "user.js"
copy_custom_files
apply_custom_files
}
install_release() {
copy_lepton "chrome" "user.js"
copy_custom_files
apply_custom_files
}
install_network() {
check_chrome_exist
check_git
clone_lepton
copy_lepton
copy_custom_files
clean_lepton
check_chrome_restore
apply_custom_files
}
install_profile() {
lepton_ok_message "Started install"
case "${leptonInstallType}" in
"Local") install_local ;;
"Release") install_release ;;
"Network") install_network ;;
esac
lepton_ok_message "End install"
}
#** Update *********************************************************************
file_stash() {
local leptonDir=$1
local gitDir=$2
if [[ $(git --git-dir "${gitDir}" --work-tree "${leptonDir}" diff --stat) != '' ]]; then
git --git-dir "${gitDir}" --work-tree "${leptonDir}" stash
fi
}
file_restore() {
local leptonDir=$1
local gitDir=$2
local gitDirty=$3
if [ -n "${gitDirty}" ]; then
git --git-dir "${gitDir}" --work-tree "${leptonDir}" stash pop --quiet
fi
}
update_profile() {
check_git
for profileDir in "${firefoxProfileDirPaths[@]}"; do
local LEPTONINFOPATH="${profileDir}/${LEPTONINFOFILE}"
local sections=($(get_ini_section "${LEPTONINFOPATH}"))
if [ ! -z "${sections}" ]; then
for section in "${sections[@]}"; do
local Type=$( get_ini_value "${LEPTONINFOPATH}" "Type" "${section}")
local Branch=$(get_ini_value "${LEPTONINFOPATH}" "Branch" "${section}")
local Path=$( get_ini_value "${LEPTONINFOPATH}" "Path" "${section}")
local leptonDir="${Path}/chrome"
local gitDir="${leptonDir}/.git"
if [ "${Type}" == "Git" ]; then
local gitDirty=$(file_stash "${leptonDir}" "${gitDir}")
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout "${Branch}"
git --git-dir "${gitDir}" --work-tree "${leptonDir}" pull --no-edit
file_restore "${leptonDir}" "${gitDir}" "${gitDirty}"
elif [ "${Type}" == "Local" ] || [ "${Type}" == "Release" ]; then
check_chrome_exist
clone_lepton
firefoxProfilePaths=("${Path}")
copy_lepton
if [ -z "${Branch}" ]; then
Branch="${leptonBranch}"
fi
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout "${Branch}"
if [ "${Type}" == "Release" ]; then
local Ver=$(git --git-dir "${LEPTONINFOFILE}" describe --tags --abbrev=0)
git --git-dir "${gitDir}" --work-tree "${leptonDir}" checkout "tags/${Ver}"
fi
clean_lepton
check_chrome_restore
else
lepton_error_message "Unable to find update type, ${Type} at ${section}"
fi
done
fi
done
apply_custom_files
}
#** Main ***********************************************************************
install_lepton() {
local profileDir=""
local profileName=""
# Get options.
while getopts 'u:f:p:h' flag; do
case "${flag}" in
u) updateMode="true" ;;
f) profileDir="${OPTARG}" ;;
p) profileName="${OPTARG}" ;;
h)
echo "Lepton Theme Install Script:"
echo " -u run to update mode"
echo " -f <firefox_profile_folder_path>. Set custom Firefox profile folder path."
echo " -p <profile_name>. Set custom profile name."
echo " -h to show this message."
exit 0
;;
esac
done
check_install_types
check_profile_dir "${profileDir}"
check_profile_ini
update_profile_paths
write_lepton_info
check_custom_files
# Install Mode
if [ "${updateMode}" == true ]; then
update_profile
else # Install Mode
select_profile "${profileName}"
install_profile
fi
write_lepton_info
}
install_lepton "$@"

View File

@ -16,6 +16,7 @@ user_pref("app.normandy.startupRolloutPrefs.browser.migrate.showBookmarksToolbar
user_pref("app.normandy.startupRolloutPrefs.extensions.formautofill.creditCards.available", true);
user_pref("app.normandy.startupRolloutPrefs.extensions.formautofill.creditCards.enabled", true);
user_pref("app.normandy.startupRolloutPrefs.extensions.formautofill.creditCards.hideui", false);
user_pref("app.normandy.startupRolloutPrefs.extensions.webcompat.disabled_shims.AdvertisingDotCom", true);
user_pref("app.normandy.startupRolloutPrefs.media.videocontrols.picture-in-picture.video-toggle.mode", 2);
user_pref("app.normandy.startupRolloutPrefs.network.http.http2.websockets", false);
user_pref("app.normandy.startupRolloutPrefs.network.http.spdy.websockets", false);
@ -23,16 +24,16 @@ user_pref("app.normandy.startupRolloutPrefs.pdfjs.renderInteractiveForms", true)
user_pref("app.normandy.startupRolloutPrefs.security.bad_cert_domain_error.url_fix_enabled", true);
user_pref("app.normandy.startupRolloutPrefs.security.remote_settings.intermediates.downloads_per_poll", 3000);
user_pref("app.normandy.user_id", "e43b400f-0f20-4ae3-9dfa-ee00b787e18a");
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1665996575);
user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1670092720);
user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1588944333);
user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1666028375);
user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1666017935);
user_pref("app.update.lastUpdateTime.region-update-timer", 1665831226);
user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1666017815);
user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1666017695);
user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1665996455);
user_pref("app.update.lastUpdateTime.telemetry_modules_ping", 1665831346);
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1665996695);
user_pref("app.update.lastUpdateTime.browser-cleanup-thumbnails", 1670142904);
user_pref("app.update.lastUpdateTime.recipe-client-addon-run", 1670084741);
user_pref("app.update.lastUpdateTime.region-update-timer", 1669547801);
user_pref("app.update.lastUpdateTime.rs-experiment-loader-timer", 1670142875);
user_pref("app.update.lastUpdateTime.search-engine-update-timer", 1670084501);
user_pref("app.update.lastUpdateTime.services-settings-poll-changes", 1670092600);
user_pref("app.update.lastUpdateTime.telemetry_modules_ping", 1669547921);
user_pref("app.update.lastUpdateTime.xpi-signature-verification", 1670092480);
user_pref("browser.aboutConfig.showWarning", false);
user_pref("browser.bookmarks.defaultLocation", "Sf1F8MX-syPh");
user_pref("browser.bookmarks.editDialog.confirmationHintShowCount", 3);
@ -53,9 +54,11 @@ user_pref("browser.download.viewableInternally.typeWasRegistered.xml", true);
user_pref("browser.eme.ui.firstContentShown", true);
user_pref("browser.engagement.downloads-button.has-used", true);
user_pref("browser.engagement.home-button.has-used", true);
user_pref("browser.firefox-view.feature-tour", "{\"message\":\"FIREFOX_VIEW_FEATURE_TOUR\",\"screen\":\"\",\"complete\":true}");
user_pref("browser.firefox-view.view-count", 10);
user_pref("browser.laterrun.bookkeeping.profileCreationTime", 1582977688);
user_pref("browser.laterrun.bookkeeping.sessionCount", 51);
user_pref("browser.migration.version", 128);
user_pref("browser.migration.version", 132);
user_pref("browser.newtab.extensionControlled", true);
user_pref("browser.newtab.privateAllowed", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
@ -72,33 +75,32 @@ user_pref("browser.protections_panel.infoMessage.seen", true);
user_pref("browser.proton.enabled", true);
user_pref("browser.proton.places-tooltip.enabled", true);
user_pref("browser.proton.toolbar.version", 3);
user_pref("browser.region.update.updated", 1665831229);
user_pref("browser.region.update.updated", 1669547802);
user_pref("browser.rights.3.shown", true);
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.malware.enabled", false);
user_pref("browser.safebrowsing.phishing.enabled", false);
user_pref("browser.safebrowsing.provider.google4.lastupdatetime", "1654774495409");
user_pref("browser.safebrowsing.provider.google4.nextupdatetime", "1654776285409");
user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1666017554083");
user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1666039154083");
user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "1670142883807");
user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1670164483807");
user_pref("browser.search.region", "CH");
user_pref("browser.search.separatePrivateDefault.urlbarResult.enabled", false);
user_pref("browser.sessionstore.upgradeBackup.latestBuildID", "20211121002925");
user_pref("browser.shell.checkDefaultBrowser", true);
user_pref("browser.shell.mostRecentDateSetAsDefault", "1665995949");
user_pref("browser.shell.mostRecentDateSetAsDefault", "1670142875");
user_pref("browser.slowStartup.averageTime", 614);
user_pref("browser.slowStartup.samples", 2);
user_pref("browser.startup.couldRestoreSession.count", 1);
user_pref("browser.startup.homepage_override.buildID", "20221007233509");
user_pref("browser.startup.homepage_override.mstone", "105.0.3");
user_pref("browser.startup.lastColdStartupCheck", 1665995948);
user_pref("browser.startup.upgradeDialog.version", 100);
user_pref("browser.theme.content-theme", 0);
user_pref("browser.theme.toolbar-theme", 0);
user_pref("browser.startup.homepage_override.buildID", "20221128222455");
user_pref("browser.startup.homepage_override.mstone", "107.0.1");
user_pref("browser.startup.lastColdStartupCheck", 1670142875);
user_pref("browser.startup.upgradeDialog.version", 106);
user_pref("browser.tabs.firefox-view.ui-state.tab-pickup.open", true);
user_pref("browser.toolbars.bookmarks.showOtherBookmarks", false);
user_pref("browser.toolbars.bookmarks.visibility", "always");
user_pref("browser.translation.neverForLanguages", "de");
user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[\"https-everywhere_eff_org-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"cookieautodelete_kennydo_com-browser-action\",\"enhancerforyoutube_maximerf_addons_mozilla_org-browser-action\",\"jid1-ciklkkpvkw6ipw_jetpack-browser-action\",\"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action\",\"sponsorblocker_ajay_app-browser-action\",\"_9a41dee2-b924-4161-a971-7fb35c053a4a_-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"_884679b9-5d6b-48b2-90a7-15ae26ce568a_-browser-action\",\"_f5ffc648-66fb-4aae-bd47-fe9b87b1f408_-browser-action\",\"_6706d386-2d33-4e1e-bbf1-51b9e1ce47e1_-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"addon_fastforward_team-browser-action\",\"contact_nhentaidownloader_zirk_eu-browser-action\",\"_12cf650b-1822-40aa-bff0-996df6948878_-browser-action\",\"search_kagi_com-browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"home-button\",\"customizableui-special-spring1\",\"urlbar-container\",\"customizableui-special-spring2\",\"downloads-button\",\"_73a6fe31-595d-460b-a920-fcc0f8843232_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"keepassxc-browser_keepassxc_org-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"wayback_machine_mozilla_org-browser-action\",\"_529b261b-df0b-4e3b-bf42-07b462da0ee8_-browser-action\",\"_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action\",\"_a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7_-browser-action\",\"_testpilot-containers-browser-action\",\"webtoepub_baka-tsuki_org-browser-action\",\"_c8f79b34-c3ff-4ce4-bdf4-eefa15c87f98_-browser-action\",\"_036a55b4-5e72-4d05-a06c-cba2dfcc134a_-browser-action\",\"adnauseam_rednoise_org-browser-action\",\"clearcache_michel_de_almeida-browser-action\",\"7esoorv3_alefvanoon_anonaddy_me-browser-action\",\"_ad0d925d-88f8-47f1-85ea-8463569e756e_-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"developer-button\",\"enhancerforyoutube_maximerf_addons_mozilla_org-browser-action\",\"cookieautodelete_kennydo_com-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"https-everywhere_eff_org-browser-action\",\"_73a6fe31-595d-460b-a920-fcc0f8843232_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"keepassxc-browser_keepassxc_org-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"_9a41dee2-b924-4161-a971-7fb35c053a4a_-browser-action\",\"jid1-ciklkkpvkw6ipw_jetpack-browser-action\",\"save-to-pocket-button\",\"wayback_machine_mozilla_org-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"sponsorblocker_ajay_app-browser-action\",\"_12cf650b-1822-40aa-bff0-996df6948878_-browser-action\",\"_529b261b-df0b-4e3b-bf42-07b462da0ee8_-browser-action\",\"_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action\",\"_a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7_-browser-action\",\"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action\",\"_testpilot-containers-browser-action\",\"webtoepub_baka-tsuki_org-browser-action\",\"addon_fastforward_team-browser-action\",\"_6706d386-2d33-4e1e-bbf1-51b9e1ce47e1_-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"_884679b9-5d6b-48b2-90a7-15ae26ce568a_-browser-action\",\"_c8f79b34-c3ff-4ce4-bdf4-eefa15c87f98_-browser-action\",\"7esoorv3_alefvanoon_anonaddy_me-browser-action\",\"_f5ffc648-66fb-4aae-bd47-fe9b87b1f408_-browser-action\",\"_036a55b4-5e72-4d05-a06c-cba2dfcc134a_-browser-action\",\"adnauseam_rednoise_org-browser-action\",\"clearcache_michel_de_almeida-browser-action\",\"contact_nhentaidownloader_zirk_eu-browser-action\",\"search_kagi_com-browser-action\",\"_ad0d925d-88f8-47f1-85ea-8463569e756e_-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"PersonalToolbar\",\"widget-overflow-fixed-list\"],\"currentVersion\":17,\"newElementCount\":21}");
user_pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[\"https-everywhere_eff_org-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"cookieautodelete_kennydo_com-browser-action\",\"enhancerforyoutube_maximerf_addons_mozilla_org-browser-action\",\"jid1-ciklkkpvkw6ipw_jetpack-browser-action\",\"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action\",\"sponsorblocker_ajay_app-browser-action\",\"_9a41dee2-b924-4161-a971-7fb35c053a4a_-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"_884679b9-5d6b-48b2-90a7-15ae26ce568a_-browser-action\",\"_f5ffc648-66fb-4aae-bd47-fe9b87b1f408_-browser-action\",\"_6706d386-2d33-4e1e-bbf1-51b9e1ce47e1_-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"addon_fastforward_team-browser-action\",\"contact_nhentaidownloader_zirk_eu-browser-action\",\"_12cf650b-1822-40aa-bff0-996df6948878_-browser-action\",\"search_kagi_com-browser-action\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"home-button\",\"customizableui-special-spring1\",\"urlbar-container\",\"customizableui-special-spring2\",\"downloads-button\",\"_73a6fe31-595d-460b-a920-fcc0f8843232_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"keepassxc-browser_keepassxc_org-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"wayback_machine_mozilla_org-browser-action\",\"_529b261b-df0b-4e3b-bf42-07b462da0ee8_-browser-action\",\"_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action\",\"_a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7_-browser-action\",\"_testpilot-containers-browser-action\",\"webtoepub_baka-tsuki_org-browser-action\",\"_c8f79b34-c3ff-4ce4-bdf4-eefa15c87f98_-browser-action\",\"_036a55b4-5e72-4d05-a06c-cba2dfcc134a_-browser-action\",\"adnauseam_rednoise_org-browser-action\",\"clearcache_michel_de_almeida-browser-action\",\"7esoorv3_alefvanoon_anonaddy_me-browser-action\",\"_ad0d925d-88f8-47f1-85ea-8463569e756e_-browser-action\",\"firefox-translations-addon_mozilla_org-browser-action\"],\"toolbar-menubar\":[\"menubar-items\"],\"TabsToolbar\":[\"firefox-view-button\",\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"PersonalToolbar\":[\"personal-bookmarks\"]},\"seen\":[\"developer-button\",\"enhancerforyoutube_maximerf_addons_mozilla_org-browser-action\",\"cookieautodelete_kennydo_com-browser-action\",\"jid1-mnnxcxisbpnsxq_jetpack-browser-action\",\"https-everywhere_eff_org-browser-action\",\"_73a6fe31-595d-460b-a920-fcc0f8843232_-browser-action\",\"ublock0_raymondhill_net-browser-action\",\"keepassxc-browser_keepassxc_org-browser-action\",\"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action\",\"_9a41dee2-b924-4161-a971-7fb35c053a4a_-browser-action\",\"jid1-ciklkkpvkw6ipw_jetpack-browser-action\",\"save-to-pocket-button\",\"wayback_machine_mozilla_org-browser-action\",\"jid1-kkzogwgsw3ao4q_jetpack-browser-action\",\"languagetool-webextension_languagetool_org-browser-action\",\"sponsorblocker_ajay_app-browser-action\",\"_12cf650b-1822-40aa-bff0-996df6948878_-browser-action\",\"_529b261b-df0b-4e3b-bf42-07b462da0ee8_-browser-action\",\"_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action\",\"_a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7_-browser-action\",\"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action\",\"_testpilot-containers-browser-action\",\"webtoepub_baka-tsuki_org-browser-action\",\"addon_fastforward_team-browser-action\",\"_6706d386-2d33-4e1e-bbf1-51b9e1ce47e1_-browser-action\",\"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action\",\"_884679b9-5d6b-48b2-90a7-15ae26ce568a_-browser-action\",\"_c8f79b34-c3ff-4ce4-bdf4-eefa15c87f98_-browser-action\",\"7esoorv3_alefvanoon_anonaddy_me-browser-action\",\"_f5ffc648-66fb-4aae-bd47-fe9b87b1f408_-browser-action\",\"_036a55b4-5e72-4d05-a06c-cba2dfcc134a_-browser-action\",\"adnauseam_rednoise_org-browser-action\",\"clearcache_michel_de_almeida-browser-action\",\"contact_nhentaidownloader_zirk_eu-browser-action\",\"search_kagi_com-browser-action\",\"_ad0d925d-88f8-47f1-85ea-8463569e756e_-browser-action\",\"firefox-translations-addon_mozilla_org-browser-action\"],\"dirtyAreaCache\":[\"nav-bar\",\"toolbar-menubar\",\"TabsToolbar\",\"PersonalToolbar\",\"widget-overflow-fixed-list\"],\"currentVersion\":18,\"newElementCount\":21}");
user_pref("browser.urlbar.placeholderName.private", "DuckDuckGo");
user_pref("browser.urlbar.quicksuggest.migrationVersion", 2);
user_pref("browser.urlbar.quicksuggest.scenario", "history");
@ -122,17 +124,18 @@ user_pref("devtools.netmonitor.panes-network-details-height", 447);
user_pref("devtools.performance.recording.entries", 134217728);
user_pref("devtools.performance.recording.features", "[\"screenshots\",\"js\",\"cpu\"]");
user_pref("devtools.performance.recording.threads", "[\"GeckoMain\",\"Compositor\",\"Renderer\",\"DOM Worker\"]");
user_pref("devtools.selfxss.count", 3);
user_pref("devtools.selfxss.count", 5);
user_pref("devtools.theme.show-auto-theme-info", false);
user_pref("devtools.toolbox.footer.height", 382);
user_pref("devtools.toolbox.host", "right");
user_pref("devtools.toolbox.previousHost", "bottom");
user_pref("devtools.toolbox.selectedTool", "webconsole");
user_pref("devtools.toolbox.sidebar.width", 664);
user_pref("devtools.toolsidebar-height.inspector", 350);
user_pref("devtools.toolsidebar-height.inspector", 550);
user_pref("devtools.toolsidebar-width.inspector", 700);
user_pref("devtools.toolsidebar-width.inspector.splitsidebar", 250);
user_pref("distribution.archlinux.bookmarksProcessed", true);
user_pref("distribution.iniFile.exists.appversion", "105.0.3");
user_pref("distribution.iniFile.exists.appversion", "107.0.1");
user_pref("distribution.iniFile.exists.value", true);
user_pref("doh-rollout.balrog-migration-done", true);
user_pref("doh-rollout.disable-heuristics", true);
@ -143,19 +146,19 @@ user_pref("dom.push.userAgentID", "ec6c9c3a356340e9b8352e1cb2cb9264");
user_pref("dom.security.https_only_mode", true);
user_pref("dom.security.https_only_mode_ever_enabled", true);
user_pref("dom.storage.next_gen_auto_enabled_by_cause1", true);
user_pref("extensions.activeThemeID", "firefox-compact-dark@mozilla.org");
user_pref("extensions.activeThemeID", "default-theme@mozilla.org");
user_pref("extensions.blocklist.lastModified", "Fri, 28 Feb 2020 19:02:07 GMT");
user_pref("extensions.blocklist.pingCountTotal", 2);
user_pref("extensions.blocklist.pingCountVersion", -1);
user_pref("extensions.databaseSchema", 35);
user_pref("extensions.fxmonitor.enabled", false);
user_pref("extensions.fxmonitor.firstAlertShown", true);
user_pref("extensions.getAddons.cache.lastUpdate", 1665996576);
user_pref("extensions.getAddons.cache.lastUpdate", 1670092721);
user_pref("extensions.getAddons.databaseSchema", 6);
user_pref("extensions.incognito.migrated", true);
user_pref("extensions.lastAppBuildId", "20221007233509");
user_pref("extensions.lastAppVersion", "105.0.3");
user_pref("extensions.lastPlatformVersion", "105.0.3");
user_pref("extensions.lastAppBuildId", "20221128222455");
user_pref("extensions.lastAppVersion", "107.0.1");
user_pref("extensions.lastPlatformVersion", "107.0.1");
user_pref("extensions.pendingOperations", false);
user_pref("extensions.pictureinpicture.enable_picture_in_picture_overrides", true);
user_pref("extensions.reset_default_search.runonce.3", true);
@ -176,7 +179,6 @@ user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.CookieAutoDelet
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.addon@fastforward.team", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.adnauseam@rednoise.org", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.clearcache@michel.de.almeida", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.contact.nhentaidownloader@zirk.eu", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.doh-rollout@mozilla.org", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.enhancerforyoutube@maximerf.addons.mozilla.org", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.firefox-translations-addon@mozilla.org", true);
@ -199,9 +201,8 @@ user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{6706d386-2d33-
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{73a6fe31-595d-460b-a920-fcc0f8843232}", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{884679b9-5d6b-48b2-90a7-15ae26ce568a}", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{ad0d925d-88f8-47f1-85ea-8463569e756e}", true);
user_pref("extensions.webextensions.ExtensionStorageIDB.migrated.{b86e4813-687a-43e6-ab65-0bde4ab75758}", true);
user_pref("extensions.webextensions.uuids", "{\"doh-rollout@mozilla.org\":\"946257eb-c1c3-4490-a34d-f99988aa0ef4\",\"formautofill@mozilla.org\":\"fda477fb-fa39-4a5e-9b39-ad7c2dbc21b6\",\"screenshots@mozilla.org\":\"c3731a22-38f4-4020-b831-748aaf4e885c\",\"webcompat-reporter@mozilla.org\":\"3b0b67d7-a376-4bef-bd35-72667423201c\",\"webcompat@mozilla.org\":\"0a7d9067-bcfe-497e-9a73-d3cdfc35f1ad\",\"default-theme@mozilla.org\":\"75d80d13-a640-4fa4-a9a7-4e40994ecfcb\",\"google@search.mozilla.org\":\"64646f90-cdbd-4953-8645-a938d19d385a\",\"amazondotcom@search.mozilla.org\":\"4e301f5d-d015-48b1-872a-5fe674d37c97\",\"bing@search.mozilla.org\":\"07a4e3d3-08f8-4711-8629-3a9b0c20d065\",\"ddg@search.mozilla.org\":\"ac7e84a4-e12e-4740-a28e-a25b6a2c7732\",\"ebay@search.mozilla.org\":\"fc65b37c-f1ef-4795-9b26-6d2101e7886b\",\"twitter@search.mozilla.org\":\"f4ae5772-f6fc-4f1b-9a3c-06be3e4e6bfc\",\"wikipedia@search.mozilla.org\":\"a40f7749-837a-4ed9-86ca-d94589a888cb\",\"firefox-compact-dark@mozilla.org\":\"d37f1bd5-0d34-4810-89d2-a5d2801d3237\",\"enhancerforyoutube@maximerf.addons.mozilla.org\":\"4db84fe2-753b-47eb-895a-1896e3843a51\",\"CookieAutoDelete@kennydo.com\":\"bc93ebe3-0486-41a9-bff7-5041fc95d7ec\",\"jid1-MnnxcxisBPnSXQ@jetpack\":\"3b66fcbb-2540-49bb-8a59-af7872dd9a27\",\"https-everywhere@eff.org\":\"409abe36-7e59-4334-a9fb-ad95ff8bbc46\",\"{73a6fe31-595d-460b-a920-fcc0f8843232}\":\"43d9308d-3fb6-48da-9ac1-13833f64d5d9\",\"uBlock0@raymondhill.net\":\"22cba72f-3105-445e-9609-10a6e318b49d\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"3e76ff93-a4cc-4e9d-9bdb-40487f4f9d95\",\"firefox-compact-light@mozilla.org\":\"02b120c7-ce82-4969-84ff-50c8aeffb99a\",\"{b743f56d-1cc1-4048-8ba6-f9c2ab7aa54d}\":\"46d076b2-4d1f-4a94-af48-98098bf6d1ed\",\"jid1-CikLKKPVkw6ipw@jetpack\":\"45886005-f608-462e-b99b-09a85dff5346\",\"{1be309c5-3e4f-4b99-927d-bb500eb4fa88}\":\"3ad23b35-5c56-44dd-a4a2-fc52ab5489df\",\"tridactyl.vim@cmcaine.co.uk\":\"b04e0832-b8b7-42ce-a11d-18b8322949a8\",\"jid0-3GUEt1r69sQNSrca5p8kx9Ezc3U@jetpack\":\"9acf76e7-e965-4f68-ad9a-26c86889bfc1\",\"languagetool-webextension@languagetool.org\":\"9e00252e-8da9-45cd-89fc-6761bcc145ff\",\"pictureinpicture@mozilla.org\":\"927666b6-4218-4378-9948-bcf32a9cb065\",\"amazon@search.mozilla.org\":\"bf61dd00-234d-427d-a10a-fa37de8bf4e9\",\"sponsorBlocker@ajay.app\":\"aca61cf3-9cdd-47e7-898d-9122b9619125\",\"wayback_machine@mozilla.org\":\"865e8f8e-1bb3-48ad-8b35-39f7655e5d91\",\"{12cf650b-1822-40aa-bff0-996df6948878}\":\"1b69c98a-d3c5-4923-aa02-5d436481c74d\",\"{529b261b-df0b-4e3b-bf42-07b462da0ee8}\":\"643d8767-295e-430c-bee4-a9de6e5861ea\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\":\"95bf6dcd-2a80-4ff6-a755-db2d898e3dfe\",\"{b86e4813-687a-43e6-ab65-0bde4ab75758}\":\"985239a4-64cc-4bea-8852-c21dcd055c50\",\"reset-search-defaults@mozilla.com\":\"de62a459-bbd3-4a6f-b581-1f8a38bfd755\",\"addons-search-detection@mozilla.com\":\"d3897d76-eea5-4b48-aed4-4bc4862c8764\",\"proxy-failover@mozilla.com\":\"bab72ded-f85b-4973-ac69-9d463c8dfba6\",\"@testpilot-containers\":\"26e1521b-8857-4a2e-b495-122be4670393\",\"WebToEpub@Baka-tsuki.org\":\"3fc3336e-97a0-48ab-b2b1-d726088bff16\",\"addon@fastforward.team\":\"463e561e-87cf-45d7-a51a-66eab00e27fd\",\"{6706d386-2d33-4e1e-bbf1-51b9e1ce47e1}\":\"2073d74a-2468-4f90-b3ba-e661f9071fe3\",\"nhentaidownloader.ext@gmail.com\":\"8be38d5e-e036-41c2-8e05-53ae2ae1969f\",\"{762f9885-5a13-4abd-9c77-433dcd38b8fd}\":\"be15551e-892a-43b4-af53-cc0c3ffa5ace\",\"{884679b9-5d6b-48b2-90a7-15ae26ce568a}\":\"77ebe5d7-43a8-4ab1-aae0-79c5397f5afe\",\"7esoorv3@alefvanoon.anonaddy.me\":\"c7c324fe-cf04-418b-9687-513e6a05c54a\",\"{f5ffc648-66fb-4aae-bd47-fe9b87b1f408}\":\"b07cd034-85f2-4b15-945b-f10c43fe8a48\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\":\"20bb1352-3dca-46a0-a1b1-d167117e0335\",\"adnauseam@rednoise.org\":\"453ec669-6875-4e90-a942-9e1e7849db87\",\"clearcache@michel.de.almeida\":\"3f343c46-9561-4bf6-8e00-d2552db42530\",\"ecosia@search.mozilla.org\":\"5ffdc3f4-e700-4965-ac2d-7b0a31ff52ef\",\"leo_ende_de@search.mozilla.org\":\"7ff62cde-024e-4ab7-b4b1-f14bd35f5675\",\"firefox-translations-addon@mozilla.org\":\"88a0a4ce-fa63-4e89-be5b-814f27b30840\",\"contact.nhentaidownloader@zirk.eu\":\"7127d5f9-e56a-4ef6-b353-895ca364ca0a\",\"search@kagi.com\":\"a8055368-661d-4a6c-b3bf-0638ee0454a2\",\"{ad0d925d-88f8-47f1-85ea-8463569e756e}\":\"2f6db314-96ff-491f-b175-75f7048386de\"}");
user_pref("extensions.webextensions.uuids", "{\"doh-rollout@mozilla.org\":\"946257eb-c1c3-4490-a34d-f99988aa0ef4\",\"formautofill@mozilla.org\":\"fda477fb-fa39-4a5e-9b39-ad7c2dbc21b6\",\"screenshots@mozilla.org\":\"c3731a22-38f4-4020-b831-748aaf4e885c\",\"webcompat-reporter@mozilla.org\":\"3b0b67d7-a376-4bef-bd35-72667423201c\",\"webcompat@mozilla.org\":\"0a7d9067-bcfe-497e-9a73-d3cdfc35f1ad\",\"default-theme@mozilla.org\":\"75d80d13-a640-4fa4-a9a7-4e40994ecfcb\",\"google@search.mozilla.org\":\"64646f90-cdbd-4953-8645-a938d19d385a\",\"amazondotcom@search.mozilla.org\":\"4e301f5d-d015-48b1-872a-5fe674d37c97\",\"bing@search.mozilla.org\":\"07a4e3d3-08f8-4711-8629-3a9b0c20d065\",\"ddg@search.mozilla.org\":\"ac7e84a4-e12e-4740-a28e-a25b6a2c7732\",\"ebay@search.mozilla.org\":\"fc65b37c-f1ef-4795-9b26-6d2101e7886b\",\"twitter@search.mozilla.org\":\"f4ae5772-f6fc-4f1b-9a3c-06be3e4e6bfc\",\"wikipedia@search.mozilla.org\":\"a40f7749-837a-4ed9-86ca-d94589a888cb\",\"firefox-compact-dark@mozilla.org\":\"d37f1bd5-0d34-4810-89d2-a5d2801d3237\",\"enhancerforyoutube@maximerf.addons.mozilla.org\":\"4db84fe2-753b-47eb-895a-1896e3843a51\",\"CookieAutoDelete@kennydo.com\":\"bc93ebe3-0486-41a9-bff7-5041fc95d7ec\",\"jid1-MnnxcxisBPnSXQ@jetpack\":\"3b66fcbb-2540-49bb-8a59-af7872dd9a27\",\"https-everywhere@eff.org\":\"409abe36-7e59-4334-a9fb-ad95ff8bbc46\",\"{73a6fe31-595d-460b-a920-fcc0f8843232}\":\"43d9308d-3fb6-48da-9ac1-13833f64d5d9\",\"uBlock0@raymondhill.net\":\"22cba72f-3105-445e-9609-10a6e318b49d\",\"{446900e4-71c2-419f-a6a7-df9c091e268b}\":\"3e76ff93-a4cc-4e9d-9bdb-40487f4f9d95\",\"firefox-compact-light@mozilla.org\":\"02b120c7-ce82-4969-84ff-50c8aeffb99a\",\"{b743f56d-1cc1-4048-8ba6-f9c2ab7aa54d}\":\"46d076b2-4d1f-4a94-af48-98098bf6d1ed\",\"jid1-CikLKKPVkw6ipw@jetpack\":\"45886005-f608-462e-b99b-09a85dff5346\",\"{1be309c5-3e4f-4b99-927d-bb500eb4fa88}\":\"3ad23b35-5c56-44dd-a4a2-fc52ab5489df\",\"tridactyl.vim@cmcaine.co.uk\":\"b04e0832-b8b7-42ce-a11d-18b8322949a8\",\"jid0-3GUEt1r69sQNSrca5p8kx9Ezc3U@jetpack\":\"9acf76e7-e965-4f68-ad9a-26c86889bfc1\",\"languagetool-webextension@languagetool.org\":\"9e00252e-8da9-45cd-89fc-6761bcc145ff\",\"pictureinpicture@mozilla.org\":\"927666b6-4218-4378-9948-bcf32a9cb065\",\"amazon@search.mozilla.org\":\"bf61dd00-234d-427d-a10a-fa37de8bf4e9\",\"sponsorBlocker@ajay.app\":\"aca61cf3-9cdd-47e7-898d-9122b9619125\",\"wayback_machine@mozilla.org\":\"865e8f8e-1bb3-48ad-8b35-39f7655e5d91\",\"{12cf650b-1822-40aa-bff0-996df6948878}\":\"1b69c98a-d3c5-4923-aa02-5d436481c74d\",\"{529b261b-df0b-4e3b-bf42-07b462da0ee8}\":\"643d8767-295e-430c-bee4-a9de6e5861ea\",\"{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}\":\"95bf6dcd-2a80-4ff6-a755-db2d898e3dfe\",\"{b86e4813-687a-43e6-ab65-0bde4ab75758}\":\"985239a4-64cc-4bea-8852-c21dcd055c50\",\"reset-search-defaults@mozilla.com\":\"de62a459-bbd3-4a6f-b581-1f8a38bfd755\",\"addons-search-detection@mozilla.com\":\"d3897d76-eea5-4b48-aed4-4bc4862c8764\",\"proxy-failover@mozilla.com\":\"bab72ded-f85b-4973-ac69-9d463c8dfba6\",\"@testpilot-containers\":\"26e1521b-8857-4a2e-b495-122be4670393\",\"WebToEpub@Baka-tsuki.org\":\"3fc3336e-97a0-48ab-b2b1-d726088bff16\",\"addon@fastforward.team\":\"463e561e-87cf-45d7-a51a-66eab00e27fd\",\"{6706d386-2d33-4e1e-bbf1-51b9e1ce47e1}\":\"2073d74a-2468-4f90-b3ba-e661f9071fe3\",\"nhentaidownloader.ext@gmail.com\":\"8be38d5e-e036-41c2-8e05-53ae2ae1969f\",\"{762f9885-5a13-4abd-9c77-433dcd38b8fd}\":\"be15551e-892a-43b4-af53-cc0c3ffa5ace\",\"{884679b9-5d6b-48b2-90a7-15ae26ce568a}\":\"77ebe5d7-43a8-4ab1-aae0-79c5397f5afe\",\"7esoorv3@alefvanoon.anonaddy.me\":\"c7c324fe-cf04-418b-9687-513e6a05c54a\",\"{f5ffc648-66fb-4aae-bd47-fe9b87b1f408}\":\"b07cd034-85f2-4b15-945b-f10c43fe8a48\",\"{036a55b4-5e72-4d05-a06c-cba2dfcc134a}\":\"20bb1352-3dca-46a0-a1b1-d167117e0335\",\"adnauseam@rednoise.org\":\"453ec669-6875-4e90-a942-9e1e7849db87\",\"clearcache@michel.de.almeida\":\"3f343c46-9561-4bf6-8e00-d2552db42530\",\"ecosia@search.mozilla.org\":\"5ffdc3f4-e700-4965-ac2d-7b0a31ff52ef\",\"leo_ende_de@search.mozilla.org\":\"7ff62cde-024e-4ab7-b4b1-f14bd35f5675\",\"firefox-translations-addon@mozilla.org\":\"88a0a4ce-fa63-4e89-be5b-814f27b30840\",\"search@kagi.com\":\"a8055368-661d-4a6c-b3bf-0638ee0454a2\",\"playmaker-bold-colorway@mozilla.org\":\"bd83bb7d-8d20-4e7d-8c36-cda4d721de10\",\"expressionist-bold-colorway@mozilla.org\":\"290fc40a-a070-4663-8c18-35c5e45662e9\",\"visionary-bold-colorway@mozilla.org\":\"e7052c6a-7f3c-4372-ba6d-06eb8ffa5e87\",\"activist-bold-colorway@mozilla.org\":\"25e3ceb5-e296-492f-98bc-e71aa38ce5a6\",\"dreamer-bold-colorway@mozilla.org\":\"64f0a852-5ba8-4e1e-968a-48b96937c5a9\",\"innovator-bold-colorway@mozilla.org\":\"7d5acfd4-640f-48e7-9eaa-f6e0fe6a45b8\"}");
user_pref("findbar.highlightAll", true);
user_pref("fission.experiment.max-origins.last-disqualified", 0);
user_pref("fission.experiment.max-origins.last-qualified", 1626291179);
@ -233,11 +234,11 @@ user_pref("general.smoothScroll.scrollbars.durationMinMS", 0);
user_pref("general.smoothScroll.stopDecelerationWeighting", "0.6");
user_pref("gfx.blacklist.webrender.failureid", "FEATURE_FAILURE_DDX_INTEL");
user_pref("identity.fxaccounts.account.device.name", "marcs Firefox on lupusregina");
user_pref("identity.fxaccounts.account.telemetry.sanitized_uid", "7d43bb2e98e00c17c235782ba1e87861");
user_pref("identity.fxaccounts.commands.missed.last_fetch", 1665996046);
user_pref("identity.fxaccounts.account.telemetry.sanitized_uid", "d350307667f63e9014fdea909adeb9f8");
user_pref("identity.fxaccounts.commands.missed.last_fetch", 1670093194);
user_pref("identity.fxaccounts.lastSignedInUserHash", "8BRA9+6sRIqGXRuNxzfOnvsueJGliFd7TfEFww9llO8=");
user_pref("identity.fxaccounts.toolbar.accessed", true);
user_pref("idle.lastDailyNotification", 1665996883);
user_pref("idle.lastDailyNotification", 1670094725);
user_pref("javascript.options.wasm_simd_wormhole", true);
user_pref("layout.css.color-mix.enabled", true);
user_pref("layout.css.has-selector.enabled", true);
@ -246,17 +247,19 @@ user_pref("media.benchmark.vp9.versioncheck", 5);
user_pref("media.eme.enabled", true);
user_pref("media.gmp-gmpopenh264.abi", "x86_64-gcc3");
user_pref("media.gmp-gmpopenh264.lastDownload", 1656608575);
user_pref("media.gmp-gmpopenh264.lastInstallStart", 1656608575);
user_pref("media.gmp-gmpopenh264.lastDownloadFailReason", "Error: Failed downloading via ServiceRequest, status: 0, reason: error");
user_pref("media.gmp-gmpopenh264.lastDownloadFailed", 1667412654);
user_pref("media.gmp-gmpopenh264.lastInstallStart", 1667412654);
user_pref("media.gmp-gmpopenh264.lastUpdate", 1656608575);
user_pref("media.gmp-gmpopenh264.version", "1.8.1.2");
user_pref("media.gmp-manager.buildID", "20221007233509");
user_pref("media.gmp-manager.lastCheck", 1665996724);
user_pref("media.gmp-manager.lastEmptyCheck", 1665996724);
user_pref("media.gmp-manager.buildID", "20221128222455");
user_pref("media.gmp-manager.lastCheck", 1670062661);
user_pref("media.gmp-manager.lastEmptyCheck", 1670062661);
user_pref("media.gmp-widevinecdm.abi", "x86_64-gcc3");
user_pref("media.gmp-widevinecdm.lastDownload", 1665241954);
user_pref("media.gmp-widevinecdm.lastInstallStart", 1665241952);
user_pref("media.gmp-widevinecdm.lastUpdate", 1665241954);
user_pref("media.gmp-widevinecdm.version", "4.10.2449.0");
user_pref("media.gmp-widevinecdm.lastDownload", 1669919207);
user_pref("media.gmp-widevinecdm.lastInstallStart", 1669919205);
user_pref("media.gmp-widevinecdm.lastUpdate", 1669919207);
user_pref("media.gmp-widevinecdm.version", "4.10.2557.0");
user_pref("media.gmp.storage.version.observed", 1);
user_pref("media.peerconnection.enabled", false);
user_pref("media.peerconnection.ice.default_address_only", true);
@ -280,7 +283,7 @@ user_pref("pdfjs.enabledCache.state", true);
user_pref("pdfjs.migrationVersion", 2);
user_pref("pdfjs.previousHandler.alwaysAskBeforeHandling", true);
user_pref("pdfjs.previousHandler.preferredAction", 4);
user_pref("places.database.lastMaintenance", 1665996884);
user_pref("places.database.lastMaintenance", 1670094725);
user_pref("places.history.expiration.transient_current_max_pages", 112348);
user_pref("pref.general.disable_button.default_browser", false);
user_pref("pref.privacy.disable_button.cookie_exceptions", false);
@ -366,51 +369,52 @@ user_pref("services.blocklist.addons.checked", 1591867368);
user_pref("services.blocklist.gfx.checked", 1654758333);
user_pref("services.blocklist.pinning.checked", 1591805812);
user_pref("services.blocklist.plugins.checked", 1591867368);
user_pref("services.settings.blocklists.addons-bloomfilters.last_check", 1666011863);
user_pref("services.settings.blocklists.gfx.last_check", 1666011863);
user_pref("services.settings.blocklists.addons-bloomfilters.last_check", 1670142877);
user_pref("services.settings.blocklists.gfx.last_check", 1670142877);
user_pref("services.settings.clock_skew_seconds", 0);
user_pref("services.settings.last_etag", "\"1666022930482\"");
user_pref("services.settings.last_update_seconds", 1666023272);
user_pref("services.settings.main.addons-manager-settings.last_check", 1666011863);
user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1666011863);
user_pref("services.settings.last_etag", "\"1670122633854\"");
user_pref("services.settings.last_update_seconds", 1670142877);
user_pref("services.settings.main.addons-manager-settings.last_check", 1670142877);
user_pref("services.settings.main.anti-tracking-url-decoration.last_check", 1670142877);
user_pref("services.settings.main.cfr-fxa.last_check", 1629621510);
user_pref("services.settings.main.cfr.last_check", 1666011863);
user_pref("services.settings.main.devtools-compatibility-browsers.last_check", 1666011863);
user_pref("services.settings.main.devtools-devices.last_check", 1666011863);
user_pref("services.settings.main.doh-config.last_check", 1666011863);
user_pref("services.settings.main.doh-providers.last_check", 1666011863);
user_pref("services.settings.main.fxmonitor-breaches.last_check", 1666011863);
user_pref("services.settings.main.hijack-blocklists.last_check", 1666011863);
user_pref("services.settings.main.language-dictionaries.last_check", 1666011863);
user_pref("services.settings.main.message-groups.last_check", 1666011863);
user_pref("services.settings.main.cfr.last_check", 1670142877);
user_pref("services.settings.main.devtools-compatibility-browsers.last_check", 1670142877);
user_pref("services.settings.main.devtools-devices.last_check", 1670142877);
user_pref("services.settings.main.doh-config.last_check", 1670142877);
user_pref("services.settings.main.doh-providers.last_check", 1670142877);
user_pref("services.settings.main.fxmonitor-breaches.last_check", 1670142877);
user_pref("services.settings.main.hijack-blocklists.last_check", 1670142877);
user_pref("services.settings.main.language-dictionaries.last_check", 1670142877);
user_pref("services.settings.main.message-groups.last_check", 1670142877);
user_pref("services.settings.main.messaging-experiments.last_check", 1591867368);
user_pref("services.settings.main.nimbus-desktop-defaults.last_check", 1666011863);
user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1666023272);
user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1666011863);
user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1666011863);
user_pref("services.settings.main.password-recipes.last_check", 1666011863);
user_pref("services.settings.main.password-rules.last_check", 1666011863);
user_pref("services.settings.main.personality-provider-models.last_check", 1666011863);
user_pref("services.settings.main.personality-provider-recipe.last_check", 1666011863);
user_pref("services.settings.main.pioneer-study-addons-v1.last_check", 1666011863);
user_pref("services.settings.main.pioneer-study-addons.last_check", 1666011863);
user_pref("services.settings.main.public-suffix-list.last_check", 1666011863);
user_pref("services.settings.main.query-stripping.last_check", 1666011863);
user_pref("services.settings.main.search-config.last_check", 1666011863);
user_pref("services.settings.main.search-default-override-allowlist.last_check", 1666011863);
user_pref("services.settings.main.search-telemetry-v2.last_check", 1666011863);
user_pref("services.settings.main.search-telemetry.last_check", 1666011863);
user_pref("services.settings.main.sites-classification.last_check", 1666011863);
user_pref("services.settings.main.tippytop.last_check", 1666011863);
user_pref("services.settings.main.top-sites.last_check", 1666011863);
user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1666011863);
user_pref("services.settings.main.websites-with-shared-credential-backends.last_check", 1666011863);
user_pref("services.settings.main.whats-new-panel.last_check", 1666011863);
user_pref("services.settings.security-state.cert-revocations.last_check", 1666011863);
user_pref("services.settings.security-state.intermediates.last_check", 1666011863);
user_pref("services.settings.security-state.onecrl.last_check", 1666011863);
user_pref("services.settings.main.ms-images.last_check", 1670142877);
user_pref("services.settings.main.nimbus-desktop-defaults.last_check", 1670142877);
user_pref("services.settings.main.nimbus-desktop-experiments.last_check", 1670142877);
user_pref("services.settings.main.normandy-recipes-capabilities.last_check", 1670142877);
user_pref("services.settings.main.partitioning-exempt-urls.last_check", 1670142877);
user_pref("services.settings.main.password-recipes.last_check", 1670142877);
user_pref("services.settings.main.password-rules.last_check", 1670142877);
user_pref("services.settings.main.personality-provider-models.last_check", 1670142877);
user_pref("services.settings.main.personality-provider-recipe.last_check", 1670142877);
user_pref("services.settings.main.pioneer-study-addons-v1.last_check", 1670142877);
user_pref("services.settings.main.pioneer-study-addons.last_check", 1670142877);
user_pref("services.settings.main.public-suffix-list.last_check", 1670142877);
user_pref("services.settings.main.query-stripping.last_check", 1670142877);
user_pref("services.settings.main.search-config.last_check", 1670142877);
user_pref("services.settings.main.search-default-override-allowlist.last_check", 1670142877);
user_pref("services.settings.main.search-telemetry-v2.last_check", 1670142877);
user_pref("services.settings.main.search-telemetry.last_check", 1670142877);
user_pref("services.settings.main.sites-classification.last_check", 1670142877);
user_pref("services.settings.main.tippytop.last_check", 1670142877);
user_pref("services.settings.main.top-sites.last_check", 1670142877);
user_pref("services.settings.main.url-classifier-skip-urls.last_check", 1670142877);
user_pref("services.settings.main.websites-with-shared-credential-backends.last_check", 1670142877);
user_pref("services.settings.main.whats-new-panel.last_check", 1670142877);
user_pref("services.settings.security-state.cert-revocations.last_check", 1670079776);
user_pref("services.settings.security-state.intermediates.last_check", 1670079776);
user_pref("services.settings.security-state.onecrl.last_check", 1670079776);
user_pref("services.settings.security.onecrl.checked", 1654758333);
user_pref("services.sync.addons.lastSync", "1664993052.83");
user_pref("services.sync.addons.lastSync", "1669360924.79");
user_pref("services.sync.addons.syncID", "L7k31iPXEMk6");
user_pref("services.sync.bookmarks.lastSync", "1591894790.66");
user_pref("services.sync.bookmarks.syncID", "3C9StXXGztPe");
@ -418,8 +422,8 @@ user_pref("services.sync.client.GUID", "-S_pn8VT4ZCp");
user_pref("services.sync.client.syncID", "MtJM9DyW2j2m");
user_pref("services.sync.clients.devices.desktop", 2);
user_pref("services.sync.clients.devices.mobile", 1);
user_pref("services.sync.clients.lastRecordUpload", 1665995955);
user_pref("services.sync.clients.lastSync", "1666027368.11");
user_pref("services.sync.clients.lastRecordUpload", 1670142880);
user_pref("services.sync.clients.lastSync", "1670142880.57");
user_pref("services.sync.clients.syncID", "-UKRQIkr1Rru");
user_pref("services.sync.creditcards.lastSync", "0");
user_pref("services.sync.creditcards.syncID", "yp8F-l4YaopB");
@ -434,13 +438,14 @@ user_pref("services.sync.extension-storage.lastSync", "0");
user_pref("services.sync.forms.lastSync", "0");
user_pref("services.sync.globalScore", 0);
user_pref("services.sync.history.lastSync", "0");
user_pref("services.sync.lastPing", 1665995954);
user_pref("services.sync.lastSync", "Mon Oct 17 2022 19:44:33 GMT+0200 (Central European Summer Time)");
user_pref("services.sync.lastPing", 1670093193);
user_pref("services.sync.lastSync", "Sun Dec 04 2022 09:34:41 GMT+0100 (Central European Standard Time)");
user_pref("services.sync.lastTabFetch", 1586120826);
user_pref("services.sync.nextSync", 0);
user_pref("services.sync.passwords.syncID", "-WeMPm6W3NJC");
user_pref("services.sync.prefs.lastSync", "1665241943.00");
user_pref("services.sync.prefs.lastSync", "1669710933.94");
user_pref("services.sync.prefs.sync-seen.browser.contentblocking.category", true);
user_pref("services.sync.prefs.sync-seen.browser.firefox-view.feature-tour", true);
user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.feeds.section.topstories", true);
user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.feeds.topsites", true);
user_pref("services.sync.prefs.sync-seen.browser.newtabpage.activity-stream.section.highlights.includePocket", true);
@ -468,13 +473,13 @@ user_pref("services.sync.username", "mrcfrm01@protonmail.com");
user_pref("signon.importedFromSqlite", true);
user_pref("signon.rememberSignons", false);
user_pref("storage.vacuum.last.index", 1);
user_pref("storage.vacuum.last.places.sqlite", 1664016696);
user_pref("storage.vacuum.last.places.sqlite", 1669316476);
user_pref("svg.context-properties.content.enabled", true);
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("toolkit.scrollbox.horizontalScrollDistance", 4);
user_pref("toolkit.startup.last_success", 1665995942);
user_pref("toolkit.startup.last_success", 1670142873);
user_pref("toolkit.telemetry.cachedClientID", "27215ebf-b618-4b9c-bd32-ceb6347e229a");
user_pref("toolkit.telemetry.previousBuildID", "20221007233509");
user_pref("toolkit.telemetry.previousBuildID", "20221128222455");
user_pref("toolkit.telemetry.reportingpolicy.firstRun", false);
user_pref("trailhead.firstrun.didSeeAboutWelcome", true);
user_pref("userChrome.compatibility.os", true);
@ -514,6 +519,7 @@ user_pref("userChrome.tab.color_like_toolbar", true);
user_pref("userChrome.tab.connect_to_window", true);
user_pref("userChrome.tab.container", true);
user_pref("userChrome.tab.crashed", true);
user_pref("userChrome.tab.dynamic_separator", false);
user_pref("userChrome.tab.dynamic_separtor", false);
user_pref("userChrome.tab.lepton_like_padding", false);
user_pref("userChrome.tab.letters_cleary", true);

View File

@ -5,9 +5,6 @@ user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
// Proton Enabled #127 || Removed at 97 #328 (Maintained for compatibility with ESR)
user_pref("browser.proton.enabled", true);
// Proton Tooltip
user_pref("browser.proton.places-tooltip.enabled", true);
// Fill SVG Color
user_pref("svg.context-properties.content.enabled", true);
@ -49,7 +46,6 @@ user_pref("userChrome.tab.newtab_button_proton", false); // Proton
user_pref("userChrome.icon.panel_full", false); // Original, Proton
user_pref("userChrome.icon.panel_photon", true); // Photon
user_pref("userChrome.icon.panel_sparse", false); // Just option
// Original Only
user_pref("userChrome.tab.box_shadow", false);