TERMINOLOGY(1)
πΈ TERMINOLOGY(1) πΈ
okay bestie, gather round, because this is the manual page for terminology β that's section 1 of the manual, the user commands zone π
β and she's a whole personality. Let's get into it.
β¨ NAME β¨
Terminology β a Terminal Emulator written with EFL (Enlightenment Foundation Libraries). π¦
β¨ SYNOPSIS β¨
terminology [options]
β¨ DESCRIPTION β¨
So this is an EFL terminal emulator with some extra bells and whistles, and I mean that literally, she has SO many features. Split terminal support? yes. Support for tabs? obviously. Preview icons for files? she ate. and so on and so on, the list is giving main character energy π
β¨ OPTIONS β¨
-e,--exec <cmnd>β tell her which command to execute. Defaults to$SHELL(or the passwd shell, or/bin/sh). When you use this along with-S/--split, each argument gets used as a command for a split, leaving away the extra arguments. Say you've got 3 splits β one vertical, a command on the right, and an horizontal split on the left with only a command on the bottom β then the arguments you want go like this:
--split v-h-- -e command1 $SHELL command2
-d=CURRENT-DIRECTORY,--current-directory=CURRENT-DIRECTORYβ change to this directory for execution of the terminal command. Type: STR.-t=THEME,--theme=THEMEβ use the named edje theme, or a path to a theme file. Type: STR.-b=BACKGROUND,--background=BACKGROUNDβ use the named file as a background wallpaper for terminology. Type: STR.-g=GEOMETRY,--geometry=GEOMETRYβ the terminal geometry to use (like80x24or80x24+50+20etc.). Type: STR.-n=NAME,--name=NAMEβ set the window name. Type: STR.-r=ROLE,--role=ROLEβ set the window role. Type: STR.-S=vh-,--split=vh-β terminology can start with splits opened, as described below. The arguments are a string with these characters in it:-S vsplits terminal vertically-S hsplits horizontally-defines a placeholder for a shell or a command when used with--exec/-e- Examples:
______
| | |
$ terminology -S v |__|__|
______
|_____|
$ terminology -S h |_____|
______
|__| |
$ terminology -S vh |__|__|
______
| |__|
$ terminology -S v-h |__|__|
______
$ terminology -S vh--h |__|__|
hv--v |__|__|
- Type: STR.
-T=TITLE,--title=TITLEβ set the window title. Type: STR.-i=ICON-NAME,--icon-name=ICON-NAMEβ set the icon name. Type: STR.-f=FONT,--font=FONTβ set the font (NAME/SIZEfor scalable,NAMEfor bitmap). Type: STR.-l=LOGIN,--login=LOGINβ run the shell as a login shell. Type: BOOL.-m=VIDEO-MUTE,--video-mute=VIDEO-MUTEβ set mute mode for video playback. Type: BOOL.-c=CURSOR-BLINK,--cursor-blink=CURSOR-BLINKβ set cursor blink mode. Type: BOOL.-G=VISUAL-BELL,--visual-bell=VISUAL-BELLβ set visual bell mode. Type: BOOL.-F,--fullscreenβ go into fullscreen mode from the start.-I,--iconicβ go into an iconic state from the start.-B,--borderlessβ become a borderless managed window.-O,--overrideβ become an override-redirect window.-M,--maximizedβ become maximized from the start.-W,--nowmβ run terminology without a wm.-H,--holdβ don't exit when the command process exits.-s,--singleβ force single executable if multi-instance is enabled..-2,--256colorβ setTERMtoxterm-256colorinstead ofxterm.--active-links=ACTIVATE-LINKSβ whether to highlight links. Type: BOOL.--no-wizardβ do not display the wizard on start up. Type: BOOL.--scale=SCALEβ scaling factor to use on the UI. Type: DOUBLE.--colorscheme=COLORSCHEMEβ use the named color scheme. Type: STR.-V,--versionβ show program version.-C,--copyrightβ show copyright.-L,--licenseβ show license.-h,--helpβ show this message.
π CONTROLS / SHORTCUTS π
Shift+PgUpβ scroll terminology one page up.Shift+PgDnβ scroll terminology one page down.Shift+Upβ scroll terminology one line up.Shift+Downβ scroll terminology one line down.Shift+Homeβ scroll terminology to the top of the backlog.Shift+Endβ reset scroll in terminology.Shift+Leftβ switch focus to the previous terminal inside a window when using splits, or the previous tab.Shift+Rightβ switch focus to the next terminal inside a window when using splits, or the next tab.Shift+Insertβ paste Clipboard (ctrl+v/c) selection.Shift+Ctrl+Insertβ paste Primary (highlight) selection.Shift+Keypad-Plusβ font size up by one unit.Shift+Keypad-Minusβ font size down by one unit.Shift+Keypad-Multiplyβ reset font size.Shift+Keypad-Divideβ copy highlight to Clipboard (same asctrl+cin gui apps).Ctrl+PgUpβ switch focus to the previous terminal inside a window when using splits, or the previous tab.Ctrl+PgDnβ switch focus to the next terminal inside a window when using splits, or the next tab.Ctrl+Shift+hβ toggle displaying the miniview of the history.Ctrl+Alt+tβ set tab's title.Ctrl+Shift+tβ create a new terminal on top of current inside window (tabs).Ctrl+Shift+nβ launch new terminology.Ctrl+Shift+Endβ close the current terminal.Ctrl+Shift+Homeβ bring up the "tab" switcher.Ctrl+Shift+PgUpβ split terminal horizontally (one terminal above the other).Ctrl+Shift+PgDnβ split terminal vertically (one terminal to the left of the other).Alt+Homeβ enter command mode (enter commands to control terminology itself).Alt+Returnβ paste primary selection.Alt+gβ Group input: send input to all visible terminals in the window.Alt+Shift+gβ Group input: send input to all terminals in the window.Alt+wβ Copy selection to primary.Alt+Upβ Focus the terminal above.Alt+Downβ Focus the terminal down.Alt+Leftβ Focus the terminal on the left.Alt+Rightβ Focus the terminal on the right.Ctrl+Shift+cβ copy current selection to clipboard.Ctrl+Shift+vβ paste current clipboard selection.Ctrl+1throughCtrl+0β switch to terminal tab 1 through 10.Ctrl+Alt+Equalβ increase font size. Note that it works on scalable fonts only.Ctrl+Alt+Minusβ decrease font size. Note that it works on scalable fonts only.Ctrl+Alt+0β reset font to default setting saved in config.Ctrl+Alt+9β display big font size (10x20 bitmap, or size 20 with scalable).
π±οΈ MOUSE CONTROLS π±οΈ
- Right mouse click β bring up controls menus.
- Middle mouse click β paste highlight selection.
- Left mouse click/drag β make a selection highlight.
- Ctrl + Left mouse click/drag β make a block selection.
- Wheel β scroll up or down in history.
- Ctrl + Wheel β zoom font size up/down.
π COMMAND MODE COMMANDS π
To enter command mode in terminology, press Alt+Home. Currently command mode understands the following commands:
fβ reset font to default setting saved in config.f+β increase font size. Note that it works on scalable fonts only.f-β decrease font size. Note that it works on scalable fonts only.fbβ display big font size (10x20 bitmap, or size 20 with scalable).gNxMβ make terminalNxMchars in size (if possible). e.g.g80x48g40x20. 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=120x120bβ reset the background (no media).bPATHβ set the background media to an absolute file PATH.
π THEMES: π
Apart from the ones shipped with Terminology, themes can be stored in ~/.config/terminology/themes/.
π§ COMPANION TOOLS: π§
tylsβ list directory contents with bells and whistlestyalphaβ set transparency level of the backgroundtybgβ change the background imagetycatβ display inline a media file or a URItypopβ display in a popup a media file or a URItyqβ queue media files or URI to be popped uptysendβ send files to the terminal (useful through ssh)
and that's literally just part one of this page bestie, there's more coming π
β¨ EXTENDED ESCAPES FOR TERMINOLOGY: β¨
okay bestie, so these are the extended escapes that Terminology understands. They let you do some seriously iconic stuff from your terminal. The format is:
[\033][}][COMMAND][\000]
which breaks down like this:
ESCchar (\033or0x1b)}char- sequence of UTF8 chars other than nul (
\000or0x00). \000char (nul byte or0x00to 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
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
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 bebung with aibescape command and ending with anieescape 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/link0full/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("\ 33}is#5;3;%s 00"
"\ 33}ib#####\ 33}ie\0
"\ 33}ib#####\ 33}ie\0
"\ 33}ib#####\ 33}ie\0, "/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 theiscommand, 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 theiscommand 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 theiscommand, 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 with link (thumbnail cell area). Otherwise parameters are identical to theiscommand, but uses thumbnail generation to make a fast to load but low resolution version (cached) of the media.LINKis 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 + } ... 00), 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,cmd3etc.) to an existing named channel idCHID. this can be a list of 1 or more command strings, with each string broken by a continuous sequence of 1 or more\rand/or\ncharacters. 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 NAMEto stringTEXT STRING
- set the text of
emit\nSIGNAL STRING\nSOURCE STRING- emit signal
SIGNAL STRINGSOURCE STRING
- emit signal
drag\nPART NAME\n[value|size|step|page]\nVAL1\nVAL2- manipulate dragable of name
PART NAMEand either setvalue,size,steporpageproperties toVAL1andVAL2for x and y, whereVAL1andVAL2are floating point values
- manipulate dragable of name
chid\nCHANNEL ID- set the channel id of a given edje object (only valid in setup commands for the inline edje object) to
CHANNEL IDso it can be addressed later.
- set the channel id of a given edje object (only valid in setup commands for the inline edje object) to
message\nOPCODE ID\n[string|int|float|string_set|int_set|...- the full syntax is:
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 IDof one of the given types supported (string,int,float, etc.) and then with the givenmessage dataat 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.fr[PATH/FILE]β begin file send for a file namedPATH / FILEfs[SIZE_BYTES]β set the size in bytes of a file send started with the abovefrescapefd[CHECKSUM DATA]β block of data for the current file transfer with checksum as a string decimal which is the sum of every byte when taken as an unsigned char per byte. the checksum is a signed 32bit integer. the checksum is the sum of the data after escaping. 4 bits at a time per data byte, encoded with high bits in one byte then low bits, with the bits encoded as 4 bit value being0x40 + 4 bit valueper byte. (@ == 0x0,A == 0x1,B == 0x2, ...N == 0xe,O == 0xf). so to rebuild a byte will be(((bytes[0] - 0x40) & 0xf) << 4) | ((bytes[1] - 0x40) & 0xf)per byte pair in the data block.fxβ exit file send mode (normally at the end of the file or when it's complete)
π BUGS π
If you find a bug or for known issues/bugs/feature requests please email enlightenment-devel@lists.sourceforge.net or visit the place where all the hard work is done http://phab.enlightenment.org/
π AUTHOR π
Terminology was written by Carsten Haitzler <raster@rasterman.com> and others. It is maintained by Boris Faure <boris@fau.re> and others. See AUTHORS file for other contributors.
π That's a wrap bestie! This was Terminology version 1.14.0, dated Mar 23, 2025. Now go forth and slay those escapes! π
β¨
π¦ where this page comes from
- arch rolling: terminology 1.14.0-1 Β· BSD
- debian trixie: terminology-data 1.14.0-1 Β· BSD-2-Clause
- nixos 26.05: terminology 1.14.0
- nixpkgs unstable: terminology 1.14.0
- opensuse-leap 16.0: terminology 1.14.0-lp160.1.1 Β· BSD-2-Clause AND OFL-1.1
- opensuse-leap 16.0: terminology 1.14.0-lp160.1.1 Β· BSD-2-Clause AND OFL-1.1
- opensuse-leap 16.0: terminology 1.14.0-lp160.1.1 Β· BSD-2-Clause AND OFL-1.1
- opensuse-leap 16.0: terminology 1.14.0-lp160.1.1 Β· BSD-2-Clause AND OFL-1.1
- ubuntu resolute: terminology-data 1.14.0-1 Β· BSD-2-Clause
- ubuntu stonking: terminology-data 1.14.0-1 Β· BSD-2-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms