|
|
|
Terminology 1.1.1
|
|
|
|
|
|
|
|
******************************************************************************
|
|
|
|
|
|
|
|
FOR ANY ISSUES, PLEASE CONSULT THEM ON
|
|
|
|
http://issues.terminolo.gy/
|
|
|
|
|
|
|
|
******************************************************************************
|
|
|
|
|
|
|
|
Requirements:
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* efl (>= 1.8.0)
|
|
|
|
* elementary (>= 1.8.0)
|
|
|
|
|
|
|
|
Please note that some features may not quite function correctly or
|
|
|
|
completely on EFL 1.8. Newer versions would be better.
|
|
|
|
|
|
|
|
Please see http://www.enlightenment.org for information on these.
|
|
|
|
|
|
|
|
This is an EFL terminal emulator with some extra bells and whistles.
|
|
|
|
|
|
|
|
Compiling:
|
|
|
|
----------
|
|
|
|
|
|
|
|
Once you have met requirements, compiling and installing is simple:
|
|
|
|
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
|
|
|
|
To build using meson:
|
|
|
|
|
|
|
|
meson build
|
|
|
|
cd build
|
|
|
|
ninja
|
|
|
|
ninja install
|
|
|
|
|
|
|
|
Note: to make terminology work with input methods in general you need:
|
|
|
|
|
|
|
|
export ECORE_IMF_MODULE="xim"
|
|
|
|
export XMODIFIERS="@im=none"
|
|
|
|
|
|
|
|
Default key controls:
|
|
|
|
|
|
|
|
Shift+PgUp = Scroll 1 page up
|
|
|
|
Shift+PgDn = Scroll 1 page down
|
|
|
|
Shift+Up = Scroll 1 line up
|
|
|
|
Shift+Down = Scroll 1 line down
|
|
|
|
Shift+Home = Scroll to the top of the backlog
|
|
|
|
Shift+End = Reset scroll
|
|
|
|
Shift+Left = switch focus to previous terminal inside a window
|
|
|
|
Shift+Right = switch focus to next terminal inside a window
|
|
|
|
Shift+Insert = Paste Clipboard (ctrl+v/c) selection
|
|
|
|
Shift+Ctrl+Insert = Paste Primary (highlight) selection
|
|
|
|
Shift+Keypad-Plus = Font size up 1
|
|
|
|
Shift+Keypad-Minus = Font size down 1
|
|
|
|
Shift+Keypad-Multiply = Reset font size
|
|
|
|
Shift+Keypad-Divide = Copy highlight to Clipboard (same as ctrl+c in gui apps)
|
|
|
|
Ctrl+PgUp = switch focus to previous terminal inside a window
|
|
|
|
Ctrl+PgDn = switch focus to next terminal inside a window
|
|
|
|
Ctrl+Shift+t = create new terminal on top of current inside window (tabs)
|
|
|
|
Ctrl+Shift+End = close the focused terminal.
|
|
|
|
Ctrl+Shift+h = toggle displaying the miniview of the history
|
|
|
|
Ctrl+Shift+Home = bring up "tab" switcher
|
|
|
|
Ctrl+Shift+PgUp = split terminal horizontally (1 term above the other)
|
|
|
|
Ctrl+Shift+PgDn = split terminal vertically (1 term to the left of the other)
|
|
|
|
Ctrl+Shift+c = copy current selection to clipboard
|
|
|
|
Ctrl+Shift+v = paste current clipboard selection
|
|
|
|
Alt+Home = Enter command mode (enter commands to control terminology itself)
|
|
|
|
Alt+Return = Paste primary selection
|
|
|
|
Alt+w = Copy selection to primary
|
|
|
|
Alt+Up = Focus the terminal above
|
|
|
|
Alt+Down = Focus the terminal below
|
|
|
|
Alt+Left = Focus the terminal on the left
|
|
|
|
Alt+Right = Focus the terminal on the right
|
|
|
|
Ctrl+Alt+Equal = Font size up 1
|
|
|
|
Ctrl+Alt+Minus = Font size down 1
|
|
|
|
Ctrl+Alt+0 = Reset font size
|
|
|
|
Ctrl+Alt+9 = Big font size
|
|
|
|
Ctrl+Alt+t = Set terminal title
|
|
|
|
Ctrl+1 = switch to terminal tab 1
|
|
|
|
Ctrl+2 = switch to terminal tab 2
|
|
|
|
Ctrl+3 = switch to terminal tab 3
|
|
|
|
Ctrl+4 = switch to terminal tab 4
|
|
|
|
Ctrl+5 = switch to terminal tab 5
|
|
|
|
Ctrl+6 = switch to terminal tab 6
|
|
|
|
Ctrl+7 = switch to terminal tab 7
|
|
|
|
Ctrl+8 = switch to terminal tab 8
|
|
|
|
Ctrl+9 = switch to terminal tab 9
|
|
|
|
Ctrl+0 = switch to terminal tab 10
|
|
|
|
|
|
|
|
Command mode commands currently understood:
|
|
|
|
|
|
|
|
f = Reset font to default setting saved in config
|
|
|
|
f+ = Increase fontsize
|
|
|
|
f- = Decrease fontsize
|
|
|
|
fb = Display big font size (10x20 bitmap, or size 20 with scalable).
|
|
|
|
gNxM = make terminal NxM chars in size (if possible). e.g. g80x48 g40x20.
|
|
|
|
If just one number is provided, it will use the following shortcuts:
|
|
|
|
g0=80x24; g1=80x40; g2=80x60; g3=80x80; g4=120x24; g5=120x40; g6=120x60;
|
|
|
|
g7=120x80; g8=120x120
|
|
|
|
b = reset the background (no media)
|
|
|
|
bPATH = set the background media to an absolute file PATH
|
|
|
|
|
|
|
|
Mouse controls:
|
|
|
|
|
|
|
|
Right mouse button = controls menu
|
|
|
|
Middle mouse button = paste highlight selection
|
|
|
|
Left mouse button/drag = make highlight
|
|
|
|
Wheel = scroll up or down in history
|
|
|
|
Ctrl+Wheel = zoom font size up/down
|
|
|
|
Ctrl+Left mouse button/drag = make block selection highlight
|
|
|
|
|
|
|
|
Extended escapes for terminology only:
|
|
|
|
|
|
|
|
[\033][}][COMMAND][\000]
|
|
|
|
i.e.
|
|
|
|
1. ESC char (\033 or 0x1b)
|
|
|
|
2. } char
|
|
|
|
3... sequence of UTF8 chars other than nul (\000 or 0x00).
|
|
|
|
4 \000 char (nul byte or 0x00 to indicate end of sequence)
|
|
|
|
e.g.
|
|
|
|
echo -n '\033}Hello world\000'
|
|
|
|
|
|
|
|
Commands:
|
|
|
|
|
|
|
|
any values inside square brackets [] are to be replaced by some
|
|
|
|
content (numbers, strings, paths, url's etc.). example:
|
|
|
|
|
|
|
|
aa[PATH-OF-FILE] should become something like:
|
|
|
|
aa/tmp/file.png
|
|
|
|
or aa[true/false] should become something like:
|
|
|
|
aatrue
|
|
|
|
or
|
|
|
|
aafalse
|
|
|
|
|
|
|
|
Themes:
|
|
|
|
|
|
|
|
Themes can be stored in ~/.config/terminology/themes/ .
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
pn[FULL-PATH-OR-URL]
|
|
|
|
= popup the given media file/url now
|
|
|
|
|
|
|
|
pq[FULL-PATH-OR-URL]
|
|
|
|
= queue a popup for the given media file/url
|
|
|
|
|
|
|
|
bt[FULL-PATH-OR-URL]
|
|
|
|
= set the terminal background media file/url temporarily
|
|
|
|
|
|
|
|
bp[FULL-PATH-OR-URL]
|
|
|
|
= set the terminal background media file/url permanently
|
|
|
|
|
|
|
|
at[on/true/yes/off/false/no]
|
|
|
|
= set the terminal alpha state to be on, or off temporarily
|
|
|
|
|
|
|
|
ap[on/true/yes/off/false/no]
|
|
|
|
= set the terminal alpha state to be on, or off permanently
|
|
|
|
|
|
|
|
qs
|
|
|
|
= query grid and font size. stdin will have written to it:
|
|
|
|
W;H;FW;FH\n
|
|
|
|
where W is the width of the terminal grid in characters
|
|
|
|
where H is the height of the terminal grid in characters
|
|
|
|
where FW is the width of 1 character cell in pixels
|
|
|
|
where FH is the height of 1 character cell in pixels
|
|
|
|
|
|
|
|
is[CW;H;FULL-PATH-OR-URL]
|
|
|
|
= insert STRETCHED media (where image will stretch to fill the cell area)
|
|
|
|
and define expected cell area to be W cells wide and H cells high,
|
|
|
|
with the image/media/url.
|
|
|
|
where C is the replace character to be identified in later text
|
|
|
|
where W is the width in character cells (up to 511).
|
|
|
|
where H is the height in character cells (up to 511).
|
|
|
|
|
|
|
|
note that this escape alone has no effect. it indicates a future
|
|
|
|
intention of inserting media into the terminal. the terminal will
|
|
|
|
EXPECT a grid of WxH "replace characters" to follow, with each
|
|
|
|
sequence of such replace characters beginning with a 'ib' escape command
|
|
|
|
and ending with an 'ie' escape command.
|
|
|
|
|
|
|
|
the FULL-PATH-OR-URL for all the i commands (is, ic, if, it) may
|
|
|
|
be of the form:
|
|
|
|
|
|
|
|
/full/path/to/file.png
|
|
|
|
|
|
|
|
OR
|
|
|
|
|
|
|
|
/full/path/to/link\n/full/path/to/file.png
|
|
|
|
|
|
|
|
where a newline character separates a URI for a link and a full
|
|
|
|
path to a file to display in the region. the link is the
|
|
|
|
destination URI when a user may click on the given media image.
|
|
|
|
|
|
|
|
example:
|
|
|
|
|
|
|
|
printf("\033}is#5;3;%s\000"
|
|
|
|
"\033}ib\000#####\033}ie\000\n"
|
|
|
|
"\033}ib\000#####\033}ie\000\n"
|
|
|
|
"\033}ib\000#####\033}ie\000\n", "/tmp/icon.png");
|
|
|
|
|
|
|
|
note that '#' is the replace character, and later '#' chars if inside
|
|
|
|
begin/end escapes, will be replaced by the given media indicated
|
|
|
|
in the insert media escape.
|
|
|
|
|
|
|
|
ic[CW;H;FULL-PATH-OR-URL]
|
|
|
|
= insert CENTERED media (centered in cell area). otherwise parameters are
|
|
|
|
identical to the "is" command, but retains aspect and is padded by
|
|
|
|
blank space.
|
|
|
|
|
|
|
|
if[CW;H;FULL-PATH-OR-URL]
|
|
|
|
= insert FILLED media (fill in cell area). otherwise parameters are
|
|
|
|
identical to the "is" command but ensures the entire area is
|
|
|
|
filled like a background even if media goes beyond cell bounds and is
|
|
|
|
clipped.
|
|
|
|
|
|
|
|
it[CW;H;FULL-PATH-OR-URL]
|
|
|
|
= insert THUMB media (thumbnail cell area). otherwise parameters are
|
|
|
|
identical to the "is" command, but uses thumbnail generation to
|
|
|
|
make a fast to load but low resolution version (cached) of the media.
|
|
|
|
|
|
|
|
it[CW;H;LINK\nFULL-PATH-OR-URL]
|
|
|
|
= insert THUMB media (thumbnail cell area). otherwise parameters are
|
|
|
|
identical to the "is" command, but uses thumbnail generation to
|
|
|
|
make a fast to load but low resolution version (cached) of the media.
|
|
|
|
LINK is a path (or url) to open WHEN the thumb is clicked on by the
|
|
|
|
user.
|
|
|
|
|
|
|
|
ij[CW;H;FULL-PATH\nGROUP][\n][cmd1][\r\n][cmd2]...
|
|
|
|
= insert EDJE object with file path given, and the group name given.
|
|
|
|
the command list (and the \n whitespace delimiter before the list)
|
|
|
|
is optional, but is executed/parsed before display of the actual
|
|
|
|
object to do things like initialize its initial state. see "iC"
|
|
|
|
command for more details on the command list.
|
|
|
|
|
|
|
|
be aware that once you have an object with an assigned channel id,
|
|
|
|
it can send back signals and messages via escapes on stdin. these
|
|
|
|
escapes will follow terminology extended escape format
|
|
|
|
(ESC + } ... \000), and the content will be one of:
|
|
|
|
|
|
|
|
;CHID\ndrag\nPART NAME\nVAL1\nVAL2
|
|
|
|
;CHID\ndrag,start\nPART NAME\nVAL1\nVAL2
|
|
|
|
;CHID\ndrag,stop\nPART NAME\nVAL1\nVAL2
|
|
|
|
;CHID\ndrag,step\nPART NAME\nVAL1\nVAL2
|
|
|
|
;CHID\drag,set\nPART NAME\nVAL1\nVAL2
|
|
|
|
signal;CHID\nSIGNAL STRING\nSOURCE STRING
|
|
|
|
message;CHID\nOPCODE ID\nstring\nSTRING1
|
|
|
|
message;CHID\nOPCODE ID\nint\nINT1
|
|
|
|
message;CHID\nOPCODE ID\nfloat\nFLOAT1
|
|
|
|
message;CHID\nOPCODE ID\nstring_set\nSTRING1\nSTRING2\nSTRING3...
|
|
|
|
message;CHID\nOPCODE ID\nint_set\nINT1\nINT2\nINT3...
|
|
|
|
message;CHID\nOPCODE ID\nfloat_set\nFLOAT1\nFLOAT2\nFLOAT3...
|
|
|
|
message;CHID\nOPCODE ID\nstring_int\nSTRING1\nINT1
|
|
|
|
message;CHID\nOPCODE ID\nstring_float\nSTRING1\nFLOAT1
|
|
|
|
message;CHID\nOPCODE ID\nstring_int_set\nSTRING1\nINT1\nINT2\nINT3...
|
|
|
|
message;CHID\nOPCODE ID\nstring_float_set\nSTRING1\nFLOAT1\nFLOAT2\nFLOAT3...
|
|
|
|
|
|
|
|
iC[CHID]\n[cmd1][\r\n][cmd2][\r\n][cmd3]...
|
|
|
|
= send a "command" (cmd1, cmd2, cmd3 etc.) to an existing named
|
|
|
|
channel id "CHID". this can be a list of 1 or more command strings,
|
|
|
|
with each string broken by a continuous sequence of 1 or more \r
|
|
|
|
and/or \n characters. e.g. "\n", "\r", "\r\n", "\n\r",
|
|
|
|
"\n\r\n\n\n", etc.
|
|
|
|
|
|
|
|
commands understood are:
|
|
|
|
|
|
|
|
text\nPART NAME\nTEXT STRING
|
|
|
|
set the text of "PART NAME" to string "TEXT STRING"
|
|
|
|
|
|
|
|
emit\nSIGNAL STRING\nSOURCE STRING
|
|
|
|
emit signal "SIGNAL STRING" "SOURCE STRING"
|
|
|
|
|
|
|
|
drag\nPART NAME\n[value|size|step|page]\nVAL1\nVAL2
|
|
|
|
manipulate dragable of name "PART NAME" and either set "value",
|
|
|
|
"size", "step" or "page" properties to "VAL1" and "VAL2" for x
|
|
|
|
and y, where VAL1 and VAL2 are floating point values
|
|
|
|
|
|
|
|
chid\nCHANNEL ID
|
|
|
|
set the channel id of a given edje object (only valid in setup
|
|
|
|
commands for the inline edje object) to "CHANNEL ID" so it can
|
|
|
|
be addressed later.
|
|
|
|
|
|
|
|
message\nOPCODE ID\n[string|int|float|string_set|int_set|...
|
|
|
|
float_set|string|int|string_float|string_int_set|...
|
|
|
|
string_float_set]\n[message data]
|
|
|
|
send a message with opcode (integer) id "OPCODE ID" og one of
|
|
|
|
the given types supported ("string", "int", "float", etc.) and
|
|
|
|
then with the given "message data" at the end. message data
|
|
|
|
format depends on message type:
|
|
|
|
string: STRING1
|
|
|
|
int: INT1
|
|
|
|
float: FLOAT1
|
|
|
|
string_set: STRING1\nSTRING2\nSTRING3...
|
|
|
|
int_set: INT1\nINT2\nINT3...
|
|
|
|
float_set: FLOAT1\nFLOAT2\nFLOAT3...
|
|
|
|
string_int: STRING1\nINT1
|
|
|
|
string_float: STRING1\nFLOAT1
|
|
|
|
string_int_set: STRING1\nINT1\nINT2\nINT3...
|
|
|
|
string_float_set: STRING1\nFLOAT1\nFLOAT2\nFLOAT3...
|
|
|
|
|
|
|
|
ib
|
|
|
|
= begin media replace sequence run
|
|
|
|
|
|
|
|
ie
|
|
|
|
= end media replace sequence run
|