How to detect desktop idle time from an Electron app?

前端 未结 4 1031
情话喂你
情话喂你 2021-02-06 10:01

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 func

相关标签:
4条回答
  • 2021-02-06 10:07

    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.

    0 讨论(0)
  • 2021-02-06 10:10

    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).

    0 讨论(0)
  • 2021-02-06 10:29

    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

    0 讨论(0)
  • 2021-02-06 10:30

    Look at Electron Power monitor API's and use

    powerMonitor.getSystemIdleTime()
    
    0 讨论(0)
提交回复
热议问题