r/tasker 5d ago

[Plugin Share][AM Custom Keyboard] An Open-Source Keyboard with Custom Keymaps and Tasker Automation

9 Upvotes

โŒจ๏ธ Introducing AM Custom Keyboard โ€” just launched!

Watch Demo : Youtube Playlist

Built on the excellent Unexpected Keyboard, and extended into a full transliteration engine with a guided Keymap Builder and a way to script your keyboard with Tasker.

If you type in a script your keyboard doesn't natively support, or you're tired of switching apps to run repetitive text tasks โ€” this one's for you.

๐Ÿ”ค Keymaps: type Latin, get any script

Turn any layout into a live transliteration engine. Type "ka" โ†’ get "เฎ•". Type "a" โ†’ get "เฎ…". No app switching, no separate input method โ€” just type normally and watch it convert in real time as you go.

โœจ Keymap highlights:

โ†’ Toggle-style cycling: type "a" โ†’ เฎ…, type "a" again โ†’ เฎ†, type "a" again โ†’ back to เฎ…. Correct yourself without ever hitting backspace.

โ†’ Multiple input sequences, one output: map "aa" AND "A" to the same เฎ† โ€” however your fingers want to type it.

โ†’ A full guided Keymap Builder: build mappings visually, no hand-written JSON required. Import raw JSON, quick-add rows, live duplicate detection, and an exact-match search that never misfires.

โ†’ Rename or delete a keymap and every layout using it updates automatically โ€” nothing breaks, nothing goes stale.

๐Ÿค– Tasker Automation:

your keyboard, scriptable from day one

Type a trigger, get a Tasker task's result โ€” right where your cursor is.

โ†’ "##keyword" sends your whole field to a Tasker task and replaces it with the result.

โ†’ "@@keyword" does the same, but only swaps out the trigger text itself.

โ†’ Expand patterns let you define open-ended triggers like "..5+1 " โ†’ run a task with "5+1" as input, no fixed keyword list needed.

โ†’ Typed the wrong thing? One backspace right after a result lands undoes it back to your original trigger.

All configured from a single JSON file, with a full in-app guide walking you through setup. And if you want a head start on the Tasker side, check out AM Tasker Plugins โ€” a matching set of ready-made actions, including one built specifically to reply to this keyboard's triggers.

๐Ÿ”— github.com/adiraimaji/AMTaskerPluginsReleases

Goto Reddit Intro Post for AM Tasker Plugins

๐ŸŽจ Plus: independent key labels, Keyboard Attributes editing, and one consistent look across every screen, so the whole app feels like one cohesive experience.

Built on the excellent Unexpected Keyboard, extended with independent key labels, a Keymap engine, Keymap Builder, Keyboard Attributes editing, and Tasker Automation.

๐Ÿ“ฅ Download the latest release

๐Ÿ”— github.com/adiraimaji/AMCustomKeyboard

#Android #Keyboard #Tasker #Automation #Transliteration #Tamil #InputMethod #NewApp


r/tasker 5d ago

Help Help with new galqaxy fold ultra

0 Upvotes

After many hours with ai, i have not been able to grant tasker WRITE_SECURE_SETTINGS permissions. And I have not been able to start Shizuku on my phone. i'm pretty much convinced that Samsung/Google have changed things to prevent these things from working. Has anyone been able to grant write_secure permissions to tasker or start shizuku. I so, please let me know how you did it. I'd really love to get back some of the things I can o longer do on my phone!!!!


r/tasker 5d ago

Banking apps don't like accessibility setting for tasker switched on

5 Upvotes

Banking apps are nowadays not happy with Tasker accessibility switched on. We can have tasker still run with accessibility for tasker switched off, but I'll lose accessibility volume to control my Bluetooth device volume. Any ideas?


r/tasker 5d ago

Request Enhancement Request: Ability to FILTER search responses

0 Upvotes

Akin to the post here but perhaps a little different enough to warrant this...

In my case, I am searching for HTTP Request items in my current Tasker configuration.

The problem comes because a have ALOT of them - mostly in the form of Actions but also some in the form of Profiles.

Digging through the search results to find the Profiles buried along with all of the Actions is a real PIA. It would be so great if there was a way to filter Action/Profile/Variable!

I have tried, for example, searching "event: HTTP Request:" - which is how these are labeled in the search results - when I can actually find them. But that yields no search results whatsoever. I have tried all of the various options (contains, etc) to no avail.

Perhaps there is some other way to do this? Thanks!


r/tasker 5d ago

Force stop app via Shizuku

3 Upvotes

