MirrorOS
MirrorOS is a lightweight user interface designed specifically for Magic Mirrors and transparent glass touch screens. The UI is built on NodeJS, React and Electron.
Video Demo
Automatic installer
Coming Soon.
Manual Installation
Please be aware that MirrorOS is currently at the "proof of concept" stage. Almost all features are broken/in an early stage. If you still wan to try the software, please follow this tutorial How to Install on a Raspberry Pi
- Note: requires a node version >= 7 and an npm version >= 4.
- If you have installation or compilation issues with this project, please see our debugging guide
First, clone the repo via git:
$ git clone --depth=1 https://github.com/wassgha/MirrorOS.git MirrorOS
And then install dependencies with yarn.
$ cd MirrorOS
$ yarn
Note: If you can't use yarn for some reason, try npm install
.
Run
To deploy the app and run it in production mode, simply use:
$ npm start
Features
Current features
- Face Recognition and Smile detection for logging-in to the Mirror
- Constant monitoring of user presence through face detection
- Home UI almost done, with clock, date and weather
- Draggable placeholder widgets
- Almost ready app launcher
- Leap Motion Support to substitute touch screens (using Leap Motion Touch Screen)
To implement
- Support for apps, widgets and extentions
- Providing an API for developers to extend the UI
- Communication with nearby devices (getting notification from phone, connecting to bluetooth speakers)
- Support for Air Play and other video streaming platforms to display content on the Magic Mirror/Display
- Alexa integration
- User accounts and face training
- Live selfie filters app (filter overlay on mirror)
- Uber/Lyft integration
- News app
- Live TV widget
- Smart home widget (Nest & co integration)
- OTA updates
Development
Start the app in the dev
environment. This starts the renderer process in hot-module-replacement mode and starts a server that sends hot updates to the renderer process:
$ npm run dev
Editor Configuration
Atom
apm install editorconfig es6-javascript atom-ternjs javascript-snippets linter linter-eslint language-babel autocomplete-modules file-icons
VSCode
- Editorconfig
- ESLint
- Flow
- Babel
- Jest
- ES6 Snippets
- React Snippets
💡 If you are using the
flow-for-vscode
plugin, make sure to disable theflowtype-errors/show-errors
eslint rule in the.eslintrc
by setting it to0
Sublime
- Editorconfig Integration
- Linting
- ESLint Integration
- Syntax Highlighting
- Autocompletion
- Node Snippets
- ES6 Snippets
Others
- Editorconfig
- ESLint
- Babel Syntax Plugin
DevTools
- OS X: Cmd Alt I or F12
- Linux: Ctrl Shift I or F12
- Windows: Ctrl Shift I or F12
See electron-debug for more information.
How to write your own MirrorOS widget
Will be updated soon with a complete guide.
Note: Class names and IDs starting with os
and os-
are reserved for the
internal use of the MirrorOS runtime.
Maintainers
License
Non-commercial, private and educational use only except by written authorization.