# node-native-ui A cross platform library to build native desktop apps. Based on Qt5. Mac screenshots: ![mac](https://github.com/master-atul/node-native-ui/raw/master/screens/mac_dark_mode.png "Mac OS Dark screenshot") ![mac](https://github.com/master-atul/node-native-ui/raw/master/screens/mac_light_mode.png "Mac OS Light screenshot") Linux and Windows screenshots to be added soon. ## Features - [x] Cross platform. Should work on major Linux flavours, Windows and MacOS - [x] Low CPU and memory footprint. Current CPU stays at 0% on idle and memory usage is under 20mb for a hello world program. - [ ] (Partial support is present) Easily exstensible for creating custom native widgets (like react native). - [x] Support for flex box layouting using Yoga. - [x] Supports styling using css (includes actual cascading) or atleast useful subset of css properties. - [x] Complete Nodejs api support (Currently runs on Node v12 - and is easily upgradable). - [x] Can use all node compatible npm modules. - [ ] Native widget event listener support. - [x] Should be usable for commercial applications aswell. - [ ] (Partial) Should have a decent list of stylable native widgets. - [ ] Easy build and packaging process. - [ ] Good Devtools support (hot reload, live reload, debugging etc). - [ ] Good documentation and website. - [ ] Good documentation for contributors. - [x] Good support for dark mode (Thanks to QT). - [x] Typescript support ## Development setup and getting started This guide is for setting up `node-native-ui` for contributors of node-native-ui. The actual getting started guide for users will be added once we reach a bit of stable level. Make sure you have setup `qode` and installed it globally. ### MacOSX: **Requirements** 1. Node version: > 9 2. Python and gcc 3. Make sure you dont have spaces inside your home path. NodeGYP has issues with spaces in the path. https://github.com/nodejs/node-gyp/issues/209 **Setting up** 1. Install latest version of Qt (5.12) via homebrew only. ``` brew install qt5 ``` ### Windows: **Requirements** 1. Node version: > 9 2. Python and MSVC++ **Setting up** -- Instructions will be added soon -- ### Linux: **Requirements** 1. Node version: > 9 2. Python, Make, GCC, pkg-config and Qt5
On Ubuntu: `$ sudo apt-get install pkg-config build-essentials` should install everything except Qt5. **Setting up** 1. Make sure you have downloaded and installed Qt5 sdk. 2. Before running `yard build`, do `export PKG_CONFIG_PATH="/5.11.0/gcc_64/lib/pkgconfig"` ### Common: 1. Once you have setup the platform specific stuff as mentioned above, follow these: 2. `git clone` this repo. 3. Keep note of the install directory of qt. You should probably find it at `/usr/local/Cellar/qt/5.12.1`. Copy this path and edit the file `config/common.gypi`.
Change the field ``` 'qt_home_dir': '