~ $ishell --help

Tell the browser
what to do.

iShell is a natural-language command line for Firefox and Chrome. Press Ctrl+Space, type what you want, and the result appears in the same window before you even press Enter.

> translate espoir from fr to ja

Arguments are read as you type; language names are filled in for you.

> duck humanism

DuckDuckGo results in the preview. No new tab, no page load.

> images magnolia

A pageable grid of pictures, each one a keypress away.

01what-it-is

Commands are shortcuts for things you do on the Web every day. They cut out repetitive clicking and let you get more done, faster, with interactive results shown right where you typed.

Dozens of commands ship with the add-on, and you can write your own in JavaScript. This is the main power of this add-on. See the full list of built-in commands.

02syntax

Commands read like sentences.

A verb, an object and a few prepositions. The parser works out which word fills which role, suggests the likeliest reading as you type, and learns the ones you pick most.

> translateverb espoirobject fromprep. frsource toprep. jagoal

03commands

Built in, ready to type.

Several examples out of the dozens of commands that ship with the add-on.

man ishell →
For example
duck duck query as quoted | site Searches DuckDuckGo for your words.
images images query Browse pictures from Bing Images. Click a thumbnail to open it in a background tab.
translate translate text from language to language Translates from one language to another using Bing Translator.
history history filter for domain of day by amount Search browsing history.

Some built-in commands need an API key for their service, set in the add-on options. If the links in the iShell interface are not enough, the GitHub page explains how to get one.

04authoring

Write your own commands.

Just declare the arguments, and the parser does the rest. In the example at the right, for the command show-text hey! in popup, iShell hands hey! and popup strings straight to the command handler methods (preview and execute, only execute is implemented in the example). The command name is derived from the class name automatically!

Commands have full access to the browser WebExtension APIs and jQuery, and previews are plain HTML and CSS, so they can be as rich as you like.

command editor · show-text.js
/**
    Displays the given message as a notification
    or prints it to the browser console.

    @command
    @uuid 5BDEFC27-CA9F-4F41-85E4-8B358154E2FC
    @description An object-based command with arguments.
 */
class ShowText {
    constructor(args) { // Define arguments in the constructor.
        args[OBJECT] = {nountype: noun_arb_text, label: "message"};
        args[IN] = {nountype: ["popup", "log"], label: "destination"};
    }

    execute(args) { // Get argument values in the handler methods.
        const destination = args[IN]?.text;
        const message = args[OBJECT]?.text;

        if (destination === "log")
            console.log(message);
        else
            cmdAPI.notify(message);
    }
}

Every argument role a command can declare

to · goal from · source near · location at · time with · instrument in · format of · modifier as · alias by · cause for · subject on · dependency

Eleven prepositions, plus the nameless object that follows the verb. The highlighted three are new in iShell and were not part of the original Ubiquity.

05lineage

Ubiquity, brought back.

iShell is a WebExtensions revival of Mozilla Ubiquity, an ingenious experiment in linguistic user interfaces. It brings back its full functionality with a clean, modern, object-based authoring API.

What changed

Ubiquity let you subscribe to third-party commands that updated themselves. For security reasons iShell has no such model: you keep third-party code in the command editor yourself, using the install command.

If you can write a little JavaScript, that is all it takes to automate the Web APIs you use or to extend the browser without much effort.

Not in the original

Object-based command syntax.

More argument roles: by (cause), for (subject) and on (dependency).

Scroll through preview list items with Ctrl+↑/↓.

User commands split into categories in the editor.

Add commands to the context menu with Ctrl+Alt+Enter (Firefox).

06demo

See it in action.

A minute of iShell at work: searching without leaving the page, browsing images in the preview, translating on the fly.

Ctrl+Space.
Then just say it.