How to detect desktop idle time from an Electron a

2020-06-04 09:52发布

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?

3条回答
Summer. ? 凉城
2楼-- · 2020-06-04 10:16

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楼-- · 2020-06-04 10:36

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.

查看更多
Deceive 欺骗
4楼-- · 2020-06-04 10:37

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

查看更多
登录 后发表回答