|
| 1 | +# electron-notification-state |
| 2 | +Should you display a notification to your user? This module allows you to check. |
| 3 | + |
| 4 | +## Usage |
| 5 | + |
| 6 | +### Do Not Disturb / Quiet Hours |
| 7 | +```js |
| 8 | +const { getDoNotDisturb } from 'electron-notification-state' |
| 9 | +// On Windows, logs `true` if "quiet hours" are enabled |
| 10 | +// On macOS, logs `true` if "do not disturb" is enabled |
| 11 | +console.log(getDoNotDisturb()); |
| 12 | +``` |
| 13 | + |
| 14 | +### Session State |
| 15 | +On Windows, you likely want to check [SHQueryUserNotificationState](https://msdn.microsoft.com/en-us/library/windows/desktop/bb762242(v=vs.85).aspx), checking whether or not a screensaver is running, if the screen is locked, or if a presentation is running. On macOS, you likely want to check if the screen is locked and if the if the user has an active screen session. |
| 16 | + |
| 17 | +The call below logs a different string, depending on the platform: |
| 18 | +#### macOS |
| 19 | +- `SESSION_SCREEN_IS_LOCKED` The screen is locked. |
| 20 | +- `SESSION_ON_CONSOLE_KEY` The user currently has console/graphical control. |
| 21 | + |
| 22 | +#### Windows |
| 23 | +- `QUNS_NOT_PRESENT` A screen saver is displayed, the machine is locked, or a nonactive Fast User Switching session is in progress. |
| 24 | +- `QUNS_BUSY` A full-screen application is running or Presentation Settings are applied. Presentation Settings allow a user to put their machine into a state fit for an uninterrupted presentation, such as a set of PowerPoint slides, with a single click. |
| 25 | +- `QUNS_RUNNING_D3D_FULL_SCREEN` A full-screen (exclusive mode) Direct3D application is running. |
| 26 | +- `QUNS_PRESENTATION_MODE` The user has activated Windows presentation settings to block notifications and pop-up messages. |
| 27 | +- `QUNS_ACCEPTS_NOTIFICATIONS` None of the other states are found, notifications can be freely sent. |
| 28 | +- `QUNS_QUIET_TIME` Introduced in Windows 7. The current user is in "quiet time", which is the first hour after a new user logs into his or her account for the first time. During this time, most notifications should not be sent or shown. This lets a user become accustomed to a new computer system without those distractions. Quiet time also occurs for each user after an operating system upgrade or clean installation, according to Windows. This is _not_ the same as "quiet hours". |
| 29 | +Note that during quiet time, if the user is in one of the other blocked modes (QUNS_NOT_PRESENT, QUNS_BUSY, QUNS_PRESENTATION_MODE, or QUNS_RUNNING_D3D_FULL_SCREEN) SHQueryUserNotificationState returns only that value, and does not report QUNS_QUIET_TIME. |
| 30 | +- `QUNS_APP` Introduced in Windows 8. A Windows Store app is running. |
| 31 | + |
| 32 | +```js |
| 33 | +const { getSessionState } from 'electron-notification-state' |
| 34 | + |
| 35 | +console.log(getSessionState()); |
| 36 | +``` |
| 37 | + |
| 38 | +## License |
| 39 | +MIT. Please see LICENSE for details. |
0 commit comments