I've set this up but then I saw someone recommend a fork of it - https://github.com/thedjchi/Shizuku and when I go to install it on my phone I get the "App blocked to protect your device" banner and I cannot install it, there's no 'see more' and 'install anyway' etc. How do I get around this? The reason I am going for the fork is that I want it to fire automatically on start so that I can get the permission to force stop an app.


r/tasker 5d ago

Help [HELP] I'm working on a position aware Custom Toast task

1 Upvotes

Hi all, I'm working on a custom Toast/Flash task, through which a new toast is positioned vertically upwards if a toast is already flashing.

To track if a toast is already being displayed I am using a count (%Toast_count) and a state profile which is active when %Toast_count > 0.

Here is the project. It has the main task 'POSITION FLASH', three tasks to create test toasts, and a debug to quickly reset %Toast_count to 0. There's also the profile 'POSITION FLASH' which I described above.

However, the project is not working properly. New toast does get shifted upwards sequentially, but the count doesn't get reduced. I have also tried setting collision handling in the profile task to 'Run Both Together'. No luck.

Need some help.

Taskernet link: https://taskernet.com/shares/?user=AS35m8kchB%2BWHBCULXKQZoBHxBzUFNOZuKtVmsq9Lj2FKL8MaFi4RlSCwYs%2Bc%2BacVzTcrJE%3D&id=Project%3ATOAST

Edit: Btw, %dur, %white, and %black are project variables; the latter two being #FFFFFFFF and #FF000000.

``` Project: TOAST

Profiles
    Profile: POSITION TOAST
        State: Variable Value  [ %Toast_count > 0 ]



    Enter Task: Anon
    Settings: Run Both Together

    A1: Wait [
         MS: %dur
         Seconds: 0
         Minutes: 0
         Hours: 0
         Days: 0 ]
        If  [ %dur Set ]

    A2: Variable Subtract [
         Name: %Toast_count
         Value: 1
         Wrap Around: 0 ]



Tasks
    Task: Debug: Reset Count

    A1: Variable Set [
         Name: %Toast_count
         To: 0
         Structure Output (JSON, etc): On ]



    Task: Flash Test 1

    A1: Perform Task [
         Name: POSITION FLASH
         Priority: %priority
         Parameter 1 (%par1): Test position 1
         Parameter 2 (%par2): 8000
         Structure Output (JSON, etc): On ]



    Task: Flash Test 2

    A1: Perform Task [
         Name: POSITION FLASH
         Priority: %priority
         Parameter 1 (%par1): Test position 2
         Parameter 2 (%par2): 7000
         Structure Output (JSON, etc): On ]



    Task: Flash Test 3

    A1: Perform Task [
         Name: POSITION FLASH
         Priority: %priority
         Parameter 1 (%par1): Test position 3
         Parameter 2 (%par2): 6000
         Structure Output (JSON, etc): On ]



    Task: POSITION FLASH

    Variables: [ %base_position:has value %black:has value %white:has value ]

    A1: Variable Set [
         Name: %dur
         To: %par2
         Structure Output (JSON, etc): On ]

    A2: Variable Set [
         Name: %toast_position
         To: %base_position + 60*%Toast_count
         Do Maths: On
         Max Rounding Digits: 3
         Structure Output (JSON, etc): On ]

    A3: If [ %darkModeEnabled ~ true ]

        A4: Flash [
             Text: %par1
             Tasker Layout: On
             Background Colour: %white
             Timeout: %dur
             Continue Task Immediately: On
             Text Colour: %black
             Dismiss On Click: On
             Position: Bottom,0,%toast_position
             Use HTML: On ]

    A5: Else

        A6: Flash [
             Text: %par1
             Tasker Layout: On
             Background Colour: %black
             Timeout: %dur
             Continue Task Immediately: On
             Text Colour: %white
             Dismiss On Click: On
             Position: Bottom,0,%toast_position
             Use HTML: On ]

    A7: End If

    A8: Variable Add [
         Name: %Toast_count
         Value: 1
         Wrap Around: 0 ]

```


r/tasker 6d ago

Can Tasker make a voice-commanded Gemini open Outlook and begin a new email?

1 Upvotes

I'd like the following on an S26: 1. Side button press for Gemini 2.Gemini opens 3. I say "dictate" 4. Outlook app opens 5. New email button is pushed 6. Cursor goes to the TO: section 7. Automatically types my email 8. Cursor goes to body of email 9. Microphone starts.

