* [powerSaveBlocker](api/power-save-blocker.md)
* [protocol](api/protocol.md)
* [session](api/session.md)
+* [systemPreferences](api/system-preferences.md)
* [webContents](api/web-contents.md)
* [Tray](api/tray.md)
**참고:** OS X에선, 어플리케이션의 `info.plist`에 등록해둔 프로토콜만 사용할 수
있습니다. 이는 런타임에서 변경될 수 없습니다. 이 파일은 간단히 텍스트 에디터를
사용하거나, 어플리케이션을 빌드할 때 스크립트가 생성되도록 할 수 있습니다. 자세한
-내용은 [Apple의 참조 문서를][CFBundleURLTypes] 확인하세요.
+내용은 [Apple의 참조 문서][CFBundleURLTypes]를 확인하세요.
이 API는 내부적으로 Windows 레지스트리와 LSSetDefaultHandlerForURLScheme를 사용합니다.
**참고:** OS X에서는 앱을 제거하면 자동으로 기본 프로토콜 핸들러에서 제거됩니다.
+### `app.isDefaultProtocolClient(protocol)` _OS X_ _Windows_
+
+* `protocol` String - `://`를 제외한 프로토콜의 이름.
+
+이 메서드는 현재 실행 파일이 지정한 프로토콜에 대해 기본 동작인지 확인합니다. (URI
+스킴) 만약 그렇다면 `true`를 반환하고 아닌 경우 `false`를 반환합니다.
+
+**참고:** OS X에선, 응용 프로그램이 프로토콜에 대한 기본 프로토콜 동작으로
+등록되었는지를 확인하기 위해 이 메서드를 사용할 수 있습니다. 또한 OS X에서
+`~/Library/Preferences/com.apple.LaunchServices.plist`를 확인하여 검증할 수도
+있습니다. 자세한 내용은 [Apple의 참조 문서][LSCopyDefaultHandlerForURLScheme]를
+참고하세요.
+
+이 API는 내부적으로 Windows 레지스트리와 LSSetDefaultHandlerForURLScheme를 사용합니다.
+
### `app.setUserTasks(tasks)` _Windows_
* `tasks` Array - `Task` 객체의 배열
* `id` String
-[Application User Model ID][app-user-model-id]를 `id`로 변경합니다.
-
-### `app.isAeroGlassEnabled()` _Windows_
-
-이 메서드는 [DWM 컴포지션](https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx)
-(Aero Glass)가 활성화 되어있을 때 `true`를 반환합니다. 아닌 경우 `false`를 반환합니다.
-이 메서드는 투명한 윈도우를 만들기 위해 사용 가능 여부를 확인할 때 사용할 수 있습니다.
-(투명한 윈도우는 DWM 컴포지션이 비활성화되어있을 시 작동하지 않습니다)
-
-사용 예시:
-
-```js
-let browserOptions = {width: 1000, height: 800};
-
-// 플랫폼이 지원하는 경우에만 투명 윈도우를 생성
-if (process.platform !== 'win32' || app.isAeroGlassEnabled()) {
- browserOptions.transparent = true;
- browserOptions.frame = false;
-}
-
-// 원도우 생성
-win = new BrowserWindow(browserOptions);
-
-// 페이지 로드
-if (browserOptions.transparent) {
- win.loadURL('file://' + __dirname + '/index.html');
-} else {
- // 투명 윈도우 상태가 아니라면, 기본적인 폴백 스타일 사용
- win.loadURL('file://' + __dirname + '/fallback.html');
-}
-```
-
-### `app.isDarkMode()` _OS X_
-
-이 메서드는 시스템이 다크 모드 상태인 경우 `true`를 반환하고 아닐 경우 `false`를
-반환합니다.
+[어플리케이션의 사용자 모델 ID][app-user-model-id]를 `id`로 변경합니다.
### `app.importCertificate(options, callback)` _LINUX_
[tasks]:http://msdn.microsoft.com/en-us/library/windows/desktop/dd378460(v=vs.85).aspx#tasks
[app-user-model-id]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx
[CFBundleURLTypes]: https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-102207-TPXREF115
+[LSCopyDefaultHandlerForURLScheme]: https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/#//apple_ref/c/func/LSCopyDefaultHandlerForURLScheme
--- /dev/null
+# systemPreferences
+
+> 시스템 설정을 가져옵니다.
+
+## Methods
+
+### `systemPreferences.isDarkMode()` _OS X_
+
+이 메서드는 시스템이 어두운 모드 상태인 경우 `true`를 반환하고 아닐 경우 `false`를
+반환합니다.
+
+### `systemPreferences.subscribeNotification(event, callback)` _OS X_
+
+* `event` String
+* `callback` Function
+
+OS X의 네이티브 알림을 구독하며, 해당하는 `event`가 발생하면 `callback`이 호출됩니다.
+구독자의 `id`가 반환되며 `event`를 구독 해제할 때 사용할 수 있습니다.
+
+이 API는 후드에서 `NSDistributedNotificationCenter`를 구독하며, `event`에서 사용
+가능한 값은 다음과 같습니다:
+
+* `AppleInterfaceThemeChangedNotification`
+* `AppleAquaColorVariantChanged`
+* `AppleColorPreferencesChangedNotification`
+* `AppleShowScrollBarsSettingChanged`
+
+### `systemPreferences.unsubscribeNotification(id)` _OS X_
+
+* `id` Integer
+
+`id`와 함께 구독자를 제거합니다.
+
+### `systemPreferences.getUserDefault(key, type)` _OS X_
+
+* `key` String
+* `type` String - `string`, `boolean`, `integer`, `float`, `double`, `url` 값이
+ 될 수 있습니다.
+
+시스템 설정에서 `key`에 해당하는 값을 가져옵니다.
+
+OS X에선 API가 `NSUserDefaults`를 읽어들입니다. 유명한 `key`와 `type`은 다음과
+같습니다:
+
+* `AppleInterfaceStyle: string`
+* `AppleAquaColorVariant: integer`
+* `AppleHighlightColor: string`
+* `AppleShowScrollBars: string`
+
+### `systemPreferences.isAeroGlassEnabled()` _Windows_
+
+이 메서드는 [DWM 컴포지션][dwm-composition] (Aero Glass)가 활성화 되어있을 때
+`true`를 반환합니다. 아닌 경우 `false`를 반환합니다.
+
+다음은 투명한 윈도우를 만들지, 일반 윈도우를 만들지를 판단하여 윈도우를 생성하는
+예시입니다 (투명한 윈도우는 DWM 컴포지션이 비활성화되어있을 시 작동하지 않습니다):
+
+```javascript
+let browserOptions = {width: 1000, height: 800};
+
+// 플랫폼이 지원하는 경우에만 투명 윈도우를 생성.
+if (process.platform !== 'win32' || app.isAeroGlassEnabled()) {
+ browserOptions.transparent = true;
+ browserOptions.frame = false;
+}
+
+// 원도우 생성
+let win = new BrowserWindow(browserOptions);
+
+// 페이지 로드.
+if (browserOptions.transparent) {
+ win.loadURL('file://' + __dirname + '/index.html');
+} else {
+ // 투명 윈도우 상태가 아니라면, 기본적인 스타일 사용
+ win.loadURL('file://' + __dirname + '/fallback.html');
+}
+```
+
+[dwm-composition]:https://msdn.microsoft.com/en-us/library/windows/desktop/aa969540.aspx
# Pepper 플래시 플러그인 사용하기
-Electron은 Pepper 플래시 플러그인을 지원합니다.
-Pepper 플래시 플러그인을 사용하려면 Pepper 플래시 플러그인의 위치를 지정해야 합니다.
+Electron은 Pepper 플래시 플러그인을 지원합니다. Electron에서 Pepper 플래시
+플러그인을 사용하려면 Pepper 플래시 플러그인의 위치를 지정한 후 어플리케이션 내에서
+활성화 시켜야 합니다.
## 플래시 플러그인 준비하기
플러그인을 사용하려면 Electron 커맨드 라인에 `--ppapi-flash-path` 와
`ppapi-flash-version` 플래그를 `app`의 `ready` 이벤트가 발생하기 전에 추가해야
-í\95©ë\8b\88ë\8b¤. ê·¸ë¦¬ê³ `browser-window`ì\97\90 `plugins` ì\8a¤ì\9c\84ì¹\98ë\8f\84 ì¶\94ê°\80해야 합니다.
+í\95©ë\8b\88ë\8b¤. ê·¸ë¦¬ê³ `browser-window`ì\97\90 `plugins` ì\98µì\85\98ì\9d\84 í\99\9cì\84±í\99\94해야 합니다.
```javascript
// 플래시 플러그인의 위치를 설정합니다.
-// Windows의 경우, /path/to/pepflashplayer.dll
+// Windows의 경우, /path/to/pepflashplayer.dll 또는 main.js에 존재하는 경우 pepflashplayer.dll
// OS X의 경우, /path/to/PepperFlashPlayer.plugin
// Linux의 경우, /path/to/libpepflashplayer.so
app.commandLine.appendSwitch('ppapi-flash-path', '/path/to/libpepflashplayer.so');
-// Specify flash version, for example, v17.0.0.169
+// 선택적인으로 플래시 플레이어의 버전을 설정합니다. 예시로는, v17.0.0.169
app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169');
app.on('ready', function() {
mainWindow = new BrowserWindow({
- 'width': 800,
- 'height': 600,
- 'web-preferences': {
- 'plugins': true
+ width: 800,
+ height: 600,
+ webPreferences: {
+ plugins: true
}
});
mainWindow.loadURL('file://' + __dirname + '/index.html');
- // Something else
+ // 이외의 코드
});
```
```html
<webview src="http://www.adobe.com/software/flash/about/" plugins></webview>
```
+
+## 문제 해결
+
+개발자 도구의 콘솔에서 `navigator.plugins`를 탐색하면 Pepper 플래시 플러그인이 잘
+로드되었는지를 확인할 수 있습니다. (물론 플러그인의 경로를 잘 설정하지 않으면 확인할
+수 없습니다)
+
+Pepper 플래시 플러그인의 구조는 Electron과 일치해야 합니다. Windows에서 자주
+발생하는 문제는 32비트 버전의 플래시 플레이어를 64비트 버전의 Electron에서 사용하는
+것입니다.