736 字
4 分钟
Termux 的高级使用方法
1. 高级
我不想用 iPhone 的一大原因就是 Android 能有很多高级的操作。对了说到高级……哦不对不对。哦对的对的。哦不对。对吗?
比起使用闭源收费的 Tasker 和 Macrodroid(如果是随便找了个破解版就更加糟糕了),显然是自己搓脚本安心得多。安心です。
2. 脚本自启动
很多时候我们希望 Termux 启动的时候能够顺带启动俩服务。写进 .bashrc?我开两个窗口你就启动两次,开四个窗口启动四次,再这样下去就变成八岐大蛇了。作为须佐之男命……
有没有类似于 systemctl 的工具呢?有的兄弟有的:
安装只需要:
pkg install termux-services
那我想添加脚本自启动怎么做呢?作为函数仙人我会告诉你,先定义两个妙妙函数:
mksv() { [ -f "$1" ] && { s=$(realpath "$1"); n="${s##*/}"; n="${n%.*}"; d="$PREFIX/var/service/$n"; mkdir -p "$d/log"; ln -sf "$PREFIX/share/termux-services/svlogger" "$d/log/run"; printf "#"'!/usr/bin/env bash\nexec %s' "$s" > "$d/run"; chmod +x "$d/run" "$s"; echo -e "\n服务已创建: $n\n绝对路径: $s\n操作命令: sv up/down/status $n\n"; } || echo "用法: mksv <脚本路径>"; };
rmsv() { [ -n "$1" ] && { sv down "$1" 2>/dev/null; rm -rf "$PREFIX/var/service/$1"; echo "服务 $1 已移除"; } || echo "用法: rmsv <服务名>"; };
然后就可以一键添加脚本了:
mksv ./13t-snap-key-listener.py
sv up 13t-snap-key-listener
会自动把相对路径转换为绝对路径。请坐和放宽。
当然了你也可以手动创建,具体请看 Wiki。
mkdir -p $PREFIX/var/service/<PKG>/log
ln -sf $PREFIX/share/termux-services/svlogger $PREFIX/var/service/<PKG>/log/run
vi $PREFIX/var/service/<PKG>/run # Edit your runnable. Don't forget the Shebang!
sv up <PKG>
3. 通过 Intent 启动 Termux 脚本
有的自动化软件支持发送 Intent,而 Termux 是支持接收 Intent 并启动脚本的,前提是有权限。
首先你需要修改 Termux 的配置,允许外部应用控制 Termux:
sed -i 's/^# *allow-external-apps *=.*/allow-external-apps = true/' ~/.termux/termux.properties || echo "allow-external-apps = true" >> ~/.termux/termux.properties
然后给你想用来控制的软件授权。经过测试,控制端不需要声明 com.termux.permission.RUN_COMMAND,只需要 ADB 授权了就行。
rish -c "pm grant <com.YOUR.APP> com.termux.permission.RUN_COMMAND"
然后就能用 Intent 启动了。命令:
# 后台运行
am startservice --user 0 -n com.termux/com.termux.app.RunCommandService \
-a com.termux.RUN_COMMAND \
--es com.termux.RUN_COMMAND_PATH '/data/data/com.termux/files/usr/bin/python' \
--esa com.termux.RUN_COMMAND_ARGUMENTS '/data/data/com.termux/files/home/.shortcuts/tasks/assistant.py' \
--ez com.termux.RUN_COMMAND_BACKGROUND 'true'
# 前台运行(显示窗口)
am startservice --user 0 -n com.termux/com.termux.app.RunCommandService \
-a com.termux.RUN_COMMAND \
--es com.termux.RUN_COMMAND_PATH '/data/data/com.termux/files/usr/bin/python' \
--esa com.termux.RUN_COMMAND_ARGUMENTS '/data/data/com.termux/files/home/.shortcuts/tasks/assistant.py' \
--ez com.termux.RUN_COMMAND_BACKGROUND 'false' \
--es com.termux.RUN_COMMAND_SESSION_ACTION '0'
命令不需要高级权限,普通用户(普通软件)也能运行,只要已经用 ADB 授权。未授权会报错 Permission Denied.
如果控制端软件不支持运行命令的话,请动动你又大又漂亮的大脑,把命令的内容手动填到你那个垃圾软件的许多框框里。
在国产系统上,可能需要给予自启动和关联启动权限。
4. 一些特别软件的安装
4.1. python pillow
pip install wheel
pkg install libjpeg-turbo
LDFLAGS="-L/system/lib64/" CFLAGS="-I/data/data/com.termux/files/usr/include/" pip install Pillow
4.2. apktools
Working apktool for Termux android
5. 待补充……
正在努力更加高级中。
Loading Comment Component...
