Termux:Tasker

Termux:Tasker

Termux, please

Всем привет, в поисках контента для вас наткнулся на одно очень интересное дополнение для термукс, с помощью него мы сможем выполнять скрипты, или иные команды по расписанию, или при определенных условиях.

Tasker - это отдельное приложение. Его вам придется изучить самостоятельно. Документации просто море.

https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm

Termux:Tasker - это плагин в одну сторону от Tasker к Termux. То есть Tasker должен словить какой-то сигнал или событие, чтобы вызвать скрипт из termux

Основная часть

1) Допустим нам нужно, запустить какой-то скрипт в сессии termux-a. Для этого нужен какой-то профиль на который среагирует Tasker. В данном случае я выбрал тряску.

1 Заходим в вкладку PROFILES, нажимаем + -> Event -> Sensor -> Shake

Получаем:

2 Тут нас все устраивает, нажмем на <-

3 Нам предлагают создать действие. Назовем его script.

Тут нам предлагают создать последовательность действий, нам нужно только одно запустить скрипт.

Жмем + -> Plugin -> Termux:Tasker -> Ждем на карандаш рядом с Configuration.

4 Перед нами сам плагин. Все интуитивно понятно.

Скрипт должен лежать в ~/.termux/tasker (можно не давать права на исполнение, плагин это сделает сам)

У скрипта аргументов нет, поэтому ничего не пишем. Выбираем Execut in a terminal session , т.к. нужна именно сессия терминала, а не task.

5 Трясем телефон. И вот поздравление для тех у кого снег идет в апреле...

2) Теперь попробуем создать аналог termux-volume из пакета termux-api ( https://glow.li/technology/2016/4/03/pass-variables-from-termux-to-tasker/ посмотрите, будет полезно)

Тут будем использовать широковещательный интент.

Создадим скрипт volume.sh

#!/data/data/com.termux/files/usr/bin/sh
#am broadcast --user 0 -a net.dinglish.tasker.[task name] -e [variable name] "[value]" > /dev/null
am broadcast --user 0 -a net.dinglish.tasker.volume -e volume "$1" > /dev/null

Этот скрипт на dash (в termux-e sh это ссылка на dash, можно использовать и bash). Об этом говорит первая строчка

На второй строке в комментарии приведен пример.

am - activity manager Менеджер окон, если особо не вдаваться.
broadcast - аргумент, который говорит am, что это широковещательный интент
--user 0 - интент будет виден только пользователю root (можно вообще не давать этот аргумент, тогда отошлет всем пользователям)
-a net.dinglish.tasker.[task name] - действие. Вместо [task name] любое слово совпадающее c [variable name] (Хоть это и широковещательный интент, будем использовать имя пакета tasker-a, вдруг откликнется кто-то еще)
-e [variable name] "[value]" - вместо [value] ставим какое-то свое значение. Значение должно быть строкой, поэтому ставим ""
> /dev/null - > перенаправление вывода в /dev/null - черная дыра, которая засосет все, что вы ей дадите. ( Это нужно, чтобы скрыть вывод команды, очень часто встречается в таких скриптах.)

Третья строка сама команда.

$1 - значение первого аргумента ( ./volume.sh 10 в $1 лежит 10)

Скрипт готов идем в Tasker.

1 Создаем профиль, который реагирует на широковещательный интент.

Event -> System -> Intent Reseived В поле action вводим: net.dinglish.tasker.volume и нажимаем <-

2 Нас просят добавить задачу. Назовем ее vol.

Жмем на + -> Audio -> Media Volume

3 Перед нами окно, где нас интересует только 2 поля. level - громкость от 1-15 и if условие при котором сработает это действие. (В новой версии можно напрямую передавать level, но тут мы ограничимся только условием. Когда volume, который мы передали из интета равен (eq) 8. Помним, что в интенте передавалась строка.)

Выходим <- и тестируем.

Дальше только ваша фантазия. В новых версиях Tasker-a можно создавать свои переменные. Еще есть "сцены" scenes, которые позволят создать графическое представление для вашего скрипта.

НАШИ ПРОЕКТЫ


Report Page