Sign up for the beta and download from Google Play here.
Note: Google Play might take a while to update. If you don’t want to wait for the Google Play update, get it right away here. (Direct-Purchase Version here). App Factory Update here.
I'm giving another concept a try: instead of having a sidebar with projects, how about putting them inline directly?
When you go in and out of a project you see this:
As you can see, you have the 3 familiar tabs (Profiles/Tasks/Scenes). You can select multiple at the same time like you see on the screen, or you can select one at a time to just see those types of items.
Projects are automatically color coded based on the project's icon. Here's a project with a green icon:
As you can see it tints the whole UI based on the color of the icon.
Let me know how you like this variant of the UI.
I'm also thinking of trying yet another version where there are no tabs inside a project and instead they are in collapsible groups, kinda like this:
If you can, try out the inline projects variant and let me know which of the 3 variants makes the most sense to you and why :)
The functionality of the runlog screen remains the same as before but it has a much cleaner and easy to follow UI. You can clearly see where a task starts and ends and follow its actions visually and see which ones succeeded and which failed.
Material Symbols are a icon font that can be adapted into different situations. For example, they can represent state where the otline variant represents an inactive state and the filled variant represesnts the active state
These can be used in their configurable form, where you manually specify a bunch of their attributes (like in the Notify action), or in their automatic form where their configuration is automatically set (like in the Set up Quick Setting Tile action where the icon is filled or outlined depending on the QS Tile state).
In the legacy UI, if you give a Project one of these icons, it'll also change from outline to filled depending if the project is selected or not.
It's now super easy to put your Tasker arrays into scenes with the new Arrays Merge Template element.
In this example, I would have 2 arrays:
%icon
%item
each with their corresponding icon images and labels. With this simple component...
...I can expand those 2 arrays together into a list of rows dynamically built from those arrays!
Saved Component Templates
You can now long click any element on the tree and save it as a Component Template with a name and description. Then you can simply insert it into your tree like any other component. :)
Show When Animations
When a component has its Show When field set, you can now set animations that define how that component shows up and goes away. You can choose various types of animations.
For example, by combining a dark transparent background that fades in with a dialog that slides up, you can create an Android-like popup dialog!
SVG Crop
You can now crop any element in a Scene with an SVG. And it's not only a visual crop, it's a functional one too! For example, you can create a button like this
and when you click anywhere where it's white, the button won't be triggered! You really have to press the green part for it to register the click! This allows you to create UIs in any shape imaginable that behave like you expect it to!
WebView
Webviews can now call many, many Tasker actions via JavaScript. You can use await to wait for them to finish, so you can easily call multiple actions in a row in a controlled fashion!
Here's a simple example of doing 3 actions in a row:
This makes elements be drag handles in all directions or just horizontally or just vertically.
Full Changelog
Major Scenes V2: Added the "Arrays Merge Template" component, a built-in way to handle Tasker array merging to build sub-components.
Major Scenes V2: Components can now animate in and out (Fade, Scale, Slide or Expand) whenever their "Show When" condition toggles their visibility.
Major Scenes V2: WebViews can now call many Tasker actions directly from JavaScript via the Tasker.* bridge.
Major Scenes V2: An HTML element inside a WebView can act as a drag handle to move the overlay it lives in.
Major Scenes V2: You can now save a component as a template to easily reuse it across your scenes.
Major Scenes V2: You can now crop any component to the shape of an SVG file.
Major Scenes V2: Added the "Trigger Scene V2 Event" Tasker action.
Medium Scenes V2: Added "matches" (Tasker pattern matching) and "matchesr" (regex matching) expressions to the "Show When" and "Apply When" fields.
Medium Scenes V2: Added a "Variable Clear" event action.
Medium Scenes V2: The Switch component now has a Thumb slot so you can set an image in the switch's thumb and you can also select different colors for different parts of it.
Medium Scenes V2: WebViews now receive the full Material 3 color palette (primary, secondary, surface, etc.) so your HTML can match the app theme.
Minor Scenes V2: The task name field in Events -> Run Task now follows the same caps rules as other task name fields.
Minor Scenes V2: When creating a task with a name, use the same "first letter of each word uppercase" rule as elsewhere in the app.
Fix Scenes V2: components that have indexes are now 1-based instead of 0-based
Fix Scenes V2: fixed "Screen Hidden" event not firing in certain situations
Fix Scenes V2: fixed background of invisible component wrongly showing
Fix Scenes V2: fixed crash when picking a variable if the user has tens of thousands of variables
Fix Scenes V2: fixed crash when using a slider in some situations
Fix Scenes V2: fixed images filling their container by default when they shouldn't
Fix Scenes V2: fixed images not loading if they had hidden spaces before or after the file name
Fix Scenes V2: fixed multiline input text box not filling the full vertical space it needed
Fix Scenes V2: fixed setting a variable in a WebView affecting a variable used in a separate component on the same screen
Fix Scenes V2: fixed some things not working when showing through the "SCENES" tab or the new UI
Fix Scenes V2: fixed updating a variable array in a scene leaving old elements there
Fix Scenes V2: fixed using two "Overlay With Result" scenes in a row with the same id ending the second one prematurely
Fix Scenes V2: segmented buttons that are "gone" now behave as expected
Fix Scenes V2: WebView now uses the correct system theme (dark/light)
Fix Scenes V2: when a task is renamed, all the task references in Scenes V2 are updated with the new name
Major New UI: Redesigned the RunLog screen to make it more readable.
Major New UI: Added a setting to show projects as items in the main list instead of the sidebar, including sorting them and creating new projects from the NEW FAB.
Major New UI: Project icons based on apps now use the app background in a folder shape with the foreground on top.
Major New UI: Inside a project you can select several of the Profiles/Tasks/Scenes tabs at once, so the list shows all their items together.
Medium New UI: The Project enabled/disabled toggle now works, and profiles in a disabled project show as paused on their switches.
Minor New UI: Added an icon to scenes so they're more easily distinguished.
Minor New UI: Added an option to hide the sidebar when collapsed.
Minor New UI: Added an option to not show the All button when there are projects other than the default one.
Minor New UI: Don't confirm project deletion if it's empty.
Minor New UI: In the task edit screen, moved the search bar to the bottom when adding a new action.
Minor New UI: Made sorting smarter, showing you the items you expect more often.
Minor New UI: Show full names of items in the main list instead of truncating them.
Minor New UI: Show project names instead of just initials when the sidebar is collapsed.
Minor New UI: Updated "Last run" to "Activity".
Minor New UI: When creating a task with a name, use the same "first letter of each word uppercase" rule as the main screen.
Minor New UI: When editing a task, after expanding a text field, allow the editor to show more lines so it's easier to edit larger pieces of text.
Fix New UI: don't show the pending changes banner when exiting the scene editor without saving
Fix New UI: fixed all projects with app icons showing with the same icon
Fix New UI: fixed always scrolling to the profiles when exiting a project
Fix New UI: fixed bottom sheet flickering when deleting a project
Fix New UI: fixed project search box cursor color in dark mode
Fix New UI: fixed search for actions when adding a new action
Fix New UI: fixed some app icons not loading properly
Fix New UI: fixed tag selector bottom sheet moving too far up when the keyboard is showing
Major Added Material Symbols to the app, a large icon set you can now use across Tasker for things like project and task icons, and also Notify action and Quick Setting Tiles action.
Medium Added Run Shell related functions to the Java Code action.
Medium Added tasker.getImageBuffer() and tasker.hasImageBuffer() to the Java Code action.
Medium The "Multiple Variables Set" action can now write JSON.
Medium You can now override the app name when generating an app from Tasker.
Minor Added a "Continue Task Immediately" option to the "Widget V2" action.
Minor Tasker automatically saves your setup before entering the AI screen in the legacy UI so you don't lose changes made in the meantime.
Minor Added a language selector to the first screen shown when you first open the app.
Minor Added a "Separator" option to the "Widget V2" action to configure the separator for its various list fields.
Minor Changed the order of the "Set up Quick Setting Tile" action to make it more logical and easier to use.
Fix Attempted again to fix a crash that only appears in app factory apps
Fix crash where in rare situations projects could end up with the same ids
Fixed DND action so that it can't be overrun by Silent/Vibrate
Fixed image in "Text/Image Dialog" action sometimes being hidden by text that is too long
Fixed issue where running many remote actions in quick succession could cause some of them to not run on the receiving device
Fix issue where sometimes a profile doesn't save its state after saving Tasker's setup
Fixed issue where sometimes the QS Tile wouldn't dismiss the notification shade
Fixed profiles (e.g. Wifi Connected) sometimes running their exit tasks when exiting Tasker's Preferences screen
Fixed Shizuku breaking clipboard monitoring
Fixed showing the number of actions over 100 in the legacy UI
Fixed situation where receive intent could be triggered twice with just 1 intent
Fixed some error messages when wrongfully using JSON writing
Fix Tried fixing a rare crash that can occur when editing legacy scenes
Fix Tried to fix issue where wait action becomes stuck in some circumstances
Fix Tried to fix rare situations where Tasker would get stuck not accepting any new tasks (sometimes related with the HTTP Request action)
Fixed updating Quick Setting Tiles on global variable changes to only happen when the variable isn't a built-in variable
Fixed writing JSON to project/profile/task variables with native Tasker JSON writing
Fixed some crashes
If you can, let me know what you think about the Projects in Sidebar vs Inline vs Collapsible! Thank you!
A firewall utility which has the ability to cut off all IP socket binding, blocking Wi-Fi, 4G, 5G, and roaming simultaneously at the OS routing layer (or just mobile or WiFi data).
The UI allows you to set per app data access:
Cell: allow or deny
WiFi: allow or deny
Background Data: allow or deny
The project listens for switches between mobile data and WiFi data sources and reacts to them. It also listens for app changes and reacts (e.g. when an app denied background data access is closed).
Because 'cmd connectivity set-chain3-enabled true' is reset at every device start, there is also a profile to listen for device starts to re-enable your previously saved firewall rules.
You MUST use the 'Done' button on the overlay to edit the firewall UI if you want to save and apply your rules. If you just exit the overlay via the back button etc., new settings will not be saved and applied.
I can confirm that this project works perfectly on my device. I can't test it on your device. If it doesn't work for you, there's not much I can do about it.
If you want to test whether it works for you, you can either:
Set an app to be blocked and then determine whether that app has data access.
If the app is denied (blocked), the output of that command will be:
<package name>:deny
Shizuku or root is required.
All changes are reset on each device start, so you must use the device start profile if you want to apply your rules at each reboot. You will need to ensure that Shizuku is running when this profile fires.
VirusTotal scans URLs across roughly 70+ distinct antivirus engines and domain blocklists (such as Google Safe Browsing, Kaspersky, Bitdefender, and Sophos).
The Public API is limited to 500 requests per day and a rate of 4 requests per minute.
This project allows you to submit a URL to be scanned and receive back a report. I have included a JavaScriptlet which parses the http return and provides you with a neat and succinct summary of the scan results (e.g. Harmless (0/92}). Details are included in the task.
Scans usually take about 12 seconds. I have included a loop in the task which stops as soon as your report is ready, or aborts after 30 seconds. You can adjust the timings and retry attempts in the task.
You will need to have a VirusTotal API Key (free).
Hi, have there been any recent changes regarding the use of JavaScriptlet? According to the official JavaScriptlet documentation (https://tasker.joaoapps.com/userguide/en/javascript.html#localvars), variables are used directly by their name without the % sign—e.g., Action 1: Set Variable %var = hola, Action 2: JavaScriptlet flash(var);. It should work, but I'm getting an "undefined variable" error. Am I missing something? Thanks.
Update: Solved... Discovered, it was a Play Pass issue. I cleared Play Store app data.
Today, Tasker started telling me the Trial has ended and redirects me to Play Store. Where it shows that I own it via Play Pass. I've purchased Tasker probably 2-3x since 2010, most-recently via Play Pass, so I know I own it 😀
Even if I wanted to, Play Store isn't offering me a chance to purchase it again.
I'm a Beta Tester, if that makes a difference.
Anyone else experiencing this? I've updated all apps, rebooted phone, cleared cache, etc.
I've been using one "borrowed" form Taskernet for several years with no issues, but this latest release won't allow tasker to "see" the PIN code screen.
I've tested this with a UI Query, capturing what tasker can see, and saving that text, and it looks as if that screen is hidden from tasker now.
I'm hoping someone has that latest build from Google and can see if you can get the same results.
I have a task that displays the weather in the Google app. Both methods shown work, but display what's essentially the result of searching for "weather" in the Google app, which includes all sort of weather-related links to web sites, including images from weather-related stores, etc.
I discovered that tapping the weather icon in the Google at-a-glance widget displays more information, and excludes all the extraneous stuff I have no interest in, but I can't seem to find a way to launch *that* from Tasker. Got any suggestions?
I'm trying to open an artist's music list in Spotify and then use the Play button to start playback. Opening the list is easy using a browse URL, but I'm having trouble with media control.
When I select the Play button (simulated), Spotify starts playing the last song I was listening to before I closed Spotify, rather than starting playback from the artist's music list.
Am I missing something that would make this work as expected?
Most of the posts I've found here and on other websites are quite old, so I'm wondering if something has changed and there's a more modern solution.
The current display information can be viewed via global variable %Display.
May require the latest version of beta (or Direct purchase) since Joao has condition for Command Event. It's not actually necessary but make things easier to define the profile.
It's still a little bit difficult to use though since I use full class path. But can be shortened with using *DisplayListener.onDisplayAdded* or *onDisplayAdded*
I will try to make it easier later if Joao were to introduce his concept of custom state, event and action mentioned here.
The "sound mode" action allows you to permanently select one of three modes. Is there any way to set this mode using a variable?
As in the 1st picture, and now it is only as in the 2nd picture.
I change the mode frequently, and setting it for every condition is cumbersome. In other activities, it would be easier for me to enter the variable value and run "sound mode" once.
I have a profile to change my time format on my phone to 24hour format when I get to work. It also turns the time back to 12hour format when I leave work. I can't seem to get my watch to update as well. I have all auto apps battery set to unrestricted. Not sure what I'm missing. Any help? Thanks in advance. (Please explain like I'm 5! 😉)
I have Samsung S25 Ultra phone and Samsung Galaxy watch ultra.
Sometimes email confirmations, texts, or whatever else come along with convenient "add to calendar" buttons. Sometimes they don't, and sometimes they do but it doesn't actually work.
The tasks below can be used to parse out events from any selected text via your AI of choice (I like the free API options from Groq), then the events can be added one at a time via intents that prefill a new event in the default calendar. It could be modified to skip confirmation probably, but not I didn't want that. You'll need to add a received share profile and long press any highlighted text to share it.
You'll need an API key to start, and I don't like things like API keys sitting in plain text, so I added the get credentials helper task. You can just add the API key directly or through some other option.
Task: Extract Calendar Events Task
<Identify calendar events from shared info via LLM and add to the calendar.
If multiple events are identified, choose one at a time to be added
Highlight and long press text to share>
A1: Anchor
<Get current day for default>
A2: Parse/Format DateTime [
Input Type: Now (Current Date And Time)
Output Format: y-MM-dd
Output Offset Type: None ]
<Timezone for flights>
A3: Variable Set [
Name: %target_timezone
To: America/New_York
Structure Output (JSON, etc): On ]
<Build prompt>
A4: Variable Set [
Name: %prompt
To: You are an expert data extraction assistant. Your task is to extract calendar events from the provided input text and format them according to the exact schema requested.
Strict Output Rules:
1. Output ONLY the raw JSON structures separated by "||".
2. Do not include any conversational filler, explanations, or markdown code blocks (e.g., do not use ```json ... ```).
3. Do not wrap the output in a JSON array.
Field Extraction Rules:
- "ev_title": The title or name of the event (e.g., "Flight AA123: JFK to LHR"). If not found, output "".
- "ev_description": Any extra details, confirmation numbers, or context. If not found, output "".
- "ev_location": The physical address, city, virtual meeting link, or airport code. If not found, output "".
- "ev_date": The date of the event in YYYY-MM-DD format. If no date is identified, default to exactly "%formatted".
- "ev_start_time": The starting time, strictly converted to 24-hour format (HH:MM). If not identified, default to "12:00".
- "ev_end_time": The ending time, strictly converted to 24-hour format (HH:MM). If not identified, default to "12:30".
- "ev_calendar": Always output exactly "your.email@gmail.com".
Flight Timezone Conversion Rules:
If the event is a flight, the times mentioned in the text are typically local to the departure and arrival airports. You MUST convert both the departure ("ev_start_time") and arrival ("ev_end_time") times to this target timezone: %target_timezone.
Step 1: Identify the departure city/airport and its local timezone.
Step 2: Identify the arrival city/airport and its local timezone.
Step 3: Calculate the hour offset between those local timezones and %target_timezone.
Step 4: Apply the offset to the departure and arrival times to get the final HH:MM times.
Step 5: If the timezone conversion pushes the time past midnight (forward or backward), adjust the "ev_date" accordingly.
Example Output Format:
{
"ev_title": "Flight DL404: LAX to JFK",
"ev_description": "Confirmation #ABCDEFG",
"ev_location": "LAX / JFK",
"ev_date": "2026-11-15",
"ev_start_time": "11:00",
"ev_end_time": "16:30",
"ev_calendar": "your.email@gmail.com"
} || {
"ev_title": "Dentist Appointment",
"ev_description": "",
"ev_location": "42 Wallaby Way, Sydney",
"ev_date": "%formatted",
"ev_start_time": "12:00",
"ev_end_time": "12:30",
"ev_calendar": "your.email@gmail.com"
}
Extract events from the following text:
%rs_text
Structure Output (JSON, etc): On ]
<LLM call>
A5: Perform Task [
Name: func Groq Call
Priority: %priority
Parameter 1 (%par1): %prompt
Return Value Variable: %answer
Structure Output (JSON, etc): On ]
<Test answer>
A6: [X] Variable Set [
Name: %answer
To: {
"ev_title": "Flight DL404: LAX to JFK",
"ev_description": "Confirmation #ABCDEFG",
"ev_location": "LAX / JFK",
"ev_date": "2026-11-15",
"ev_start_time": "11:00",
"ev_end_time": "16:30",
"ev_calendar": "your.email@gmail.com"
} |0| {
"ev_title": "Dentist Appointment",
"ev_description": "",
"ev_location": "42 Wallaby Way, Sydney",
"ev_date": "%formatted",
"ev_start_time": "12:00",
"ev_end_time": "12:30",
"ev_calendar": "your.email@gmail.com"
}
Structure Output (JSON, etc): On ]
A7: Variable Split [
Name: %answer
Splitter: || ]
<Multiple events>
A8: If [ %answer(#) > 1 ]
<Build choices array>
A9: For [
Variable: %iii
Items: 1:%answer(#)
Structure Output (JSON, etc): On ]
<Structure as JSON>
A10: Variable Set [
Name: %ijson
To: %answer(%iii)
Structure Output (JSON, etc): On ]
A11: Variable Set [
Name: %choices(%iii)
To: %ijson.ev_title
%ijson.ev_date ~ %ijson.ev_start_time
Structure Output (JSON, etc): On ]
A12: End For
A13: List Dialog [
Mode: Select Single Item
Title: Events
Items: %choices
Button 1: Close
Close After (Seconds): 30
First Visible Index: 0
Hide Filter: On ]
<No selection>
A14: Stop [ ]
If [ %ld_selected_index !Set ]
A15: Else
<One event>
A16: Variable Set [
Name: %ld_selected_index
To: 1
Structure Output (JSON, etc): On ]
A17: End If
<Test event choice>
A18: [X] Text/Image Dialog [
Text: %answer(%ld_selected_index)
Button 1: Close
Close After (Seconds): 900 ]
A19: Perform Task [
Name: func Calendar Event Add
Priority: %priority
Parameter 1 (%par1): %answer(%ld_selected_index)
Structure Output (JSON, etc): On ]
Task: func Calendar Event Add
<Open calendar to add an event based on JSON from %par1>
A1: Anchor
<Test event JSON>
A2: Variable Set [
Name: %par1
To: {
"ev_title": "Test event",
"ev_description": "This is a test description. It might have useful info like a confirmation number",
"ev_location": "42 Wallaby Way, Sydney",
"ev_date": "2026-10-31",
"ev_start_time": "14:00",
"ev_end_time": "15:30",
"ev_calendar": "your.email@gmail.com"
}
Structure Output (JSON, etc): On ]
If [ %par1 !Set ]
<Load event JSON>
A3: Variable Set [
Name: %ev_json
To: %par1
Structure Output (JSON, etc): On ]
<Send intent to the default app>
A4: Java Code [
Code: import android.content.Intent;
import android.net.Uri;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.joaomgcd.taskerm.action.java.JavaCodeException;
/* Reads a standard Tasker variable without the % prefix. */
String ev_json = tasker.getVariable("ev_json");
/* Use JavaCodeException for unmet preconditions. */
if (ev_json == null) {
throw new JavaCodeException("Required Tasker variable 'ev_json' is missing.");
}
/* Parse the JSON string stored in the Tasker variable ev_json */
JSONObject eventData = new JSONObject(ev_json);
String dateStr = eventData.getString("ev_date");
String startStr = eventData.getString("ev_start_time");
String endStr = eventData.getString("ev_end_time");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
/* Convert the date and time strings to epoch milliseconds */
long beginMs = sdf.parse(dateStr + "T" + startStr).getTime();
long endMs = sdf.parse(dateStr + "T" + endStr).getTime();
/* Setup the Intent to insert a new calendar event */
Intent intent = new Intent(Intent.ACTION_INSERT);
/* Set the standard MIME type and data URI for Android calendar events */
intent.setType("vnd.android.cursor.dir/event");
intent.setData(Uri.parse("content://com.android.calendar/events"));
/* Append all event details using putExtra */
/* Note: beginTime and endTime must be provided as Long integers (milliseconds) */
intent.putExtra("title", eventData.getString("ev_title"));
intent.putExtra("description", eventData.getString("ev_description"));
intent.putExtra("eventLocation", eventData.getString("ev_location"));
intent.putExtra("beginTime", beginMs);
intent.putExtra("endTime", endMs);
/* Treat context as a Service context. Must use FLAG_ACTIVITY_NEW_TASK when starting activities. */
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
/* Execute the intent using Tasker's context */
context.startActivity(intent);
Structure Output (JSON, etc): On ]
Task: func Groq Call
<Return the response from a Groq API call based on %par1 prompt and optional %par2 model>
A1: Anchor
<Get API key>
A2: Perform Task [
Name: func Get Credential
Priority: %priority+1
Parameter 1 (%par1): groq_api
Parameter 2 (%par2): key
Return Value Variable: %groq_api_key
Structure Output (JSON, etc): On ]
<Test prompt>
A3: Variable Set [
Name: %par1
To: in less than 20 words, give reasons to provide parameters for a function call
Structure Output (JSON, etc): On ]
If [ %par1 !Set ]
<Model default>
A4: Variable Set [
Name: %par2
To: openai/gpt-oss-120b
Structure Output (JSON, etc): On ]
If [ %par2 !Set ]
A5: Multiple Variables Set [
Names: %prompt=%par1
%model=%par2
Values Splitter: =
Structure Output (JSON, etc): On ]
<Guard against string parsing errors>
A6: JavaScriptlet [
Code: var safe_prompt = JSON.stringify(prompt);
Auto Exit: On
Timeout (Seconds): 45 ]
A7: HTTP Request [
Method: POST
URL: https://api.groq.com/openai/v1/chat/completions
Headers: Authorization: Bearer %groq_api_key
Content-Type: application/json
Body: {
"model": "%model",
"messages": [
{"role": "user", "content": %safe_prompt}
]
}
Timeout (Seconds): 30
Structure Output (JSON, etc): On ]
<Rate limit error>
A8: Flash [
Text: Error: Groq rate limit encountered
Continue Task Immediately: On
Dismiss On Click: On ]
If [ %http_response_code ~ 429 ]
<Success>
A9: Variable Set [
Name: %output_text
To: %http_data.choices.message.content
Structure Output (JSON, etc): On ]
If [ %http_response_code ~ 200 ]
<Error>
A10: Variable Set [
Name: %output_text
To: Error: %http_response_code
Structure Output (JSON, etc): On ]
If [ %http_response_code !~ 200 ]
<Testing>
A11: [X] Text/Image Dialog [
Text: %output_text
Button 1: Close
Close After (Seconds): 900 ]
A12: Return [
Value: %output_text
Stop: On ]
Total Launcher v4 removed the Dynamic Image for \*\*CPU Usage\*\*, most likely due to Android restrictions. However, if you want to restore that capability \*\*and\* use either Tasker or MacroDroid, there is a workaround. The step-by-step procedure is detailed at the [How To Display Real-Time CPU Usage in Total Launcher.](https://uitlm.com/howto/howto-tasker_macrodroid-cpu_usage)
Some apps expose useful information or controls only through a widget. WidgetRelay gives Tasker access to those widgets, without adding them to your home screen:
Read values from widgets into a Tasker variable.
Click widget elements by path, visible text, or regular expressions.
The main new feature is the Widget Updated Tasker event. It lets Tasker react when a widget, or a selected element, changes instead of repeatedly running Tasker actions. You could use it to react on status, unread count, or other widget value changes.
The Tasker actions have also been made more flexible. Widget elements can now be selected by their path, visible text, or a regular expression. So you could for example get the value that ends on °F with the regular expression /°F$/. Tasks can additionally pause or resume monitoring and control the CPU wake lock. Version 2.0 also improves reliability, including better recovery widget bindings are lost.
Help testing
Google Play requires a testing phase before public release. I’d appreciate it if a few of you could help test it.
A couple weeks ago, I was here announcing a refreshed and re-published Movement Detection Plugin for Tasker.
Today, I'm back to announce the return of my most popular plugin from years ago, Bluetooth Detection! It's fully redesigned and built for modern Android.
Like before the goal isn't to try to provide a feature Tasker lacks, it's to provide it in a more user-friendly and reliable way. Bluetooth Detection works to detect connected devices and nearby (but not connected) ones - or disconnects and "not nearby."
If you're interested in trying it out, please do. If you like it let me know. If you don't like it let me know how I can make it better. (Or even if you do!)
I know that some people really liked these plugins, and I'm glad to be able to bring them back for those users. By the way, if you had it installed before, this is a free upgrade.
I had a call I needed to make at a specific time yesterday, and I know my ADHD brain. I knew I was going to be distracted and forget to do it, or just put it off.
I made a profile that ran at that specific time yesterday to automatically call that number for me, and I'd set a separate alarm on my phone a minute before so I'd remember it was going to call and I'd have to deal with it. It worked perfectly, and I got everything taken care of.
Buuuuuuut, I forgot to go in and delete the profile when I was finished, so it called the number again today at the same time. Only this time? I wasn't anywhere around. Hell! I was actually sleeping.
So, now I'd like to know if there's a way to add an action to a task that tells it to delete the profile once the task has finished, in case I need anymore one-time automations.
My 24 Moto G power has been acting up, random reboots, and finger print reader failed. (Note I wish I could draw a number gesture on my screen to unlock but banking apps want pin security. Noté for later)
Anyway I thought Android came a long way and I thought Its back up would restore everything
I in was wrong and lost stuff.
I don't want to root my phone because some bank apps don't like that.. I have shizuku running.
I would like to have tasker back up to USB drive.
Has anyone done this or do you just use an ap that you can recommend?
I'm using Tasker version 6.7.6-beta on my Nothing 2 devices running Android 13.
For reasons that I do not want to discuss nor argue about here, I sometimes send SMS messages to myself (i.e., from my own device to my own device's phone number).
Those text messages get properly delivered, and I indeed see them in my SMS client.
However, when I set up a Tasker profile which listens for a "Received Text" event, that event never gets triggered by these SMS messages from myself to myself, even though that same event does properly get triggered by all SMS messages sent to me from other sources.
In the "Received Text" event setup, I set "Type" equal to "Any", and I tried this both with "Sender" not set, and also when specifying "Any Contact" for "Sender", which results in the text "C:ANY" appearing in the "Sender" field. Neither of these cases change the behavior of texts sent from me to myself not triggering that "Received Text" event, even though in all those cases, the message indeed gets properly delivered and shown in my SMS client.
Is there any way to configure Tasker so that these SMS messages from me to myself will indeed trigger "Received Text" events?
Or am I totally out of luck?
PS: This is not an "XY" issue, and there is only one, single thing I wish to discuss here: namely, whether or not there's a way to get SMS messages from me to myself to trigger a "Received Text" event in a Tasker profile.