# OpenAsar
**An experimental open-source alternative of Discord desktop's `app.asar`**.
## Features
### :rocket: Speed: ~2x faster startup times (up to ~4x with experimental config)
### :feather: Lightweight: <2% of Discord's original size (9mb -> ~150kb)
### :electric_plug: Hotpluggable: Replace one file and it's installed, that's it
### :shield: No Tracking: Removes Discord's built-in tracking for crashes and errors
### :sewing_needle: Patching: A future platform for custom patches to further enhance
## To Be Implemented
Below is a list in order of priority, removed when completed:
- [ ] A bunch of specific minor fixes / features
- [ ] Add Discord-specific Electron flags?
- [ ] Auto start
- [ ] First run
- [ ] Self-write some small parts of internals
- [ ] Self-write updater code (currently mostly copied)
- [ ] Compatibility / replication of original Discord splash?
## Custom Patches / Changes
Custom patches are another main goal of OpenAsar, patching enhancements where otherwise impossible to do so with traditional mods. Our current ideas for patches to do:
- [X] Rewrite portions of Discord's code to not rely on external dependencies, increasing speed and decreasing size
- [X] Skipping checking for updates on startup
- [ ] Linux host app updating
## Install Guide
**OpenAsar is heavily disrecommened due to it being in early development.**
1. [Download latest nightly release](https://github.com/GooseMod/OpenAsar/releases/download/nightly/app.asar)
4. Backup your original `app.asar` (rename to `app.asar.backup` / etc)
5. Install OpenAsar `app.asar` into the original path
**If using Linux it is highly recommended to disable write protection** (needing root to overwrite files) for your Discord install if you have it enabled. It is not much of a security defecit as Windows has no write protection as well. This enables updating the asar and potentially host updating further on.
## Config
You can configure OpenAsar via `settings.json` (found in your Discord app data / user data), under a `openasar` object. Keep in mind most options are defaults for good reason, they may temporarily brick your client until you revert your changes. The avaliable options are:
- `quickstart` (bool, default false) - whether to use Quickstart (experimental)
- `skipStartupUpdateChecks` (bool, default false) - skips startup update checking (Linux-only)
- `autoupdate` (bool, default true) - whether to autoupdate OpenAsar after Discord startup
- `multiInstance` (bool, default false) - whether to enable multi-instance
An example of a settings.json with OpenAsar config:
```json
{
"BACKGROUND_COLOR": "#202225",
"IS_MAXIMIZED": false,
"IS_MINIMIZED": false,
"WINDOW_BOUNDS": {
"x": 801,
"y": 22,
"width": 797,
"height": 876
},
"MINIMIZE_TO_TRAY": false,
"OPEN_ON_STARTUP": false,
"openasar": {
"quickstart": true
}
}
```