User Tools

Site Tools


doc:appunti:android:termux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:android:termux [2019/10/24 10:33] – [termux-job-scheduler] niccolodoc:appunti:android:termux [2023/08/25 18:59] (current) – [Pacchetti da installare] niccolo
Line 3: Line 3:
 Emulatore terminale per Android e collezione di pacchetti GNU/Linux-like. Dopo aver installato l'emulatore è possibile installare con il comando **apt** diversi pacchetti con i tool da riga di comando più famosi (rsync, ssh, ecc.). Emulatore terminale per Android e collezione di pacchetti GNU/Linux-like. Dopo aver installato l'emulatore è possibile installare con il comando **apt** diversi pacchetti con i tool da riga di comando più famosi (rsync, ssh, ecc.).
  
-  * **Termux** +  * **Fondamentali** 
-  * **Termux:Widget** (a pagamento sul Google Play Store, libero su F-Droid) +    * **Termux** - Progamma terminale. 
-  * **Termux:API**+    * **Termux:Widget** - Consente di creare un menu sul desktop per avviare script e task Termux (a pagamento sul Google Play Store, libero su F-Droid). 
 +    * **Termux:API** - Consente di accedere ad alcune API Android ad esempio per ottenere la posizione GPS, inviare SMS, ecc. 
 +  * **Opzionali** 
 +    * **Termux:Styling** - Consente di personalizzare l'aspetto del terminale con schemi di colori e font (a pagamento sul Google Play Store, libero su F-Droid). Per cambiare lo stile: long-press in una finestra di terminale, //Moore// => //Style//.
  
 Il pacchetto Termux:Widget è particolarmente utile perché consente di aggiungere sul desktop un menu con un elenco di comandi eseguibili con un tap. Ogni voce di menu corrisponde ad uno script di shell installato in una apposita directory. Il pacchetto Termux:Widget è particolarmente utile perché consente di aggiungere sul desktop un menu con un elenco di comandi eseguibili con un tap. Ogni voce di menu corrisponde ad uno script di shell installato in una apposita directory.
Line 15: Line 18:
 ===== Directory ===== ===== Directory =====
  
