# Project Structure **Table of Contents** - [Basics](#basics) - [Icon files](#icon-files) - [Install Scripts](#install-scripts) * [Meta Info files](#meta-info-files) * [Overriding](#overriding) ## Basics The overall structure of this project. ``` root |- __tests__/: Mixin spec test |- icons/: Icons, illustrations |- css/: Build result of SCSS Files |- docs/: Development Documents |- src/: Source files |- src/leptonChrome.scss: Entry of SCSS for Browser UI |- src/leptonContent.scss: Entry of SCSS for Web pages |- .gitattributes: Exclude at `Download Zip` |- .github: Issue/PR Template, Github Actions |- .prettierignore: Exclude coding style |- .prettierrc.json: Coding style |- install.ps1: Install script write in powersehll |- install.sh: Install script write in bash |- package.json: Build setup, package dependency |- LEPTON: Meta infos (branch, version) |- user.js: about:config settings |- userChrome.css: Entry of css for Browser UI (Don't modify directly!!) |- userContent.css: Entry of css for Web pages (Don't modify directly!!) |- yarn.lock: Auto generated dependency (Don't modify directly!!) ``` ## Icon files Most of them are made in SVG. Except for illustrations, there must be an `fill="context-fill" fill-opacity="context-fill-opacity"` property to dynamically determine color and transparency. Icons are mainly [FirefoxUX/photon-icons](https://github.com/FirefoxUX/photon-icons) or [microsoft/fluentui-system-icons](https://github.com/microsoft/fluentui-system-icons). Although not yet used, [tabler/tabler-icons](https://github.com/tabler/tabler-icons) and [feathericons/feather](https://github.com/feathericons/feather) can also be referred to. You can see more in the issue, [Unify icon design langauge #213](https://github.com/black7375/Firefox-UI-Fix/issues/213). ## Install Scripts ### Meta Info files It comes from [install.sh](https://github.com/black7375/Firefox-UI-Fix/blob/01ae88bf2c4710e1f364d9eb2901ca2b722cefe7/install.sh#L442). **`LEPTON` file format** If this file exist in same directory as the `userChrome.css` file, it is recognized as the "Lepton" installation directory. ```ini [Info] Branch=master | photon-style | proton-style Ver= | | [NULL] ``` **`lepton.ini` file Format** In `lepton.ini`, various information is stored during the installation process.\ This file is recreated every time the installer is created. ```ini [Profile Name] Type=Local | Release | Git Branch=master | photon-style | proton-style Ver= | | [NULL] Path= ``` **Update Policy according to `Type`** - Local(unknown): force latest commit update - Release(): force latest tag update - Git: latest commit update ## Overriding Inspired by [arkenfox](https://github.com/arkenfox/user.js/wiki/3.1-Overrides). These files need to use a shell script and has some priorities. CSS override settings(`userChrome-overrides.css`, `userContent-overrides.css`) are relatively simple. - `./` (Will be copied `/chrome/`) - `/chrome/` `user-overrides.js` needs to use a shell script and has some priorities. - `/user-overrides.js` - `./user-overrides.js` (Will be copied `/chrome/`) - `/chrome/user-overrides.js`