问题
I need my Electron app to respond to the user becoming idle (no mouse or keyboard inputs to any program on the OS) for a certain amount of time.
How can I trigger a function based on such idle time data?
回答1:
You can always detect idle times on Linux by using XScreenServer, GetLastInputInfo on Windows and CGEventSourceSecondsSinceLastEventType on Mac
I've published desktop-idle using these API's, you can check the source code https://github.com/bithavoc/node-desktop-idle
UPDATE:
Electron 3 users can use the power monitor API to achieve the same goal: https://electronjs.org/docs/api/power-monitor
回答2:
Since electron uses node, you should checkout RobotJS. These things are platform specific so it does need some other dependancies but you can monitor mouse/keyboard and see if it's changed, or control it (hence the name).
回答3:
Some people have written node libraries that hook into the native platform code for OSX, Windows, and Linux to accomplish this.
I ended up using this library to accomplish the same thing in my electron app: https://github.com/paulcbetts/node-system-idle-time
It's published on npm as @paulcbetts/system-idle-time
I tested it on OSX and it seemed to work fine there.
I did originally get a "module version mismatch expected 50 got 46" error, but running this command cleared it up:
npm rebuild --runtime=electron --target=1.4.3 --disturl=https://atom.io/download/atom-shell --abi=49
Replace target with whatever version of electron you're using.
来源:https://stackoverflow.com/questions/33398499/how-to-detect-desktop-idle-time-from-an-electron-app