-^ /data/data/com.termux/files/                  | Praticamente è il **root filesystem** per l'ambiente Termux. L'installazione di pacchetti aggiuntivi, script utente, ecc. avviene in questa directory. Eliminando i dati della app Termux (da //Impostazioni// => //App// => //Termux// => //Spazio di archiviazione//) si elimina il contenuto di questa directory, ripristinando l'ambiente Termux al suo default. +^ /data/data/com.termux/files/  | Praticamente è il **root filesystem** per l'ambiente Termux. L'installazione di pacchetti aggiuntivi, script utente, ecc. avviene in questa directory. Eliminando i dati della app Termux (da //Impostazioni// => //App// => //Termux// => //Spazio di archiviazione//) si elimina il contenuto di questa directory, ripristinando l'ambiente Termux al suo default. 
-/data/data/com.termux/files/usr/local/bin/    | Script utente, impostare **mode 700**. +^ .../files/usr/local/bin/  | Script e programmi utente, ai quali è necessario impostare il **mode 700**. 
-/data/data/com.termux/files/home/.shortcuts/  | Ogni script installato in questa directory diviene una entry nel menu Termux Widget. +^ .../files/home/.shortcuts/  | Ogni script installato in questa directory diviene una entry nel menu Termux Widget. 
-^ /data/data/com.termux/files/home/.ssh/        | Configurazione ssh utente termux (chiave RSA pubblica/privata, ecc.)  |+.../files/home/.shortcuts/tasks/  | Come per la directory precedente, ma lo script viene eseguito in background, senza un terminale. 
 +^ .../files/home/.ssh/  | Configurazione ssh utente termux (chiave RSA pubblica/privata, ecc.)  |
  
 ===== Gestione pacchetti ===== ===== Gestione pacchetti =====
Line 72: Line 76:
  
   * **openssh** Server ssh. Questo è il primo pacchetto da installare, usando una sessione Termux direttamente sullo schermo del dispositivo Android. Dopo aver installato questo sarà possibile **accedere più comodamente** al dispositivo da un comune PC, **via ssh**, sfruttando il port forward di ADB (vedia più avanti).   * **openssh** Server ssh. Questo è il primo pacchetto da installare, usando una sessione Termux direttamente sullo schermo del dispositivo Android. Dopo aver installato questo sarà possibile **accedere più comodamente** al dispositivo da un comune PC, **via ssh**, sfruttando il port forward di ADB (vedia più avanti).
-  * **mc** **vim** **rsync** **wget** Sono i generici tool Unix, indispensabili.+  * **mc** **vim** **rsync** **wget** **file** **which** Sono i generici tool Unix, indispensabili.
   * **python** Linguaggio di programmazione, alternativa agli script shell. FIXME C'è da verificare quanto siano più onerosi in termini computazionali rispetto agli script shell.   * **python** Linguaggio di programmazione, alternativa agli script shell. FIXME C'è da verificare quanto siano più onerosi in termini computazionali rispetto agli script shell.
   * **termux-api** Comandi per interfacciarsi con i servizi Android, ad esempio ''termux-location'' per accedere ai dati GPS, ''termux-camera-photo'' per scattare foto, ''termux-microphone-record'' per registrare audio, ecc.   * **termux-api** Comandi per interfacciarsi con i servizi Android, ad esempio ''termux-location'' per accedere ai dati GPS, ''termux-camera-photo'' per scattare foto, ''termux-microphone-record'' per registrare audio, ecc.
 +  * **figlet** Consente di creare scritte grandi in ASCII art, utili per un output leggibile sul piccolo schermo.
 +===== Personalizzazione terminale =====
 +
 +==== Tasto back ====
 +
 +È possibile configurare l'azione eseguita dal **tasto Back Android**: l'opzione predefinita è **nascondi tastiera on-screen**, un'ulteriore pressione esegue il **lascia applicazione**.
 +
 +È possibile in alternativa associarlo al tasto **ESC** che viene quindi processato dall'applicazione in esecuzione in Termux. Per avere questa configurazione si deve modificare il file **$HOME/.termux/termux.properties** (se non esiste bisogna crearlo):
 +
 +<file>
 +###############
 +# Back key
 +###############
 +
 +### Send the Escape key.
 +back-key=escape
 +
 +### Hide keyboard or leave app (default).
 +# back-key=back
 +</file>
 +
 +Altre impostazioni configurabili nel file sono documentate in **[[https://wiki.termux.com/wiki/Terminal_Settings|Terminal Settings]]**.
 +
 +==== Touch Keyboard ====
 +
 +È possibile aggiungere dei tasti touch al bordo dello schermo, che si aggiungono alle possibilità offerte dalla tastiera on-screen. L'impostazione predefinita mostra i seguenti tasti:
 +
 +<file>
 +extra-keys = [[ESC, TAB, CTRL, ALT, {key: '-', popup: '|'}, DOWN, UP]]
 +</file>
 +
 +La personalizzazione va fatta nel file **$HOME/.termux/termux.properties**. In questo esempio si aggiunge un tasto per nascondere/visualizzare la soft-keyboard e si toglie il tasto **%%minus%%**/**%%pipe%%**.
 +
 +<file>
 +extra-keys = [[KEYBOARD, ESC, TAB, CTRL, ALT, DOWN, UP]]
 +</file>
 +
 +I tasti che è possibile attivare sono elencati nella pagina **[[https://wiki.termux.com/wiki/Touch_Keyboard|Touch Keyboard]]**.
 +
 +Dopo aver modificato il **termux.properties** si deve eseguire **termux-reload-settings**.
 +
 +==== Full screen ====
 +
 +È possibile attivare la modalità **full immersive** per cui viene nascosta la barra superiore Android e gli eventuali tasti software inferiori (back, menu, indietro). È necessario eseguire nel terminale il seguente comando con i permessi dell'**utente adb shell** oppure dentro la sessione Termux sono necessari i permessi di **su**:
 +
 +<code>
 +settings put global policy_control immersive.full=com.termux
 +</code>
 +
 +Le impostazioni diventano **immediatamente effettive**.
 +
 +Per impostare la modalità immersive per più di una app, queste vanno specificate separate da virgole:
 +
 +<code>
 +settings put global policy_control immersive.full=com.package.one,com.package.two
 +</code>
 +
 +Per vedere quali app hanno la modalità immersive:
 +
 +<code>
 +settings get global policy_control
 +</code>
 +
 +Per rimuovere l'impostazione si esegue:
 +
 +<code>
 +settings delete global policy_control
 +</code>
 +
 +==== Tastiera fisica ====
 +
 +Se si usa una tastiera esterna (es. Bluetooth) si possano utilizzare alcune scorciatoie elencate nella pagina **[[https://wiki.termux.com/wiki/Hardware_Keyboard|Hardware Keyboard]]**:
 +
 +^ Ctrl-Alt-C              | Create new session  |
 +^ Ctrl-Alt-R              | Rename session  |
 +^ Ctrl-Alt-[1-9]          | Switch to session number |
 +^ %%Ctrl-Alt-[DOWN|UP]%%  | Next/Previous session, use also **N** and **P** keys  |
 +^ %%Ctrl-Alt-[+|-]%%      | Increase/decrease text size  |
 +^ Ctrl-Alt-RIGHT          | Open drawer  |
 +^ Ctrl-Alt-LEFT           | Close drawer  |
 +^ Ctrl-Alt-M              | Show menu  |
 +^ Ctrl-Alt-U              | Select URL  |
 +^ Ctrl-Alt-V              | Paste  |
  
 ===== Accesso alla SD Card ===== ===== Accesso alla SD Card =====
  
 L'installazione predefinita non concede automaticamente a Termux il permesso di accedere allo storage Android (SD Card). Modificare da //Settings// => //Apps// => //Termux// => //Permissions//. In questo modo sarà possibile nella shell Termux accedere al contenuto di **/sdcard/** ecc. L'installazione predefinita non concede automaticamente a Termux il permesso di accedere allo storage Android (SD Card). Modificare da //Settings// => //Apps// => //Termux// => //Permissions//. In questo modo sarà possibile nella shell Termux accedere al contenuto di **/sdcard/** ecc.
 +
 +Per comodità in una shell Termux si può eseguire il comando **[[https://wiki.termux.com/wiki/Termux-setup-storage|termux-setup-storage]]** che provvede a richiedere il permesso di accesso ai file multimediali e a creare i seguenti link simbolici:
 +
 +  * $HOME/storage/dcim  -> /storage/emulated/0/DCIM/
 +  * $HOME/storage/downloads -> /storage/emulated/0/Download/
 +  * $HOME/storage/movies -> /storage/emulated/0/Movies/
 +  * $HOME/storage/music -> /storage/emulated/0/Music/
 +  * $HOME/storage/pictures -> /storage/emulated/0/Pictures/
 +  * $HOME/storage/shared -> /storage/emulated/0/
 +
 +Se qualcosa non funziona (errore ''Permission denied''), provare a rimuovere il permesso **File e contenuti multimediali** e assegnarlo nuovamente (problema conosciuto con Android 11).
 +
 +
 ===== Esecuzione script: "Permission denied" ===== ===== Esecuzione script: "Permission denied" =====
  
Line 105: Line 205:
 chcon "u:object_r:app_data_file:s0:c512,c768" pippo2 chcon "u:object_r:app_data_file:s0:c512,c768" pippo2
 </code> </code>
-===== Script .shortcuts =====+===== Termux:Widget e script .shortcuts ===== 
 + 
 +Vedere il wiki **[[https://wiki.termux.com/wiki/Termux:Widget|Termux:Widget]]**.
  
 Ecco un esempio di script da eseguire tramite Termux Widget. È sufficiente crearlo nella directory **/data/data/com.termux/files/home/.shortcuts/**: Ecco un esempio di script da eseguire tramite Termux Widget. È sufficiente crearlo nella directory **/data/data/com.termux/files/home/.shortcuts/**:
Line 231: Line 333:
  
 FIXME: Quando si imposta un JobScheduler, lo script viene eseguito immediatamente una prima volta? O la prima volta viene eseguito alla scadenza del periodo? Si è sperimentato che a volte accade il primo caso, a volte il secondo. FIXME: Quando si imposta un JobScheduler, lo script viene eseguito immediatamente una prima volta? O la prima volta viene eseguito alla scadenza del periodo? Si è sperimentato che a volte accade il primo caso, a volte il secondo.
 +
 +FIXME: Nella documentazione della JobScheduler class (vedi sopra) si legge //While a job is running, the system holds a wakelock on behalf of your app//. È vero anche per i job eseguiti dal termux-job-scheduler? Dalla notifica che appare durante l'esecuzione pare di no, perché compare l'opzione //Acquire wakelock//.
  
 <code> <code>
Line 237: Line 341:
 Pending Job 0: /data/data/com.termux/files/home/bin/script  (periodic: 901000ms) (battery not low) Pending Job 0: /data/data/com.termux/files/home/bin/script  (periodic: 901000ms) (battery not low)
 </code> </code>
 +
 +Sembra che **non sia possibile specificare parametri** aggiuntivi da passare allo script.
  
 È possibile impostare alcuni flag per limitare l'esecuzione in base a vari parametri: **network**, **battery-not-low**, **charging**, etc. Vedere in proposito **%%termux-job-scheduler --help%%**. È possibile impostare alcuni flag per limitare l'esecuzione in base a vari parametri: **network**, **battery-not-low**, **charging**, etc. Vedere in proposito **%%termux-job-scheduler --help%%**.
Line 246: Line 352:
 {{termux-jos-scheduler-notification.png?nolink&280|}} {{termux-jos-scheduler-notification.png?nolink&280|}}
  
- +Per poter **cancellare un job in base al suo ID** è necessario avere almeno **Android 7.0 Nougat**, altrimenti è necessario cancellare tutti i job.
-Per poter **cancellare un job in base al suo ID** è necessario avere almeno **Android Nougat**, altrimenti è necessario cancellare tutti i job.+
 ==== termux-telephony-cellinfo ==== ==== termux-telephony-cellinfo ====
  
doc/appunti/android/termux.1571906001.txt.gz · Last modified: 2019/10/24 10:33 by niccolo