Node module for Termux-API

Usage no npm install needed!

<script type="module">
  import termux from 'https://cdn.skypack.dev/termux';



NPM Version Dependency Status JavaScript Style Guide

Comprehensive Node.js module for Termux-API


  1. Make sure you've first installed the termux-api on your Android device from the Play store.

  2. Then install the scripts with apt install termux-api.

  3. Finally get this node module:

    $ npm install --save termux

Example usage

const api = require('termux')

if (!api.hasTermux) process.exit(1)


   .then(function (text) {
     // ...

Available methods

Every command instance has the .run() method that must be used to execute the command. It always return a Promise (eventually with results).

Method Description Parameters
.toast() Show a toast message
set the text to show .text(<str>)
show the toast for a short while .transient()
.vibrate() Vibrate your phone
set the duration in milliseconds .duration(<ms>)
force vibration even in silent mode .force()
.batteryStatus() Get the status of the device battery
.cameraInfo() Get info about device camera(s)
.cameraPhoto() Take a photo and save it to a file (JPEG format)
select the camera by ID .camera(<id>)
output photo file (NB. use an absolute path!) .outputFile(<str>)
.clipboardGet() Get the system clipboard text
.clipboardSet() Set the system clipboard text
text to copy in clipboard .text(<str>)
.contactList() Set the system clipboard text
.contactList() List all contacts
.dialog() Show a text entry dialog
dialog title .title(<str>)
hint to show when input is empty .hint(<str>)
use a textarea with multiple lines .multipleLines()
enter the input as a password .password()
.download() Download a resource using the download manager
set the resource to download .url(<str>)
title for the download request .title(<str>)
description for the download request .description(<str>)
.infraredFrequencies() Query the infrared transmitter's supported carrier frequencies
.infraredTransmit() Transmit an infrared pattern
specify the pattern to transmit as array of numbers .frequency(<Array>)
.location() Get the device location
location provider (gps/network/passive) .provider(<enum>)
kind of request to make (once/last/updates) .request(<enum>)
.notification() Display a system notification
notification content to show .content(<str>)
notification id (will overwrite any previous notification with the same id) .id(<int>)
notification title to show .title(<str>)
notification url when clicking on it .url(<str>)
notification action when clicking on button1 .button1(<str>, <str>)
notification action when clicking on button2 .button2(<str>, <str>)
notification action when clicking on button3 .button3(<str>, <str>)
notification action when tapping on it .tap(<str>)
notification action when deleting it .delete(<str>)
notification image to show .image(<path>)
makes notification unremovable, need .id .pin()
.share() share a file specified as argument
provide a file to share .file(<path>)
which action to perform on the file (edit/send/view) .action(<enum>)
content-type to use (default: guessed from file extension) .contentType(<str>)
share to the default receiver instead of showing a chooser .default()
title to use for shared content (default: shared file name) .title(<str>)
.smsInbox() List received SMS messages
show dates when messages were created .date()
limit in sms list (default: 10) .limit(<int>)
show phone numbers .showNumbers()
offset in sms list (default: 0) .offset(<int>)
.smsSend() Send a SMS message to the specified recipient number(s)
Recipient number(s), gotta be an Array .numbers(<Array>)
The SMS text .text(<str>)
.telephonyCellInfo() Get information about all observed cell information from all radios on the device
.telephonyDeviceInfo() Get information about the telephony device
.ttsEngines() Get information about the available text-to-speech (TTS) engines
.ttsSpeak() Speak text with a system text-to-speech (TTS) engine
Text to speak, passed to the engine .text(<str>)
TTS engine to use, see .ttsEngines() .engine(<id>)
language to use (may be unsupported by the engine) .language(<enum>)
pitch to use in speech (1.0 is normal) .pitch(<num>)
speech rate to use (1.0 is normal) .rate(<num>)
audio stream to use (ALARM/MUSIC/NOTIFICATION/RING/SYSTEM/VOICE_CALL) .stream(<enum>)


It uses has-termux-api to check if termux-api is installed.


Set the env DEBUG: DEBUG=termux


Rocco Musolino (@roccomuso)