LibreTasker is an event-based task performer, similar to Tasker. This means that you can trigger Actions when events (filtered on input) occur, taking into consideration current state. Supported events (and their conditions): - Network: - Type: Wifi / Cellular / VPN - State: Connected / Disconnected - SSIDs: List of SSIDs when Type is Wifi - DateTime (Similar to cron): - Month: List of ints - DOM: List of ints (Day of Month, 1-31) - DOW: List of ints (Day of Week, 1-7) - Hour: List of ints (00-24) - Minute: List of ints (00-59) - InvertHour: boolean (whether to invert the match on the 'Hour' field) - InvertMinute: boolean (whether to invert the match on the 'Minute' field) - Screen: - OFF: boolean (whether to trigger on ON or OFF ) - SMS: - BodyRegex (String, Regex) - NameRegex (String, Regex) - Sender (String, matching Phone number exactly) - PhoneCall: - Name (String) - Number (String) - State (String) { RINGING, IDLE } There's an special event called 'State'. State takes a Key (String) and Value (Object). This gets triggered automatically when an Action with type 'State' **changes** its value. Supported Actions (and their parameters): - Toast: - String (text to display) - Notification: - , with 2 Pairs: Title and Value, both must be non-null. - Beep: - None (Plays the default notification ringtone) - Volume: - Stream (Ring, Alarm, Music, Notification, System), Volume in % - State: - , set a state key to a value. Will trigger the 'State' special event if the value changed. - Media key: - String (key) { KEYCODE\_MEDIA\_PREVIOUS, KEYCODE\_MEDIA\_NEXT, KEYCODE\_MEDIA\_PAUSE, KEYCODE\_MEDIA\_PLAY, KEYCODE\_MEDIA\_PLAY\_PAUSE, KEYCODE\_MEDIA\_STOP } For example you could do something like: - At 22:59 => Set Ringtone volume to 0% - At 7:59 => Set Ringtone volume to 100% or achieve the same thing with states: - Between 22:59 and 7:59 => Set state 'sleepy' to true - On 'sleepy' change to true => Set volume to 0% - On 'sleepy' change to false => Set volume to 100% If you don't want to be disturbed (except by someone in particular): - (Manually) Mute your phone - On PhoneCall with { Name : .. } or { Number:.. } with State == 'RINGING' -> Volume (Ringtone) to 100% - On PhoneCall with { Name : .. } or { Number:.. } with State == 'IDLE' -> Volume (Ringtone) to 0% - On SMS with { NameRegex : .. } or { Sender:.. } -> Volume (Notification) to 100%, Beep, Volume (Notification) to 0%