IX(1): ink shell and command executor
__________________________________________________
USAGE
usage: ix [-DIn] [-l file] {file}
-D: debug
-I: debug ink
-l file: load the session from the given file
-n: dry run (don't ever save)
DESCRIPTION
Ix is a shell using the [net/ink(2)], web based, graphics
interface. It lets the user browse the file system, execute
commands, edit files, and open other ink interfaces (including
web pages and interfaces from other tools in the system).
The interface is reached on the ink port using a Web browser.
Initially, a command window is created. Other command windows and
further edits may be open using it. The words near the top are
buttons:
+o more: increases the number of columns in the page.
+o less: decreases the number of columns in the page.
+o win: opens a new command window.
+o quit: quits IX.
IX ancestors (O/live, Omero, and Acme) inspired much of the mouse
language. If you know how to use one of those, you almost know
how to use IX. Mouse buttons are named 1, 2, 3, and 4 (left to
right). Function keys (starting at F1) may be used as mouse
buttons. Function key F12 toggles debug in the browser console.
Each window is decorated with a status line. A click on the icons
shown in the line may be used to close the window, save it (only
shown if the window has unsaved changed), minimize all windows in
the same column, make the window larger, make it smaller, and
resize it to make its bottom the bottom of the column. A click on
the rest of the status line shifts the windows in the column,
moving the top window to the end of the column. Windows may be
dragged and moved to another location using button-1 on the
status line.
The status line shows a label written in black when the window is
clean. The label is written in blue when the window is dirty
(and should be saved). The status line background is shown in a
lighter color when the window has the focus, and it is darkern
when the window is not the focus.
A click with button-1 on a window sets it as the focus. However,
the keyboard follows the mouse and writes at the window under the
mouse pointer. You can type commands in a window and use another
one as the focus for them.
The width of a window depends on the number of columns and cannot
be adjusted by the user. The height of a window can be adjusted
by dragging its bottom line with the mouse.
Button-1 sets the selection. It is empty for a single click, a
word for a double click, and a long word for a tripple click. A
long word accepts more runes as word characters. A double click
on a rune that seems to delimit a range (like brackets, quotes,
etc.) selects the enclosed text. A double click at the end of the
line selects the entire line. To select more text than shown in a
window, use the scroll wheel while holding down button-1.
While holding down button-1, a click with button-2 cuts the
selected text, and a click with button-3 replaces the selected
text with a paste of the clipboard. A chick with button-4 while
holding down button-1 copies the selection into the clipboard.
Keys Command-!x!, Command-!v!, and Command-!c!, achieve the same
effect.
Commands are executed with the button-2, either with a single
click or with a selection. New edits can be looked for with the
button-3, either with a single click or with a selection. Text
search happens when using button-4, which searches for the last
text selected (perhaps at a different window) on the clicked
window. Executing a directory in a commands window changes the
dot to that directory. Executing it in a directory window
replaces the directory shown with the one executed.
For buttons 2 and 3, a click at the end of a line refers to the
whole line, a click on a word refers on the whole word, and a
click on a selection refers to the text selected. A click on a
final empty line selects the previous line.
The mouse wheel scrolls up and down the text shown in the window.
When used outside a window it scrolls the whole page (or screen).
Up and down array keys also scroll text in windows.
A thin blue line on the right of text windows depicts the
location of the text shown within the full text. The size of the
line is proportional to the percentage of text shown and its
position indicates the location of the shown text. This line
cannot be used to scroll.
The left and right arrow keys do not move the cursor, but perform
undo and redo operations.
There is no command language (although there are some builtins).
Commands executed are standard ql(1) commands, unless they are a
builtin. IX serves a standard output ink channel to all commands
executed in it. Commands with user interfaces rely on this to use
the relevant IX instance. But note how
eco http://lsub.org >[out:ink]
and similar commands can be used to output URLs, or HTML in
general, to the standard output ink and convince IX to display
external interfaces or resources. When a command outputs a file
address (or more), IX selects that address as a result, and
button-3 clicks on such selection iterates through the address
list.
Ink messages starting with exec: are understood as requests to
execute commands and display its output in a new window. Those
starting with look: are understood as requests to look for text.
The variable $look, or the file $home/lib/look, or $home/.look
are used to learn rules to execute commands when the user looks
for text.
Command windows operate like a typescript. Upon command
execution, the command output will get inserted on the line after
the end of the command. Each window operates in its own Clive
command context and may use a different name space, dot, etc.
The builtin commands are:
+o cd: changes the directory to that of the focus (if no
argument is given) or to that given.
+o pwd: print the current directory.
+o cmds: list the running commands.
+o =: print the dot (the selection of the focus).
+o n file: create a new edit for the named file.
+o w [file]: write the focus, if dirty, back to disk. If the
file name is given, it is written to that file and the edit
is updated to operate on the new name.
+o e: re-read the focus, discarding all edits, and start a new
edit.
+o d: delete the focus.
+o u: undo the last edit.
+o r: redo the last undo.
+o > cmds...: run commands using the dot as input.
+o < cmds...: run commands inserting their output at the dot.
+o |cmds...: filter the dot with commands.
+o x [expr] cmd: run command for all selections of edits
matching expr.
+o X [expr] cmd: run command for all edits matching expr.
+o
+o , cmd...: run command on the focus.
+o dump [name]: print the state of the session or dump it into
the given file name, if any.
+o load name: load the session edits dumped at the given file
name.
+o win: start a new commands window.
+o rules: reload the look rules.
All other commands are external Clive commands.
Typing Esc twice at a window clears the window. For command
windows, the text is cleared. For directory windows, the
directory is re-read. For text edits, the edits are discarded and
the on-disk text is re-read.
Text processing happens for keys supplied by the browser (which
might or might not take into account your keyboard layout and
locale settings). Nevertheless, the Alt key may be used to
compose a key by typing Alt and then one or more keys. The valid
sequences are those of Plan 9 from Bell Labs. See keyboard(3) for
a description of valid key sequences.
EXAMPLES
Open all go files under the current dir:
Type
.,~*.go
and right-click on it.
Find foo in the current edit: Type
, >gr -x foo
and middle-click on it. If you click (button-3) on one of the
addresses printed by gr, the selection is changed. If you click
on one of those selections (button-3), the next address located
by gr is looked for. If you click on one of those selections
(button-4), the next instance of selected text is looked for.
Replace foo with bar in all edits: Type
X |trex foo bar
and middle click on it.
Save everything: Type
X w
and middle click on it.
Teach IX to show manual pages and to use the OS browser to open
URLs, and teach it to open PostScript and PDF files by itself.
look='# rules for look(2), used by ix(1)
^([a-zA-Z.]+)\(([0-9]+)\)$
doc \2 \1|rf
^https://localhost
not
^(http|https)://.*$
open \0
^.*\.(ps|pdf)$
eco file://^<{path \0} '|' \0 >[out:ink]
'
ix &
SEE ALSO
+o gr(1) has many useful examples for command lines that may be
used as IX commands to perform common editing tasks.
+o cmd.look(2) for a description of look rules.
+o keyboard(3) for composing keys.
SOURCE
+o /zx/sys/src/clive/cmd/ix
__________________________________________________
User's manual. Section 1. Copyright © LSUB 2014-2016