12
README.md
12
README.md
@@ -7,7 +7,7 @@
|
||||
<br>
|
||||
</h1>
|
||||
|
||||
<h4 align="center">The streaming torrent client. For OS X, Windows, and Linux.</h4>
|
||||
<h4 align="center">The streaming torrent client. For Mac, Windows, and Linux.</h4>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gitter.im/feross/webtorrent"><img src="https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg" alt="Gitter"></a>
|
||||
@@ -41,7 +41,7 @@ $ npm start
|
||||
|
||||
### Package app
|
||||
|
||||
Builds app binaries for OS X, Linux, and Windows.
|
||||
Builds app binaries for Mac, Linux, and Windows.
|
||||
|
||||
```
|
||||
$ npm run package
|
||||
@@ -57,23 +57,23 @@ Where `[platform]` is `darwin`, `linux`, `win32`, or `all` (default).
|
||||
|
||||
The following optional arguments are available:
|
||||
|
||||
- `--sign` - Sign the application (OS X, Windows)
|
||||
- `--sign` - Sign the application (Mac, Windows)
|
||||
- `--package=[type]` - Package single output type.
|
||||
- `deb` - Debian package
|
||||
- `zip` - Linux zip file
|
||||
- `dmg` - OS X disk image
|
||||
- `dmg` - Mac disk image
|
||||
- `exe` - Windows installer
|
||||
- `portable` - Windows portable app
|
||||
- `all` - All platforms (default)
|
||||
|
||||
Note: Even with the `--package` option, the auto-update files (.nupkg for Windows, *-darwin.zip for OS X) will always be produced.
|
||||
Note: Even with the `--package` option, the auto-update files (.nupkg for Windows, *-darwin.zip for Mac) will always be produced.
|
||||
|
||||
#### Windows build notes
|
||||
|
||||
To package the Windows app from non-Windows platforms, [Wine](https://www.winehq.org/) needs
|
||||
to be installed.
|
||||
|
||||
On OS X, first install [XQuartz](http://www.xquartz.org/), then run:
|
||||
On Mac, first install [XQuartz](http://www.xquartz.org/), then run:
|
||||
|
||||
```
|
||||
brew install wine
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Builds app binaries for OS X, Linux, and Windows.
|
||||
* Builds app binaries for Mac, Linux, and Windows.
|
||||
*/
|
||||
|
||||
var cp = require('child_process')
|
||||
@@ -56,11 +56,11 @@ function build () {
|
||||
|
||||
var all = {
|
||||
// The human-readable copyright line for the app. Maps to the `LegalCopyright` metadata
|
||||
// property on Windows, and `NSHumanReadableCopyright` on OS X.
|
||||
// property on Windows, and `NSHumanReadableCopyright` on Mac.
|
||||
'app-copyright': config.APP_COPYRIGHT,
|
||||
|
||||
// The release version of the application. Maps to the `ProductVersion` metadata
|
||||
// property on Windows, and `CFBundleShortVersionString` on OS X.
|
||||
// property on Windows, and `CFBundleShortVersionString` on Mac.
|
||||
'app-version': pkg.version,
|
||||
|
||||
// Package the application's source code into an archive, using Electron's archive
|
||||
@@ -73,7 +73,7 @@ var all = {
|
||||
'asar-unpack': 'WebTorrent*',
|
||||
|
||||
// The build version of the application. Maps to the FileVersion metadata property on
|
||||
// Windows, and CFBundleVersion on OS X. Note: Windows requires the build version to
|
||||
// Windows, and CFBundleVersion on Mac. Note: Windows requires the build version to
|
||||
// start with a number. We're using the version of the underlying WebTorrent library.
|
||||
'build-version': require('webtorrent/package.json').version,
|
||||
|
||||
@@ -102,20 +102,20 @@ var all = {
|
||||
}
|
||||
|
||||
var darwin = {
|
||||
// Build for OS X
|
||||
// Build for Mac
|
||||
platform: 'darwin',
|
||||
|
||||
// Build 64 bit binaries only.
|
||||
arch: 'x64',
|
||||
|
||||
// The bundle identifier to use in the application's plist (OS X only).
|
||||
// The bundle identifier to use in the application's plist (Mac only).
|
||||
'app-bundle-id': 'io.webtorrent.webtorrent',
|
||||
|
||||
// The application category type, as shown in the Finder via "View" -> "Arrange by
|
||||
// Application Category" when viewing the Applications directory (OS X only).
|
||||
// Application Category" when viewing the Applications directory (Mac only).
|
||||
'app-category-type': 'public.app-category.utilities',
|
||||
|
||||
// The bundle identifier to use in the application helper's plist (OS X only).
|
||||
// The bundle identifier to use in the application helper's plist (Mac only).
|
||||
'helper-bundle-id': 'io.webtorrent.webtorrent-helper',
|
||||
|
||||
// Application icon.
|
||||
@@ -171,10 +171,10 @@ build()
|
||||
function buildDarwin (cb) {
|
||||
var plist = require('plist')
|
||||
|
||||
console.log('OS X: Packaging electron...')
|
||||
console.log('Mac: Packaging electron...')
|
||||
electronPackager(Object.assign({}, all, darwin), function (err, buildPath) {
|
||||
if (err) return cb(err)
|
||||
console.log('OS X: Packaged electron. ' + buildPath)
|
||||
console.log('Mac: Packaged electron. ' + buildPath)
|
||||
|
||||
var appPath = path.join(buildPath[0], config.APP_NAME + '.app')
|
||||
var contentsPath = path.join(appPath, 'Contents')
|
||||
@@ -261,9 +261,9 @@ function buildDarwin (cb) {
|
||||
* - So the auto-updater (Squirrrel.Mac) can check that app updates are signed by
|
||||
* the same author as the current version.
|
||||
* - So users will not a see a warning about the app coming from an "Unidentified
|
||||
* Developer" when they open it for the first time (OS X Gatekeeper).
|
||||
* Developer" when they open it for the first time (Mac Gatekeeper).
|
||||
*
|
||||
* To sign an OS X app for distribution outside the App Store, the following are
|
||||
* To sign an Mac app for distribution outside the App Store, the following are
|
||||
* required:
|
||||
* - Xcode
|
||||
* - Xcode Command Line Tools (xcode-select --install)
|
||||
@@ -275,10 +275,10 @@ function buildDarwin (cb) {
|
||||
verbose: true
|
||||
}
|
||||
|
||||
console.log('OS X: Signing app...')
|
||||
console.log('Mac: Signing app...')
|
||||
sign(signOpts, function (err) {
|
||||
if (err) return cb(err)
|
||||
console.log('OS X: Signed app.')
|
||||
console.log('Mac: Signed app.')
|
||||
cb(null)
|
||||
})
|
||||
}
|
||||
@@ -293,24 +293,24 @@ function buildDarwin (cb) {
|
||||
|
||||
function packageZip () {
|
||||
// Create .zip file (used by the auto-updater)
|
||||
console.log('OS X: Creating zip...')
|
||||
console.log('Mac: Creating zip...')
|
||||
|
||||
var inPath = path.join(buildPath[0], config.APP_NAME + '.app')
|
||||
var outPath = path.join(DIST_PATH, BUILD_NAME + '-darwin.zip')
|
||||
zip.zipSync(inPath, outPath)
|
||||
|
||||
console.log('OS X: Created zip.')
|
||||
console.log('Mac: Created zip.')
|
||||
}
|
||||
|
||||
function packageDmg (cb) {
|
||||
console.log('OS X: Creating dmg...')
|
||||
console.log('Mac: Creating dmg...')
|
||||
|
||||
var appDmg = require('appdmg')
|
||||
|
||||
var targetPath = path.join(DIST_PATH, BUILD_NAME + '.dmg')
|
||||
rimraf.sync(targetPath)
|
||||
|
||||
// Create a .dmg (OS X disk image) file, for easy user installation.
|
||||
// Create a .dmg (Mac disk image) file, for easy user installation.
|
||||
var dmgOpts = {
|
||||
basepath: config.ROOT_PATH,
|
||||
target: targetPath,
|
||||
@@ -338,7 +338,7 @@ function buildDarwin (cb) {
|
||||
if (info.type === 'step-begin') console.log(info.title + '...')
|
||||
})
|
||||
dmg.once('finish', function (info) {
|
||||
console.log('OS X: Created dmg.')
|
||||
console.log('Mac: Created dmg.')
|
||||
cb(null)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "webtorrent-desktop",
|
||||
"description": "WebTorrent, the streaming torrent client. For OS X, Windows, and Linux.",
|
||||
"description": "WebTorrent, the streaming torrent client. For Mac, Windows, and Linux.",
|
||||
"version": "0.9.0",
|
||||
"author": {
|
||||
"name": "WebTorrent, LLC",
|
||||
|
||||
@@ -109,7 +109,7 @@ function openTorrentAddress () {
|
||||
}
|
||||
|
||||
/**
|
||||
* Dialogs on do not show a title on OS X, so the window title is used instead.
|
||||
* Dialogs on do not show a title on Mac, so the window title is used instead.
|
||||
*/
|
||||
function setTitle (title) {
|
||||
if (process.platform === 'darwin') {
|
||||
|
||||
@@ -12,7 +12,7 @@ var dialog = require('./dialog')
|
||||
var log = require('./log')
|
||||
|
||||
/**
|
||||
* Add a right-click menu to the dock icon. (OS X)
|
||||
* Add a right-click menu to the dock icon. (Mac)
|
||||
*/
|
||||
function init () {
|
||||
if (!app.dock) return
|
||||
@@ -21,7 +21,7 @@ function init () {
|
||||
}
|
||||
|
||||
/**
|
||||
* Bounce the Downloads stack if `path` is inside the Downloads folder. (OS X)
|
||||
* Bounce the Downloads stack if `path` is inside the Downloads folder. (Mac)
|
||||
*/
|
||||
function downloadFinished (path) {
|
||||
if (!app.dock) return
|
||||
@@ -30,7 +30,7 @@ function downloadFinished (path) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a counter badge for the app. (OS X, Linux)
|
||||
* Display a counter badge for the app. (Mac, Linux)
|
||||
*/
|
||||
function setBadge (count) {
|
||||
log(`setBadge: ${count}`)
|
||||
|
||||
@@ -34,7 +34,7 @@ function installDarwin () {
|
||||
var electron = require('electron')
|
||||
var app = electron.app
|
||||
|
||||
// On OS X, only protocols that are listed in `Info.plist` can be set as the
|
||||
// On Mac, only protocols that are listed in `Info.plist` can be set as the
|
||||
// default handler at runtime.
|
||||
app.setAsDefaultProtocolClient('magnet')
|
||||
app.setAsDefaultProtocolClient('stream-magnet')
|
||||
|
||||
@@ -153,7 +153,7 @@ function processArgv (argv) {
|
||||
} else if (arg === '-u') {
|
||||
dialog.openTorrentAddress()
|
||||
} else if (arg.startsWith('-psn')) {
|
||||
// Ignore OS X launchd "process serial number" argument
|
||||
// Ignore Mac launchd "process serial number" argument
|
||||
// Issue: https://github.com/feross/webtorrent-desktop/issues/214
|
||||
} else {
|
||||
torrentIds.push(arg)
|
||||
|
||||
@@ -281,7 +281,7 @@ function getMenuTemplate () {
|
||||
]
|
||||
|
||||
if (process.platform === 'darwin') {
|
||||
// Add WebTorrent app menu (OS X)
|
||||
// Add WebTorrent app menu (Mac)
|
||||
template.unshift({
|
||||
label: config.APP_NAME,
|
||||
submenu: [
|
||||
@@ -324,7 +324,7 @@ function getMenuTemplate () {
|
||||
]
|
||||
})
|
||||
|
||||
// Add Window menu (OS X)
|
||||
// Add Window menu (Mac)
|
||||
template.splice(5, 0, {
|
||||
role: 'window',
|
||||
submenu: [
|
||||
|
||||
@@ -21,7 +21,7 @@ function init () {
|
||||
if (process.platform === 'win32') {
|
||||
initWin32()
|
||||
}
|
||||
// OS X apps generally do not have menu bar icons
|
||||
// Mac apps generally do not have menu bar icons
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -37,7 +37,7 @@ function init () {
|
||||
minWidth: config.WINDOW_MIN_WIDTH,
|
||||
minHeight: config.WINDOW_MIN_HEIGHT,
|
||||
title: config.APP_WINDOW_TITLE,
|
||||
titleBarStyle: 'hidden-inset', // Hide title bar (OS X)
|
||||
titleBarStyle: 'hidden-inset', // Hide title bar (Mac)
|
||||
useContentSize: true, // Specify web page size without OS chrome
|
||||
width: 500,
|
||||
height: HEADER_HEIGHT + (TORRENT_HEIGHT * 6) // header height + 5 torrents
|
||||
@@ -95,7 +95,7 @@ function send (...args) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Enforce window aspect ratio. Remove with 0. (OS X)
|
||||
* Enforce window aspect ratio. Remove with 0. (Mac)
|
||||
*/
|
||||
function setAspectRatio (aspectRatio) {
|
||||
if (!main.win) return
|
||||
@@ -196,7 +196,7 @@ function toggleFullScreen (flag) {
|
||||
log(`toggleFullScreen ${flag}`)
|
||||
|
||||
if (flag) {
|
||||
// Fullscreen and aspect ratio do not play well together. (OS X)
|
||||
// Fullscreen and aspect ratio do not play well together. (Mac)
|
||||
main.win.setAspectRatio(0)
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ function getDefaultState () {
|
||||
*
|
||||
* Config path:
|
||||
*
|
||||
* OS X ~/Library/Application Support/WebTorrent/config.json
|
||||
* Mac ~/Library/Application Support/WebTorrent/config.json
|
||||
* Linux (XDG) $XDG_CONFIG_HOME/WebTorrent/config.json
|
||||
* Linux (Legacy) ~/.config/WebTorrent/config.json
|
||||
* Windows (> Vista) %LOCALAPPDATA%/WebTorrent/config.json
|
||||
|
||||
@@ -416,7 +416,7 @@ function onVisibilityChange () {
|
||||
function onFullscreenChanged (e, isFullScreen) {
|
||||
state.window.isFullScreen = isFullScreen
|
||||
if (!isFullScreen) {
|
||||
// Aspect ratio gets reset in fullscreen mode, so restore it (OS X)
|
||||
// Aspect ratio gets reset in fullscreen mode, so restore it (Mac)
|
||||
ipcRenderer.send('setAspectRatio', state.playing.aspectRatio)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user