UNPKG

5.87 kBMarkdownView Raw
1# Nativefier
2
3[![Build Status](https://travis-ci.org/jiahaog/nativefier.svg?branch=development)](https://travis-ci.org/jiahaog/nativefier)
4[![Code Climate](https://codeclimate.com/github/jiahaog/nativefier/badges/gpa.svg)](https://codeclimate.com/github/jiahaog/nativefier)
5[![npm version](https://badge.fury.io/js/nativefier.svg)](https://www.npmjs.com/package/nativefier)
6[![Dependency Status](https://david-dm.org/jiahaog/nativefier.svg)](https://david-dm.org/jiahaog/nativefier)
7
8![Dock](screenshots/dock.png)
9
10You want to make a native wrapper for WhatsApp Web (or any web page).
11
12```bash
13nativefier web.whatsapp.com
14```
15
16![Walkthrough](screenshots/walkthrough.gif)
17
18You're done.
19
20## Table of Contents
21
22 - [Installation](#installation)
23 - [Usage](#usage)
24 - [Optional dependencies](#optional-dependencies)
25 - [How it works](#how-it-works)
26 - [Development](docs/development.md)
27 - [License](#license)
28
29## Introduction
30
31Nativefier is a command-line tool to easily create a desktop application for any web site with succinct and minimal configuration. Apps are wrapped by [Electron](http://electron.atom.io) in an OS executable (`.app`, `.exe`, etc.) for use on Windows, macOS and Linux.
32
33I did this because I was tired of having to `⌘-tab` or `alt-tab` to my browser and then search through the numerous open tabs when I was using [Facebook Messenger](http://messenger.com) or [Whatsapp Web](http://web.whatsapp.com) ([relevant Hacker News thread](https://news.ycombinator.com/item?id=10930718)).
34
35[Changelog](https://github.com/jiahaog/nativefier/blob/master/docs/changelog.md). [Developer docs](https://github.com/jiahaog/nativefier/blob/master/docs/development.md).
36
37### Features
38
39- Automatically retrieves the correct icon and app name.
40- JavaScript and CSS injection.
41- Flash Support (with [`--flash`](docs/api.md#flash) flag).
42- Many more, see the [API docs](docs/api.md) or `nativefier --help`
43
44## Installation
45
46### Requirements
47
48- macOS 10.9+ / Windows / Linux
49- [Node.js](https://nodejs.org/) `>=6` (4.x may work but is no longer tested, please upgrade)
50- See [optional dependencies](#optional-dependencies) for more.
51
52```bash
53npm install nativefier -g
54```
55
56## Usage
57
58Creating a native desktop app for [medium.com](http://medium.com):
59
60```bash
61nativefier "http://medium.com"
62```
63
64Nativefier will intelligently attempt to determine the app name, your OS and processor architecture, among other options. If desired, the app name or other options can be overwritten by specifying the `--name "Medium"` as part of the command line options:
65
66```bash
67nativefier --name "Some Awesome App" "http://medium.com"
68```
69Read the [API documentation](docs/api.md) (or `nativefier --help`) for other command line flags and options that can be used to configure the packaged app.
70
71If you would like high resolution icons to be used, please contribute to the [icon repository](https://github.com/jiahaog/nativefier-icons)!
72
73**Windows Users:** Take note that the application menu is automatically hidden by default, you can press `alt` on your keyboard to access it.
74
75**Linux Users:** Do not put spaces if you define the app name yourself with `--name`, as this will cause problems when pinning a packaged app to the launcher.
76
77## Optional dependencies
78
79### Icons for Windows apps packaged under non-Windows platforms
80
81You need [Wine](https://www.winehq.org/) installed; make sure that `wine` is in your `$PATH`.
82
83### Icon conversion for macOS
84
85To support conversion of a `.png` or `.ico` into a `.icns` for a packaged macOS app icon (currently only supported on macOS), you need the following dependencies.
86
87* [iconutil](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html) (comes with [Xcode](https://developer.apple.com/xcode/)).
88* [imagemagick](http://www.imagemagick.org/script/index.php). Make sure `convert` and `identify` are in your `$PATH`.
89* If the tools are not found, then Nativefier will fall back to the built-in macOS tool `sips` to perform the conversion, which is more limited.
90
91### Flash
92
93[Google Chrome](https://www.google.com/chrome/) is required for flash to be supported; you should pass the path to its embedded Flash plugin to the `--flash` flag. See the [API docs](docs/api.md) for more details.
94
95## How it works
96
97A template app with the appropriate plumbing is included in the `./app` folder. When `nativefier` is run, this template is parameterized, and packaged using [Electron Packager](https://github.com/electron-userland/electron-packager).
98
99In addition, I built [GitCloud](https://github.com/jiahaog/gitcloud) to use GitHub as an icon index, and also the [pageIcon](https://github.com/jiahaog/page-icon) fallback to infer a relevant icon from a URL.
100
101## Development
102
103Help welcome on [bugs](https://github.com/jiahaog/nativefier/issues?q=is%3Aissue+label%3Abug) and [feature requests](https://github.com/jiahaog/nativefier/issues?q=is%3Aissue+label%3A%22feature+request%22)!
104
105Get started with our docs: [Development](docs/development.md), [API](docs/api.md).
106
107## Docker Image
108
109The [Dockerfile](Dockerfile) is designed to be used like the "normal" nativefier app. By default, the command `nativefier --help` will be executed. Before you can use the image, you have to build it:
110
111 docker build -t local/nativefier .
112
113After that, you can build your first nativefier app to the local `$TARGET-PATH`. Ensure you have write access to the `$TARGET-PATH`:
114
115 docker run -v $TARGET-PATH:/target local/nativefier https://my-web-app.com/ /target/
116
117You can also pass nativefier flags, and mount additional volumes to provide local files. For example, to use a icon:
118
119 docker run -v $PATH_TO_ICON/:/src -v $TARGET-PATH:/target local/nativefier --icon /src/icon.png --name whatsApp -p linux -a x64 https://my-web-app.com/ /target/
120
121## License
122
123[MIT](LICENSE.md)