# LBRY App This is a graphical browser for the decentralized content marketplace provided by the [LBRY](https://lbry.io) protocol. It is essentially the [lbry daemon](https://github.com/lbryio/lbry) bundled with a UI using [Electron](http://electron.atom.io/). ![App Screenshot](https://lbry.io/img/lbry-ui.png) ## Installing We provide installers for Windows, macOS, and Debian-based Linux. | | Windows | macOS | Linux | | --- | --- | --- | --- | | Latest Stable Release | [Download](https://lbry.io/get/lbry.exe) | [Download](https://lbry.io/get/lbry.dmg) | [Download](https://lbry.io/get/lbry.deb) | | Latest Prerelease | [Download](https://lbry.io/get/lbry.pre.exe) | [Download](https://lbry.io/get/lbry.pre.dmg) | [Download](https://lbry.io/get/lbry.pre.deb) | Our [releases page](https://github.com/lbryio/lbry-app/releases/latest) also contains the latest release, pre-releases, and past builds. To install from source or make changes to the application, continue reading below. ## Development on Linux and macOS ### One-time Setup 1. Clone this repo 2. `DEPS=true ./build.sh` This will download and install the LBRY app and its dependencies, including [the LBRY daemon](https://github.com/lbryio/lbry) and command line utilities like `node` and `yarn`. The LBRY app requires Node >= 6; if you have an earlier version of Node installed and want to keep it, you can use [nvm](https://github.com/creationix/nvm) to switch back and forth. ### Running Run `./node_modules/.bin/electron src/main` ### Ongoing Development 1. `cd src/renderer` 2. `./watch.sh` This will set up a monitor that will automatically compile any changes to JS or CSS folders inside of the `src/renderer` folder. This allows you to make changes and see them immediately by reloading the app. ### Packaging We use [electron-builder](https://github.com/electron-userland/electron-builder) to create distributable packages, which is run by calling: `node_modules/.bin/build -p never` ## Development on Windows ### Windows Dependency 1. Download and install `git` from github.io (configure to use command prompt integration) 2. Download and install `npm` and `node` from nodejs.org 3. Download and install `python 2.7` from python.org 4. Download and Install `Microsoft Visual C++ Compiler for Python 2.7` from Microsoft 5. Download and install `.NET Framework 2.0 Software Development Kit (SDK) (x64)` from Microsoft (may need to extract setup.exe and install manually by running install.exe as Administrator) ### One-time Setup 1. Open command prompt as adminstrator and run the following: ``` npm install --global --production windows-build-tools exit ``` 2. Open command prompt in the root of the project and run the following: ``` python -m pip install -r build\requirements.txt npm install -g yarn yarn install ``` 3. Change directory to `src\main` and run the following: ``` yarn install node_modules\.bin\electron-rebuild node_modules\.bin\electron-rebuild cd ..\.. ``` 4. Change directory to `src\renderer` and run the following: ``` yarn install npm rebuild node-sass node node_modules\node-sass\bin\node-sass --output dist\css --sourcemap=none scss\ node_modules\.bin\webpack --config webpack.dev.config.js xcopy /E dist ..\main\dist cd ..\.. ``` 4. Download the lbry daemon and cli [binaries](https://github.com/lbryio/lbry/releases) and place them in `src\main\dist\` ### Building lbry-app 1. run `node_modules\.bin\build -p never` from the root of the project. ### Running the electron app 1. Run `node_modules\.bin\electron src\main` ### Ongoing Development 1. `cd src\renderer` 2. `watch.bat` This will set up a monitor that will automatically compile any changes to JS or CSS folders inside of the `src\renderer` folder. This allows you to make changes and see them immediately by reloading the app. ## Internationalization If you want to help translating the lbry-app, you can copy the en.json file in /src/main/locales and modify the values while leaving the keys as their original English strings. An example for this would be: `"Skip": "Überspringen",` Translations should automatically show up in options.