What you are looking for looks just like a bog-standard computer interface. As in: A command-line shell.
You give it commands, it does what you want.
The only notable difference is the human-language input. But I’d make the argument that that is more of a hindrance than a feature. Because it obfuscates what functionality it actually offers, and it introduces vagueness that leads to misunderstanding.
I mean the general intention of a shell. What it was invented for.
So for normal day-to-day usage, or pre-existing functionality, I don’t mean all the complicated mess of a standard shell on a standard Unix-like OS (like Android), don’t worry. :)
So on Android, your best choice for that would probably be Termux with a very basic directory containing a bunch of simple-to-type commands to abstract away the above mentioned mess a real-world system might turn it into.
Esp. in combination with Tasker and an “Intent browser” tool, to know what things in apps you (via Termux API or Tasker) can actually control.
I’d set it up like this:
- Install Termux, Termux:API and Termux:Tasker (from F-Droid preferably).
- Run
pkg install termux-api
inside Termux.
- run
mkdir ~/bin; termux-setup-storage; termux-setup-package-manager
- Edit
.bashrc
with the command nano ~/.bashrc
and add the line echo "Available commands:"; ls -c "$HOME/bin/"
to the end. This will turn Temux into a menu-driven command tool, that automatically shows you the available commands, which you can then enter. If you want to see the list after every command, instead put the line PS1='\nAvailable commands:\n$(ls -C "$HOME/bin/")\n'"$PS1"
in its place.
- For convenience, run
nano ~/new-command; chmod +x ~/new-command
and put the following it it, then save:
#! /usr/bin/bash
read -p "Command name (without spaces or /): " command
echo "#! /usr/bin/bash" > "$HOME/bin/$command"
nano "$HOME/bin/$command"
chmod +x "$HOME/bin/$command"
echo "Available commands:"; ls -1 "$HOME/bin/"
Now you have what you want:
- Runs offline (but can go online if you ask it).
- Has text input. The “available commands”, plus any command that Linux has to offer.
- Can define new commands. With
new-command
.
- Can define alternative phrases for commands. (Add a line
alias newcommand="oldcommand"
to the end of your .bashrc
, or ln -s ~/bin/oldcommand
~/bin/newcommand` when you don’t need parameters)
- Does not have any ads whatsoever. And costs nothing.
- Of course you can support the Termux developers, if and only if you chose to do so. :)
I realize it may be considered not fitting the question. But I concur that it only does not fit in ways that would make it inferior. (Arbitrary human language processing.)
Besides: I don’t find new-command
any less natural than Hey Siri, can you define a new command for me?
. Which would be annoying with text input anyway. :)
You can also easily add Internet searching or phone calling, text messaging, device control etc, and file opening to it, with things like termux-api
and xdg-open
.
Really, people nowadays always see a command line shell as “this compilcated thing”, but you have to remember, than it is designed as an easy-to-use tool for normal end-users. It’s just that some decades back, people were expected to be smarter and this is what one considered easy. :) Also, just because you can write things in it that humans can’t read, doesn’t mean you have to. “apropos download” is a valid command on normal Linux systems. But it’s nice that you can do almost anything. Because if you need it, you need it. And a “simple” tool like Siri (or anything “smart”) just falls flat on its face in that situation. :)