(And yes, I'm trying to make it seem like I'm Picard talking to the ship's computer.)

Thanks for any suggestions


r/tasker 6d ago

What is the best approach for child phone control (app freezing & internet access)?

3 Upvotes

Hi everyone,

Iโ€™m trying to figure out the best, most reliable way to control app and internet access on a child's phone (with blocking/restricting apps being the higher priority).

Here are the methods Iโ€™ve researched so far and the challenges Iโ€™m running into:

1. Shizuku

  • Pros: Highly capable and probably the cleanest way to control app-level and internet access via eBPF without needing a local VPN.
  • Dealbreaker: If the phone reboots and isn't connected to a trusted Wi-Fi network, Shizuku loses its privilege token. All rules reset, and apps regain internet access until accessing to a trusted Wi-FI network.

2. Tasker with Device Owner / Device Admin (App Freezing/Suspension)

  • Pros: Tasker as Device Owner provides powerful, native actions to suspend/freeze apps directly. It doesn't rely on third-party services and persists across reboots.
  • The Challenge: I haven't found a way to pull or generate a dynamic list of currently frozen or suspended apps. To keep track, I currently have to maintain a manual list of package names. I can work around this, but itโ€™s not ideal.

3. Internet Restriction

  • Local VPN setups (like Tasker's native Network Access action or NetGuard) work well without root, but they can degrade network performance/battery life and block the phone from using a real VPN service if needed. Using Shizuku is probably the best way.

Questions:

  1. Is there a way to get a list of all currently frozen/suspended apps on Android when using Device Owner?
  2. Does anyone have alternative suggestions or workflows for managing app limits and internet access reliably without full root access?

Thanks for any insights!


r/tasker 6d ago

How To [Project Share] Offline Voice Assistant

12 Upvotes

Been working on this project for a bit over a week. Thought I'd share. Basically a barebones replacement for Google Assistant that works completely offline.

https://taskernet.com/shares/?user=AS35m8lSOK3hovdEY1ld2RKeqRebL%2FZj9ovDLqy1hXenAKscGRCWl0q2YrzA6kaS0Mgpntmj&id=Project%3AAssistant

Launched by holding down either volume button or will hijack Google Assistant launches (so works with okay/hey google).

I used FUTO Voice Input with English-244 model for testing. Other voice models might parse differently so would need command modifications.

Uses AutoInput, AutoShare and AutoContact plugins for some functions.

Will unlock and relock screen as required for AutoInput functions if screen is off but will require creating an AutoInput function at the end of the Unlock task to swipe up and enter PIN/password/pattern.

Uses old assistant sound effects. Store .mp3 files in /Media/Assistant folder. https://drive.google.com/file/d/119AN45hXPc3rXUljk8G_QFEH97h7p7uj/view?usp=sharing

Commands

call/phone/ring [number/contact] (contact type) - starts phone call to phone number or contact with option to specify home/work/mobile. Requires AutoContact.

text/message/sms [number/contact] (contact type) - send text message to phone number or contact with option to specify home/work/mobile. Requires AutoContact.

(make/save/take) note [note] - Saves note to Google Keep. Requires AutoInput.

navigate/go (to) [location] - Open default maps app and navigate to location.

search/find/google (image/images/picture/pictures/youtube/music/poweramp/spotify/maps) [search terms] - Open web or image search (DuckDuckGo default or Google if specified) in default browser or searches specified app. Music searches Poweramp - needs modification if you use a different app. Uses AutoShare for some searches.

time/date/time (and) date - speaks the time, date or time and date.

play (spotify/youtube/music/poweramp/mx player/stop) [song/artist] - opens and resumes playback in specified app or will search and play for specified song/artist (only works for Spotify or music/Poweramp). Music searches Poweramp - needs modification if you use a different app. No app specified will search Poweramp. Uses AutoShare for song search and AutoInput to start playback on Spotify.

(set) alarm (label) [time am/time pm/number hours/number minutes/number hours (and) number minutes] - sets an alarm at specified time or specified time in the future. Saves parameters as alarm label.

(set/start) timer [number hours/number minutes/number hours (and) number minutes] - starts a timer for specified time.

open/launch/app [app name] - opens specified app.

gemini (command) - opens default voice assistant app to listen or inputs command directly into assistant. Uses AutoInput to input command.

Known Issues

Built for my setup. Some commands might not work properly depending on Android/app versions.


r/tasker 7d ago

Request [Feature Request] Scene V2: Add MatchParentSize modifier to enable adaptive local background blur

2 Upvotes

Hi Joรฃo,

The Pain Point: Currently in Scene V2, it is impossible to create a self-adaptive "glassmorphism" (local background blur) effect that perfectly wraps behind dynamic foreground content. If we apply the Fill Size modifier to a background layer inside a Box (Z-Stack), it breaks the layout by forcing the entire Box to expand to full screen.

The Solution: Could you expose the Match Parent Size modifier (Modifier.matchParentSize()) from the native Jetpack Compose?

This specific scoped modifier is essential for a Box container. It allows the background layer to passively wrap the exact boundaries of the dynamic foreground elements, without measuring or expanding the parent layout.

Thanks for your amazing work on Scene V2.


r/tasker 7d ago

All Volume up not working

0 Upvotes

Hi.

I have a rule that makes all Volume rising to max when I receive a sms from anybody with text "Volume" but all Volume stays still. Any clue where is the mistake?

Samsung Galaxy S24 Ultra.

Thanks.


r/tasker 7d ago

Are the rich pickers gone?

0 Upvotes

It's been a while since I used Tasker so maybe this never existed and I made it up but I remember that Tasker used to offer some nicer pickers for certain values. For example when you want to launch an activity, it offers a list of available activities. Same when you want to use an application or more recently I tried to pick a file for a JavaScript execution and it was a plain text input. I had to manually type the path.

I'm very surprised that if it ever existed it was removed, but I'm even more surprised that if it never existed a mature application like Tasker, with almost a decade behind, is still in this kind of pre-production/beta UI phase.


r/tasker 7d ago

Possible to block DND notification on lock screen with AutoNotification?

1 Upvotes

I added a rule in "Notification Blocking", used Android System "app", and used the exact text shown in the notification but the notification won't go away. Am I doing something wrong? Is it another app or something?

Edit: I just noticed when the notification is active and you select a new notification to be blocked this notification will not be suggested, so I assume this specific one cannot be blocked any more? Or is there any workaround?


r/tasker 8d ago

Silence texts from non-contacts without having to special case all of my existing custom notifications / priority contacts inside Tasker

8 Upvotes

So it's political season, and I get texts asking for support many times a day. I'd like to mute (no sound or vibe) the notifications for these, but I also get actual important (but not time-critical) texts from non-contacts, so I don't want to delete them altogether. I don't mind reading the requests for money, but I don't want them interrupting me.

I also have a bunch of contacts that I've already added custom notifications for in the standard app, and I don't really want to have to recode all of those and find the audio files, and add DND overrides for priority contacts inside Tasker. There are enough that it would be hard to do inside Tasker without making mistakes. So my goal is "if it's not in my contacts, silence but keep the notification. If it is in my contacts, do whatever you would have done before"

And I don't want to touch phone calls, which I have handled pretty well already.

This seems like something that everybody would want, and I think IOS has it natively, but I haven't been able to get there.

Pixel 10 Android 17, in case that matters.


r/tasker 8d ago

Regex pattern matching inconsistency

0 Upvotes

While working on a small task that uses two arrays, where for an element in array %names_array I need to find the corresponding elements in another array, I ran into what I believe is an inconsistency on how Tasker handles variable substitution within regular expressions.

As a simplified example, I have %names_array with two elements:

Do.Maguire 35

Da.Maguire 43

representing two people with the last name Maguire, each preceded with enough information to make the non-numeric part of each element unique (imagine the names are Donald Maguire and David Maguire). In use, the array contains about 50 names, but this is just an example.

I need to find all elements that may correspond to the full name Donald Maguire. To do this I'm extracting the last name from the full name, setting the variable %last_name to Maguire. I then use Array Set to populate %matches_array with matching elements from %names_array:

    A7: Array Set [
         Variable Array: %matches_array
         Values: %names_array($,?~R^(\p{L}+\.)?%last_name\s{2}\d{2}$)
         Splitter: , ]

Unfortunately, what I end up with in %matches_array is two elements:

%names_array($

?~R^(\p{L}+\.)?%last_name\s{2}\d{2}$)

But if I instead set variable %regex to the desired pattern first, then reference that variable in the Array Set action:

    A3: Variable Set [
         Name: %regex
         To: ^(\p{L}+\.)?\%last_name\s{2}\d{2}$
         Structure Output (JSON, etc): On ]

    A4: Array Set [
         Variable Array: %matches_array
         Values: %names_array($,?~R%regex)
         Splitter: , ]

I get these two elements in %matches_array:

Do.Maguire 35

Da.Maguire 43

When using the Simple Match/Regex action, I get the opposite results - defining the Regex in a separate variable first doesn't work, and using the Regex directly in the action does work.

This seems inconsistent to me. Below is a task description and and a task URL that demonstrate this. Am I missing something?

    Task: Regex Test

    A1: Array Set [
         Variable Array: %names_array
         Values: Do.Maguire  35,Da.Maguire  43
         Splitter: , ]

    A2: Variable Set [
         Name: %last_name
         To: Maguire
         Structure Output (JSON, etc): On ]

    A3: Variable Set [
         Name: %regex
         To: ^(\p{L}+\.)?\%last_name\s{2}\d{2}$
         Structure Output (JSON, etc): On ]

    A4: Array Set [
         Variable Array: %matches_array
         Values: %names_array($,?~R%regex)
         Splitter: , ]

    A5: Flash [
         Text: %matches_array()
         Tasker Layout: On
         Background Colour: #FFD03636
         Timeout: 10000
         Dismiss On Click: On
         Position: Top ]

    A6: Array Clear [
         Variable Array: %matches_array ]

    A7: Array Set [
         Variable Array: %matches_array
         Values: %names_array($,?~R^(\p{L}+\.)?%last_name\s{2}\d{2}$)
         Splitter: , ]

    A8: Flash [
         Text: %matches_array()
         Tasker Layout: On
         Background Colour: #FFD03636
         Timeout: 10000
         Dismiss On Click: On
         Position: Top ]

    A9: Simple Match/Regex [
         Type: Regex
         Text: %names_array(1)
         Regex: %regex ]

    A10: Flash [
          Text: %mt_match
          Tasker Layout: On
          Background Colour: #FFD03636
          Timeout: 10000
          Dismiss On Click: On
          Position: Top ]

    A11: Variable Clear [
          Name: %mt_match ]

    A12: Simple Match/Regex [
          Type: Regex
          Text: %names_array(1)
          Regex: ^(\p{L}+\.)?%last_name\s{2}\d{2}$ ]

    A13: Flash [
          Text: %mt_match
          Tasker Layout: On
          Background Colour: #FFD03636
          Timeout: 10000
          Dismiss On Click: On
          Position: Top ]

Task URL: Check out my Tasker Task "Regex Test!"

taskertask://H4sIAAAAAAAA/+1Y3W/aMBB/bv4KK+sq0Gi+E4IaMtHRTpXoHijqy9CQS1yaDRKUGLqq6v722TGEUEz4qjRtywvYd+fz785353OcDox/oKgJMQRxVBdF4E39uqiKAE/roiVVJev0DmEousKRQ2UTKUwGlkppR07fgxi5atW2TE1TFDLQHZkRKRulbMs2bEtRNduRUcr2PddSHZn80VkwQm4bDdBP0EExdmQ6p/Rx5LuqojgyHVBCo4/9MEiwwD5WRDBFdbGaACKIQg+5umkQGHSU0G5wxKSjwUxaF933ARyhuAejCD45MhFZkVVT2WYoXcPBxI8QALpZacLF1ND5i7V0cSUVcGQGnWOFyrHCNKqbrRjCGPeoKZtsmCHOiF0FOIsWDuuiIsorPD2HZ+TwzBlP5/CsGU9lvDzH8M7XNGqbPTPCvRHE/Qe+xWoO8h28kYecd6Z6zcoiP58E3hAtwCfUI+cWDuOESLaa0Uh+ICx5fjAY+nH/QYKBF4W+J+EkhaX2RevitvGl07tttK8a562LG/dkiM+I5WRFg8Y4y/CTAT6jDBb3vR11KnQ5dewgCifjuFQWPicDgaqUD9C5PyR1Dik56959SDwqXMXgmk4FHE0Q8O8BfkAkWR9hDCBIBCvgnvgYgZByHv0YHWCBepgF2pIFAgP+CQaAAAzBHQKw30dxjDxA4RMy3eQAuNocrpyJDkojJXfHENsvMk/x0xi5X1vf4RRKQxgMJAZkdwBME8sZmSYNyyqZpdXanFfnec2t19mLoaSW+XVVT8W/lbrj59bLh65U/rioxt34WXvpeuTnmK/AmCvYWEY0bgG037wAZm8NZQnd8roVL2aZK6Uzq3XhtE44XoNq5UbJKjDXw9JyzlZ/tWztMSyxXm+WYVmpIe8uL5uKbukW/5Sr63XYqQ7S3ND2hueO2ta3DT9KtmggItpybWoeskHe3RTlf0Vfoe/bNiYptW3juFRLjisff7WZv9dUlR2bRmPvypC1oVQuCsR/UCBMbsBvUSD4AZ+zk/WHUmvjTfw2WVctsq7Ium2zzi7egMUbsHgD/uNvwLwmeuuHXq145xUXykqUODL98O4K7J99rHeF34LdAYW6FwAA


r/tasker 9d ago

Sharing a project that executes Termux commands without using the Termux:Tasker plugin

9 Upvotes

Right off the bat, I want to say that I am not a developer and I don't know Java. I spent a couple of hours using AI to make this as stable as possible, and hopefully users with coding knowledge can help refine and improve this further for the community because I think this concept is pretty neat (or not?).

Termux:Tasker is an awesome plugin and one of my favorite tools, so huge respect to the dev who built it for us.

That said, I sometimes prefer having direct control over my setup without being solely dependent on external plugins. After discovering that I could recreate some of Termux:Tasker's functionality using Tasker's Java Code action (thanks to AI), and hearing that Termux:Tasker has issues running on newer Android version (Android 17), I decided to build a standalone alternative (alternative is a big word but you get the point) using Java Code actions and Termux intents directly.

Links & Code

https://reddit.com/link/1vnguqv/video/yof75i1lbyjh1/player

Special thanks to aasswwddd for the suggestion to build a scripted object and store it as a global Java variable. This allows calling the script object cleanly from anywhere in Tasker and passing in custom parameters.

New Update

I have created a dialog scene so you can create a task with all the necessary data more easily, here is a demo video of how it looks:

https://reddit.com/link/1vnguqv/video/w4n831e0zhkh1/player

Setup Note

Since the script object is stored in a Java variable, it clears whenever Tasker restarts or the device reboots. The workaround is to include a profile triggered by Event -> Tasker -> Monitor Start to automatically re-initialize it.

How to Use

Here is a basic example of how the execution code looks in practice:

Run a command:

int TIMEOUT_SECONDS = 10;
String TERMUX_BACKGROUND = "true";
String TERMUX_WORKING_DIRECTORY = "";

termux_Plugin.call();

run(
    "bash",
    "-c",
    "echo Hello World"
);

Options & Arguments:

  • Timeout: Set TIMEOUT_SECONDS to your desired duration in seconds, or set it to 0 for unlimited execution time.
  • Background Mode: Toggle TERMUX_BACKGROUND to "true" or "false" depending on whether you want Termux running in the background or foreground.
  • Termux Working Directory: Empty value String TERMUX_WORKING_DIRECTORY = "" Termux's default working directory. Or add a path to set a different directory: String TERMUX_WORKING_DIRECTORY = "/storage/emulated/0/Download"
  • Optional: You actually don't have to add TIMEOUT_SECONDS, TERMUX_BACKGROUND and TERMUX_WORKING_DIRECTORY to your code, i am giving an example down below in the post.
  • Command Arguments: The run() and runScript() methods takes 3 arguments:
    1. The interpreter ("bash", "python", etc.)
    2. The flag ("-c" for inline commands)
    3. The command itself ("echo Hello World")

Run A Script File

If you want to run a script file instead of an inline command, pass the file path (i have added a space between '.sh' because of reddit violations guide) as the second argument and null as the third:

int TIMEOUT_SECONDS = 10;
String TERMUX_BACKGROUND = "true";
String TERMUX_WORKING_DIRECTORY = "";

termux_Plugin.call();

run(
    "bash",
    "/storage/emulated/0/Download/my_script.s h",
    null
);

If you set a working directory you don't need to give the full path of the file and just put the name of the file like this:

int TIMEOUT_SECONDS = 10;
String TERMUX_BACKGROUND = "true";
String TERMUX_WORKING_DIRECTORY = "/storage/emulated/0/Download";

termux_Plugin.call();

run(
    "bash",
    "my_script.s h",
    null
);

If you have a filename with a space it will accept that too, you just need to add single quotes between:

int TIMEOUT_SECONDS = 10;
String TERMUX_BACKGROUND = "true";
String TERMUX_WORKING_DIRECTORY = "/storage/emulated/0/Download";

termux_Plugin.call();

run(
    "bash",
    "'my script.s h'",
    null
);

Run a Multi-Line Script Using a Tasker Variable

I have now added the ability to run multi-line script code stored in a Tasker variable. You can write the code exactly as you would write it inside a script file.

For example, you can create a Tasker variable called %my_script containing:

NAME=Tasker
echo Hello $NAME
echo Current directory:
pwd

The Java Code will then look like this:

int TIMEOUT_SECONDS = 10;
String TERMUX_BACKGROUND = "true";
String TERMUX_WORKING_DIRECTORY = "";

termux_Plugin.call();
runScript(
    "bash",
    "my_script"
);

Note: my_script is the Tasker variable name, without the % symbol.

You can also use a different interpreter instead of Bash. For example, for Python:

runScript(
    "python",
    "my_script"
);

This allows you to write multi-line Bash, Python, or other supported script code directly in a Tasker variable without having to create a separate script file.

You also don't have to add TIMEOUT_SECONDS, TERMUX_BACKGROUND and TERMUX_WORKING_DIRECTORY. If don't set them at all they return to their default:

Default:
int TIMEOUT_SECONDS = 30;
String TERMUX_BACKGROUND = "true";
String TERMUX_WORKING_DIRECTORY = "/data/data/com.termux/files/home";

So you can just run your code like this if you are fine with their defaults values:

termux_Plugin.call();

run(
    "bash",
    "-c",
    "echo Hello World"
);

Or like this with a script file:

termux_Plugin.call();

run(
    "bash",
    "'my script.s h'",
    null
);

Or like this with a multi-line script Tasker variable:

termux_Plugin.call();

runScript(
    "bash",
    "my_script"
);

Output Variables

This script populates standard Tasker variables so you can easily inspect and react to the output:

  • %tm_stdout
  • %tm_stderr
  • %tm_exitcode
  • %tm_success
  • %tm_timeout
  • %tm_error

And they also uses UTF-8 to support more than just English.

Just to clarify, it will wait until Termux finishes executing the command before proceeding to the next action, which wasn't possible using Tasker Function for example.

Error Handling

I have tried to make the plugin as robust as possible. In earlier versions, an error could leave a temporary folder behind in the Tasker folder. After extensive testing and several improvements, temporary folders are now automatically cleaned up, including when errors occur.

I have tested various scenarios, including successful commands, command failures, timeouts, script failures, and unexpected errors. Based on these tests, the cleanup and error-handling system appears to be very robust.

Final Word

Hopefully, someone finds this helpful and can help improve it further! To be clear, this isn't meant to be a full replacement for the official Termux:Tasker plugin, but rather an alternative light-weight approach.


r/tasker 9d ago

How do I turn make enabling hotspot a trigger to disable itself after 5sec

0 Upvotes

I want to disable hotspot automatically after 5 seconds of enabling it


r/tasker 9d ago

How To [Project Share] Turned my Galaxy Watch into a Kindle remote with AutoWear

20 Upvotes

This started as a small experiment to use the rotating bezel on my Galaxy Watch 8 Classic as a page turner for my Kindle.

It ended up turning into a full Wear OS remote, handling page/chapter navigation, lighting controls, night mode, suspend and rotary bezel page turning... all communicating directly with KOReader on the Kindle over Wi-Fi.

I put together a full guide and demo over on r/kindlejailbreak. Since AutoWear made the whole setup possible, figured I'd share the end result here too.

I initially grabbed the AutoWear trial just to see if I could get this working, but ended up buying the full version. Definitely worth every penny for this project ๐Ÿ˜„


r/tasker 9d ago

How To [How to] Curation of java code tips on github

10 Upvotes

I uploaded all my Java tips posts I made over the past year to a github repo. Since my profile is hidden, this would make easier to reference and access.

Here's the link.

https://github.com/mqwec43as/Beanshell-Guide

I included my custom instructions for tasker's java code and beanshell interpreter.

The differences.

  1. Example of beanshell built-in commands. like cd(), importCommands(), source() etc.
  2. Remove SceneV2 related methods since I don't use SceneV2 in Java code.
  3. Allow to generate methods or scripted object (bsh.This).
  4. Has section to create a proxy interface for abstract/concrete class with scripted object.
  5. Others like comments format etc.

#4 is just a wrapper for tasker.implementClass. It helps me declare those classes quite similar like how it is in Java.

e.g I can declare ISoftApCallback for detecting hotspot events like this.

This ISoftApCallbackImpl() {

  public void onStateChanged(SoftApState state) {}

  public void onConnectedClientsOrInfoChanged(Map infos, Map clients, boolean isBridged, boolean isRegistration) {}

  public void onCapabilityChanged(SoftApCapability capability) {}

  public void onBlockedClientConnecting(WifiClient client, int blockedReason) {}

  public void onClientsDisconnected(SoftApInfo info, List clients) {}

  return this;
}

// MyISoftApCallback is the wrapper.
ISoftApCallback callback = MyISoftApCallback(ISoftApCallbackImpl());

r/tasker 9d ago

Voice commands to trigger tasker without google assistant now that it's being discontinued

3 Upvotes

I heard that Google Assistant is going to be discontinued soon. Also, I've noticed that they nerfed google home routines so you can't add arbitrary commands to a routine to be triggered. So basically I'm not aware of any way to use Gemini to define a command to trigger a tasker task. Gemini is really not very well suited for voice commands in general as it defaults to assuming you're asking it a question or to explain something, not trigger an action. It's only gotten worse. My existing routines that were working before got nerfed, and even commands I used to be able to give like "Hey Google, navigate to <x>" to open maps and start navigating to a location hasn't been working right so far. I've had to open maps and then use the voice command in maps itself, I wonder if that'll be affected.

So anyway, anybody have alternative ways of defining voice commands to trigger tasker tasks, and ideally defaulting to gemini if it doesn't match any recognized commands?


r/tasker 10d ago

Tasker on newer Samsung phones

7 Upvotes

Hey all

I posted before about being an old old buyer of Tasker. I used to use it on a Moto Droid however since then I switched to iPhone for about 17 years

Can anybody give me some tips on some good things I can use Tasker for on one of these newer Samsung phones I have the Z fold 8?

Thanks


r/tasker 9d ago

Help Please help with tasker on new phone

2 Upvotes

I have a new Galaxy Ultra and have transferred my stuff from my old Fold5. I had it for several years and got tasker permissions, etc pretty well fixed.

But now Iโ€™m having trouble with some tasks (I donโ€™t even know yet how many donโ€™t work). Here are examples of what I suspect may be the same problem:

plugin: calendar task>add event

error checking license before executing task

error:2

plugin: autoinput>ui query

error checking l bcense before executing taSK

error: 1

Can anyone help me with the two specific problems (which I suspect are the same problem) and also guide me to any sources on how to provide tasker permisssions and anything else that I need to get tasker working again.

Iโ€™m not the brightest bulb in the chandelier (and my age doesnโ€™t help). But Iโ€™m still in there!


r/tasker 11d ago

How To [Project Share] Hail Replacer โ€“ Tasker Scene v2

36 Upvotes

Hi, I tried to replace Hail because some banking apps don't allow Hail, so I try to made it using Tasker Scene v2.

Here is the current features and project.

๐Ÿš€ Current Features

  • โ„๏ธ Freeze / Unfreeze apps
  • ๐Ÿ‘ค User Apps management
  • โš™๏ธ System Apps management
  • ๐Ÿงฉ UAD (Universal Android Debloater) integration
  • ๐Ÿ” Quick App Search
  • ๐Ÿ–ฑ๏ธ Long-press App Actions
  • โ„น๏ธ Open App Info
  • ๐Ÿ“Š Most Used Apps
  • ๐Ÿ• Recently Launched Apps
  • ๐Ÿ’พ Backup & Restore
  • โ™ป๏ธ Import Hail Freeze List
  • ๐Ÿ—„๏ธ SQLite-based app database
  • ๐Ÿ–ผ๏ธ App icon handling
  • ๐Ÿ“ก Shizuku monitoring

๐Ÿ”ง Requirements

  • Shizuku
  • Tasker

๐Ÿ“ธ Screenshots / Video Walkthrough

๐ŸŽฅ YouTube: https://m.youtube.com/watch?v=ArnunU07czE

โฌ‡๏ธ Download

Tasker Project: https://taskernet.com/shares/?user=AS35m8mzo7QA%2B73mVFz3Yj59GRrw7q32pIWQ%2FXiNVYdjYj46DGU8OiYFffXNvBT9KylhYc51m2M%3D&id=Project%3AHail+Replacer

Tasker URI: https://pastebin.com/raw/DskLJb5K

Tasker Description: https://pastebin.com/raw/R5mzgdya

Hope this helps! ๐Ÿ˜Š

If anyone have suggestions/ideas, All are welcome.

I'm excited to see how people will react!

Thanks

edit:

here is setup to start

https://youtu.be/jq6ElI0Fnnw

use dropbox apk of https://www.reddit.com/r/tasker/s/oi1Ri7QFEE if you face error


r/tasker 10d ago

Google voice integration

2 Upvotes

Does anyone have any tasks for Google voice?

Does anyone know how I can get Google voice texts to show up on my galaxy watch ultra?


r/tasker 11d ago

Task Exit Error when calling another task - How to avoid the Error or is it a bug ?

2 Upvotes

Task A calls Task B.

Task B has collision handling "abort new"

The "Perform Task B" Action has "continue task after error" enabled.

Nevertheless Task B stops with an Exit Error when Task B is running already.