Skip to main content

Events

TODO: Review and check that all events are documented.

The available selection of events covers many different use cases.

Remember that you can combine multiple events using a logical relationship to create more complex scenarios.

Countdown

Count down a specified amount of time. This Event is considered "triggered" when the timer reaches zero.

Example uses:

  1. If you suffer from RSI, set timer to take a break every few minutes and exercise your hands, shoulder and neck.
  2. Use Shutter as a count-down timer clock (to give alarm at the end of specified time).
  3. Play a pre-recorded sound every few minutes (to calm down a baby or a pet).

On Time

Event is triggered when the current time (as displayed in the system tray) reaches the specified time.

Example uses:

  1. Launch an application (e.g. a downloader) at certain time.
  2. Share your PC on LAN till a particular time, and then turn it off at certain time.

Winamp Stops

Event periodically checks the playback state of Winamp. The event is triggered once it is detected that application is no longer playing the media.

Example uses:

  1. When the Winamp playlist is over, pause for a specified time period and then play another playlist, or hibernate the PC.

Implementation notes:

CPU Usage

Periodically check the processor usage and trigger event when the usage stays above (or below) the specified mark for the specified amount of time.

Example uses:

  1. Launch a CPU-intensive application (e.g. Blender rendering) to get the benefit of full CPU power.
  2. When CPU usage goes above certain threshold, pause the resource-intensive applications.

Network usage

Check the network's load (select from total, upload only, or download only); and if it falls below specified limit for the specified duration, then the event is triggered.

Example uses:

  1. Start a downloader when the download is below a limit.
  2. Upload a large folder when the upload falls below certain point
  3. Pause file-transfers till the total traffic in the network falls below a certain limit.

Implementation notes:

The actual measurement of the network usage is taken every second in all configurations. If the averaging option is disabled, then all measurements within the configured period of time (duration) must stay below the threshold in order to trigger the event. If the averaging option is enabled, then the average of all measurements within the configured period of time (duration) must stay below the threshold in order to trigger the event.

Hard Disk Usage

Monitor the hard disk usage and trigger the event when the usage drops below a certain threshold for a specific period of time. The usage can measure the total transfer speed, only the read speed, or only the write speed.

Implementation notes:

The actual measurement of the disk usage is taken every second in all configurations. If the averaging option is disabled, then all measurements within the configured period of time (duration) must stay below the threshold in order to trigger the event. If the averaging option is enabled, then the average of all measurements within the configured period of time (duration) must stay below the threshold in order to trigger the event.

User Inactive

Track the time of user's last mouse and keyboard activity. Trigger the event when the user has been inactive for the specified period of time.

Methods for monitoring user inactivity:

  1. Last Input Event - Uses GetLastInputInfo API. Captures activity only of the initiating user session. The most stable and the least intrusive approach.
  2. Low Level Hook - Uses SetWindowsHookEx(WH_KEYBOARD_LL) and SetWindowsHookEx(WH_MOUSE_LL) API. Captures activity from all user sessions. Applied without injection into foreign processes to achieve a less intrusive effect, contrary to the official documentation, so it may stop working in future versions of Windows.
  3. Injection Hook - Uses SetWindowsHookEx(WH_KEYBOARD) and SetWindowsHookEx(WH_MOUSE) API. Captures activity from all user sessions. A tiny dedicated library file is injected into all foreign processes to capture user activity across all applications. This is a well established approach which may yield better results in some cases, but it is the most intrusive approach.

Example uses:

  1. Play Winamp when no one is using the PC (turn the PC into entertainment center).
  2. Launch a task that can otherwise slow down the PC.

Battery

Monitor the battery level and trigger event when the level drops below and raises above the specified level. Optionally, trigger the event only when the power supply is in a specific state: online or offline.

Example uses:

  1. Take backup of critical data.
  2. Close specified applications gracefully.
  3. Remind the user to plug in the laptop charger.
  4. Notify the user when the battery is fully charged.

Window

Monitor all windows for the specified title. Trigger the event once a matching window title is found (window opens) or not found (window closes).

  • The window title matching is case-insensitive.
  • You can specify wildcards to find a partial match. For example, *Firefox*.
    • If you do not use wildcards, the window title will be matched exactly, no partial matching.

The window title is the text displayed in the window's top bar and in the desktop's task bar.

Example uses:

  1. Warn the user that the desired application has stopped running.
  2. Launch the process only if the application is not running already (to avoid multiple instances running simultaneously).

Process

Monitor all executing processes for a specified executable filename. Trigger the event when the specified filename is found (process starts) or not found (process stops) in the list of currently executing processes.

Example uses:

  1. Warn the user that the process has stopped.
  2. Launch the next process in sequence.

Program Output

TODO:Execute Documenta command and wait for an expected process exit code. The command will be executed periodically until the event.desired condition is met.

Example uses:

  1. Monitor the state of another application or service.
  2. Custom event implementation via 3rd party scripts and utilities.

Ping

Ping the specified host and trigger when the host is responding or not responding for the specified period of time. Useful for monitoring availability of network services.

Example uses:

  1. Warn the user that the remote PC is not communicating any more (either bad link or crash).

Port

TODO:Check Documentif a host/server responds to connections on a specific port. Additional options allow you to check the event.host periodically and trigger when the port is either closed or open for a number of consecutive requests.

Example uses:

  1. Detect if a web server becomes unresponsive.
  2. Wait until a target service becomes active.

File Size

Periodically check the size of the specified file and trigger the event when the selected condition is met.

The list of available conditions:

  1. File size is above a threshold.
  2. File size is below a threshold.
  3. File is created.
  4. File no longer exists.

Internally, when the file or directory does not exist, it has an effective size of "-1".

Example uses:

  1. Take a backup of the file.
  2. Warn the user that the file size has reached the limit.

Lid

TODO:Detect Documentwhen the event.laptop lid opens or closes.

Example uses:

  1. Lunch an application when the laptop lid opens.
  2. Perform custom actions before entering the sleep mode.

Full Screen

TODO:Detect Documentwhen the event.desktop enters or leaves a full screen mode.

Example uses:

  1. Avoid locking the computer (or executing other actions) due to inactivity while watching a movie or playing a game in full screen mode.