ETERM(1)

๐Ÿ“ฆ
version 0.9.6 ยท 3 versions
, in debian bookworm, ubuntu jammy, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

๐ŸŽ€ ETERM(1) from X Tools ๐ŸŽ€

okay bestie, part 1 of 7 is here ๐Ÿ’– let's get into it

โœจ NAME โœจ

Eterm โ€” the Enlightened terminal emulator for the X Window System ๐ŸŒˆ

โœจ SYNOPSIS โœจ

Eterm [options]

โœจ DESCRIPTION โœจ

okay so Eterm โ€” version 0.9.6 โ€” is a color vt102 terminal emulator and it's built to be an xterm(1) replacement ๐Ÿ’…. The whole vibe is Freedom of Choice, which means it hands as much power, flexibility, and freedom as possible over to you, the user ๐Ÿ‘‘.

It's designed to look good and work well ๐Ÿฆ‹, but it goes the feature-rich route instead of minimalism โœจ. Eterm uses Imlib for its advanced graphic abilities ๐Ÿงš. Keep scrolling for all the deets ๐Ÿ’œ.

โœจ OPTIONS โœจ

ok this part is important bestie ๐Ÿซถ The Eterm options are listed below. Because of the freedom-of-choice thing, options can get eliminated or default values can be picked at compile-time ๐Ÿ› ๏ธ, so the options and defaults I list might not match the version actually installed on your system ๐Ÿ’€.

Options that don't take a parameter (besides -h and --help) are boolean ๐ŸŒธ. If you use the POSIX (short) option, you're forcing the parameter to "true". If you go with the long option, you can use any accepted boolean value: "yes", "on", "1", or "true" turns it on, and "no", "off", "0", or "false" turns it off. Same goes for boolean values in the configuration file ๐Ÿงš.

  • -t theme, --theme theme โ€” Load the theme you name ๐ŸŽจ. Check the FAQ if you want the full tea on what counts as an Eterm theme.
  • -X conffile, --config-file conffile โ€” Use your own user config file name ๐Ÿ“. If you don't, Eterm falls back to the default, user.cfg. The theme config file is always theme.cfg, no exceptions ๐Ÿ™…โ€โ™€๏ธ.
  • -d displayname, --display displayname โ€” Try to open a window on the X display you name ๐Ÿ–ฅ๏ธ. If you skip this option, Eterm uses whatever the DISPLAY environment variable says.
  • --debug level โ€” Show debugging output ๐Ÿ›. level is an integer from 0 to 5 that controls how chatty the debugging output gets.
  • --install โ€” Tells Eterm to install its own colormap instead of using the default one ๐ŸŒˆ.
  • -h, --help โ€” Prints a message describing the available options ๐Ÿ“œ.
  • --version โ€” Prints the Eterm version and its compile-time configuration ๐Ÿ”.
  • -r, --reverse-video โ€” Reverse video! It swaps the foreground and background colors ๐Ÿ”„.
  • -b color, --background-color color โ€” Sets color as the background color ๐Ÿ–ค. Heads up: if reverse video is also on, this one actually becomes the foreground color ๐Ÿ™ƒ.
  • -f color, --foreground-color color โ€” Sets color as the foreground (text) color ๐Ÿค. Same catch: if reverse video is also selected, it actually becomes the background color ๐Ÿ”.
  • --color0 color, ..., --color15 color โ€” Use color as color X ๐ŸŒˆ, where X is the number from 0 through 15.
  • --colorBD color โ€” Use color as the bold color ๐Ÿ’ช.
  • --colorUL color โ€” Use color as the underline color ใ€ฐ๏ธ.
  • --pointer-color color โ€” Use color as the pointer color ๐Ÿ‘†.
  • -c color, --cursor-color color โ€” Use color as the cursor color ๐Ÿ’ซ.
  • --cursor-text-color color โ€” Use color as the cursor text color ๐Ÿ“.
  • -g geom, --geometry geom โ€” Sets the window geometry, written as Width x Height+X coord+Y coord, i.e. 100x200+0+100 ๐Ÿ“.
  • -i,--iconic โ€” Starts in an iconified state ๐ŸชŸ. This only works if your window manager supports iconification, so no promises otherwise ๐Ÿคทโ€โ™€๏ธ.
  • -n name, --name name โ€” Sets the name of the current instance to name ๐Ÿท๏ธ. This also affects the icon title and the window title string, unless you've explicitly set those yourself.
  • -T title, --title title โ€” Sets the window's title text to title ๐ŸŽ€.
  • --icon-name text โ€” Sets the icon title text to text ๐Ÿ–ผ๏ธ.
  • -B type, --scrollbar-type type โ€” Picks the scrollbar style ๐ŸŽข. type can be motif, xterm, or next.
  • --scrollbar-width width โ€” Sets the scrollbar width to width, in pixels ๐Ÿ“. Eterm doesn't put any restrictions on this number, but keep it reasonable, bestie ๐Ÿ™.
  • -D desktop, --desktop desktop โ€” Starts Eterm on the desktop you pick ๐Ÿ–ฅ๏ธ. desktop should be an integer between 0 and your highest-numbered desktop.
    • > NOTE: You need a GNOME-compliant window manager for this one to work ๐Ÿšจ. For more on the _WIN_WORKSPACE property and how to support it, check http://www.gnome.org/devel/gnomewm/.
  • --line-space num โ€” Adds an extra gap, in pixels, between the lines in the terminal window ๐Ÿ“–.
  • --bold-font font โ€” Sets the bold text font to font ๐Ÿ…ฑ๏ธ.
  • -F font, --font font โ€” Sets the normal text font to font ๐Ÿ”ค.
  • --default-font-index num โ€” Specifies the index of the default (normal) text font ๐Ÿ”ข.
  • --font1 font, ..., --font4 font โ€” Sets the font at the specified index (1-4) to font ๐Ÿ–‹๏ธ.
  • --proportional โ€” Okay, this one is a whole thing ๐ŸŒ€. It says the font in use is proportional and asks for standard deviation-based character cell spacing ๐Ÿ“Š.
    • Terminals need fixed-width character cells to keep columnar alignment, even when proportionally spaced fonts are in use ๐Ÿ“. Some proportional fonts have a huge gap between their minimum and maximum character widths ๐Ÿ˜ต.
    • This option picks a cell size up to two standard deviations above the average character width, but it won't go past the maximum width of the largest glyph ๐ŸŽฏ.
    • Characters bigger than the chosen cell width will overwrite (or get overwritten by) other characters, and they may leave pixel droppings ๐Ÿซ . That's an expected side-effect of an imperfect scenario, so if you object to it, just don't use this option ๐Ÿ™…โ€โ™€๏ธ.
  • --font-fx effects โ€” Applies effects to the terminal window font โœจ. The value of effects is one single string with a series of corner/color pairs ๐ŸŽจ.
    • Each pair says which corner a character's drop shadow should go toward, plus what color that shadow will be ๐Ÿ–ค. The corner keyword comes first: top_left or tl, top_right or tr, bottom_left or bl, or bottom_right or br. Each corner gets a color right after it.
    • There are shortcuts for the common looks ๐Ÿ’…:
      • outline followed by a color gives you a single-color outline.
      • shadow gives you a single-color drop shadow. You can add an optional corner (default bottom_right) and then the color.
      • emboss dark_color light_color gives a 3-D embossed look.
      • carved dark_color light_color gives a carved-out look.
      • (Of course, with the last two, the 3-D look only works if you choose the light and dark colors wisely ๐Ÿง .)
    • For no font effects at all, just use none ๐Ÿ™ˆ.
    • The default is bottom_right black, a black drop shadow ๐Ÿ–ค. It greatly improves the visibility of lightly colored fonts sitting on light spots in a background image ๐ŸŒŸ.
    • Font effects are not active in solid color mode ๐Ÿ’€.
  • -P pic, --background-pixmap pic โ€” Uses pic as the background image ๐ŸŒ„. pic can be in any format Imlib understands, which basically means just about anything: JPG, PNG, GIF, TIFF, PPM, and more ๐Ÿ“ธ. The image gets tiled by default.
    • To set an alternate geometry, follow the filename with an @ sign and a geometry string ๐Ÿ“. The format is @wxh+x+y:ops:
      • w and h are the horizontal and vertical scaling percentages.
      • x and y are the horizontal and vertical alignment percentages.
      • ops is a colon-delimited list of operations: tiled (tiles the image) and propscaled (proportional scaling) ๐Ÿงฉ.
    • You can combine these operations for different effects ๐Ÿช„.
  • -I pic, --icon pic โ€” Sets the icon pixmap file to pic ๐Ÿ–ผ๏ธ. It works similarly to -P above.
  • --up-arrow-pixmap pic โ€” Same idea as above, but this one sets the scrollbar's up-arrow โฌ†๏ธ.
  • --down-arrow-pixmap pic โ€” Same idea again, this time for the scrollbar's down-arrow โฌ‡๏ธ.
  • --trough-pixmap pic โ€” Sets the scrollbar's background, the trough ๐Ÿ›.
  • --anchor-pixmap pic โ€” Sets the scrollbar's anchor image โš“.
  • --menu-pixmap pic โ€” Sets the menu background image ๐Ÿ“‹.
  • -O, --trans โ€” Gives you a pseudo-transparent Eterm ๐Ÿ‘ป. The image is taken straight from the root window, so any requests to change the pixmap get ignored ๐Ÿšซ.
    • If you're not using Enlightenment as your window manager (http://www.enlightenment.org/), you'll need something else. Another compliant window manager works too, and someone told the author that WindowMaker works as well ๐ŸชŸ. Otherwise, you'll need the Esetroot program (found in the utils/ directory) to set your root background image ๐Ÿ› ๏ธ.
  • -0, --itrans โ€” Activates the immotile transparency optimization for transparent Eterm windows ๐ŸงŠ.
    • > NOTE: This does not turn on transparency. You still have to include -O or --trans ๐Ÿšจ.
    • Use it on transparent windows that are shaded or tinted and that don't move around the desktop much ๐ŸŒ™. For a more detailed explanation, check the Mon Mar 6 21:11:13 PST 2000 ChangeLog entry ๐Ÿ“œ.
  • --viewport-mode โ€” This activates a special Eterm mode that's kinda hard to describe in words ๐Ÿ”ฎ. Picture pseudo-transparency, where the desktop background moves through the Eterm window as you drag it, so it always lines up with the desktop image ๐Ÿ–ผ๏ธ.
    • Now picture the same effect, but the image is any pixmap you choose instead of the desktop image ๐ŸŽจ. It gets scaled or tiled up to the size of the desktop, and dragging Eterm around reveals different parts of the image as you move, like a small viewport window on a ship or submarine ๐Ÿšข.
    • It's especially keen if you open several Eterms in this mode with the same image ๐Ÿคฉ.
  • --shade percentage โ€” Shades the background image or transparency by the percentage you set ๐ŸŒ‘.
  • --tint mask
  • --tint color โ€” okay so this one tints the background pixmap, and you can shade either the image file or the see-through bits ๐ŸŒˆโœจ. The mask is an integer, usually written in hex as 0xRRGGBB, where RR, GG, and BB are hex numbers from 00 to ff (that's 0 to 255 in decimal) showing how bright the image's red, green, and blue are ๐Ÿ’–. 00 masks that color out entirely, while ff leaves it totally alone ๐Ÿซถ. You can also skip the mask and use an X color like grey75, MidnightBlue, or #babb7f ๐Ÿฆ‹.
  • --cmod brightness [ contrast [ gamma ] ] โ€” this is a color modifier for the whole image ๐Ÿ’…. Each of the three values is a number greater than or equal to 0. You can write them in decimal, in octal (if they start with 0), or in hex (if they start with 0x) ๐Ÿ”ข. 256 (0x100) means 100%, or "leave that value unchanged," 0 means 0%, and 512 (0x200) is 200%, and so on ๐ŸŒธ. Heads up, though: overflow can happen with excessively high values ๐Ÿ’€. Only brightness is required, but if you want contrast you need to include brightness, and if you want gamma you need both of the others too ๐Ÿ‘‘.
  • --cmod-red brightness [ contrast [ gamma ] ] โ€” same vibe as --cmod, but it only touches the red values ๐Ÿ”ด.
  • --cmod-green brightness [ contrast [ gamma ] ] โ€” same as above, but for the green values ๐Ÿ’š.
  • --cmod-blue brightness [ contrast [ gamma ] ] โ€” same as above, but for the blue values ๐Ÿ’™.
  • -p newpath, --path newpath โ€” sets the pic search path ๐Ÿงš. When --background-pixmap or any other pixmap option is used, Eterm looks in this path to find the image.
  • --cache size โ€” sets the size, in bytes, of the Imlib2 cache ๐Ÿง .
  • -N list, --anim list โ€” this is an animation list for cycling the background pixmap ๐ŸŽž๏ธ. It needs two or more words. The first word is the delay in seconds between background updates, so pick something reasonable to make sure Eterm doesn't spend its whole life rendering backgrounds ๐Ÿ˜ญ. Every remaining word is a background image and uses the same syntax as the -P option above, geometry string included.
  • -M font, --mfont font โ€” sets the normal multibyte text font to font ๐Ÿ“.
  • --mfont1 font, ..., --mfont4 font โ€” sets multibyte font X to font ๐ŸŒท.
  • --mencoding encoding โ€” sets the multichar encoding mode to eucj, sjis, or euckr ๐Ÿ‡ฏ๐Ÿ‡ต๐Ÿ‡ฐ๐Ÿ‡ท.
  • --input-method method โ€” sets the XIM input method โŒจ๏ธ.
  • --preedit-type type โ€” sets the XIM preedit type โœ๏ธ.
  • -l, --login-shell โ€” makes the new shell a login shell ๐Ÿ”.
  • -s, --scrollbar โ€” enables the scrollbar. This is the default ๐Ÿ“œ.
  • -u, --utmp-logging โ€” tries to turn on proper utmp logging. For this to work, Eterm probably needs to run setuid or setgid, usually setuid root ๐Ÿ”‘.
  • -v, --visual-bell โ€” turns on the "visual bell," so the window flashes or blinks instead of beeping โœจ.
  • -H, --home-on-output โ€” jumps to the bottom whenever there's output ๐Ÿ .
  • --home-on-input โ€” jumps to the bottom whenever there's input โฌ‡๏ธ.
  • -q, --no-input โ€” stops Eterm from accepting keyboard input and keeps the window manager from focusing it. Super useful for log tailers and stuff like that ๐Ÿ™ˆ.
  • --scrollbar-right โ€” puts the scrollbar on the right-hand side ๐Ÿ‘‰.
  • --scrollbar-floating โ€” shows the scrollbar without a trough ๐Ÿซง.
  • --scrollbar-popup โ€” only shows the scrollbar when the Eterm window is focused ๐Ÿช„.
  • -x, --borderless โ€” forces Eterm to have no borders ๐Ÿ–ผ๏ธ.
  • -S, --sticky โ€” starts Eterm as a sticky window, so it shows up on all desktops ๐Ÿ“Œ.
  • -m, --map-alert โ€” un-iconifies the window on beep ๐Ÿ””.
  • -8, --meta8 โ€” makes the Meta key set the 8th bit in the char ๐ŸŽ€.
  • --double-buffer โ€” instead of drawing text straight onto the window, Eterm allocates an extra pixmap the size of the terminal window. The background and the text get rendered into that pixmap, and then it's set as the window background ๐Ÿ–Œ๏ธ. It uses extra memory in the X server, but Eterm can ignore expose events, so redraws are faster ๐Ÿš€.
  • --no-cursor โ€” disables the text cursor ๐Ÿซฅ.
  • --pause โ€” after the child process ends, Eterm waits for a keypress before it exits โธ๏ธ.
  • --xterm-select โ€” copies xterm's treatment of cutchars. The only real difference is what happens when you double-click a single cutchar sitting between two words. When this is on, only that single character gets selected. When it's off, that character gets selected along with the two words. The off behavior is handy for double-clicking the space between someone's first and last names, or the @ sign in an e-mail address, etc. ๐Ÿ’…
  • --select-line โ€” when this is on, a triple-click selects the entire line from beginning to end. When it's off, a triple-click only selects from the current word to the end of the line ๐Ÿ“.
  • --select-trailing-spaces โ€” decides whether trailing spaces in a selection are kept (on) or thrown out (off) โœ‚๏ธ.
  • --report-as-keysyms โ€” reports certain keystrokes as keysyms and modifiers instead of escape sequences ๐Ÿ—๏ธ.
๐Ÿ’€ NOTE: this one is only for programs that support this special Eterm mode. Don't turn it on unless you're running a program that actually uses this mode!
  • --buttonbar โ€” toggles the display of all buttonbars ๐Ÿ”˜.
  • --resize-gravity โ€” if true, Eterm automatically detects the nearest corner, and font-change resizes make the window gravitate toward that corner ๐Ÿงฒ.
  • --overstrike-bold โ€” if true (the default), Eterm fakes a bold font by printing each character twice, with the second pass offset by one pixel. This makes characters look thicker without needing a special font ๐Ÿ–ค. You might want to turn this off if you use a specific color for bold.
  • --bold-brightens-foreground โ€” if true (the default), Eterm uses the "bold" ANSI color attribute to brighten the foreground color by using the high-intensity colors (8 through 15) instead of the low-intensity colors (0 through 7) โœจ. Heads up that picking a specific color for bold will override this.
  • --blink-brightens-background โ€” if true (the default), Eterm uses the "blink" ANSI color attribute to brighten the background color by using the high-intensity colors (8 through 15) instead of the low-intensity colors (0 through 7) ๐ŸŒŸ.
  • --colors-suppress-bold โ€” if true (the default), any colored text (so anything not drawn in the default foreground color) doesn't get any other special bold treatment, like a bold font or bold overstrike ๐ŸŽจ.
  • --big-font-key keysym โ€” sets the keysym that makes the font bigger. The default is Shift plus the + key on the keypad. Ctrl-> or Meta-> may also work, if you #define one of the hotkeys in src/feature.h ๐Ÿ”.
  • --small-font-key keysym โ€” sets the keysym that makes the font smaller. The default is Shift plus the - key on the keypad. Ctrl-< or Meta-< may also work, if you #define one of the hotkeys in src/feature.h ๐Ÿ”Ž.
  • --meta-mod num โ€” picks which X modifier (1-5) gets treated as the Meta key. Check out xmodmap(1) and the output of xmodmap -pm for more deets ๐Ÿงช.
  • --alt-mod num โ€” same as --meta-mod, but for the Alt key ๐Ÿ”€.
  • --numlock-mod num โ€” same as --meta-mod, but for the NumLock key ๐Ÿ”ข.
  • --greek-keyboard mode โ€” uses the Greek keyboard mapping, either iso or ibm ๐Ÿ›๏ธ.
  • --app-keypad โ€” starts Eterm in application keypad mode, as opposed to normal keypad mode ๐ŸŽน.
  • --app-cursor โ€” starts Eterm in application cursor key mode, as opposed to normal cursor key mode โžก๏ธ.
  • -L num, --save-lines num โ€” sets how many lines go in the scrollback buffer ๐Ÿ“š.
  • -a size, --min-anchor-size size โ€” sets the minimum height, in pixels, of the scrollbar anchor ๐Ÿ“.
๐Ÿ’€ NOTE: this causes abnormal scrolling behavior when you combine it with large scrollback buffers! Be careful with this one, bestie.
  • -w width, --border-width width โ€” sets the window's border width to width ๐ŸชŸ. This controls the gap between the edge of the X window and the edge of the terminal window. It has nothing to do with the window border your window manager supplies, so don't mix them up ๐Ÿ™ƒ.
  • --print-pipe pipe โ€” the pipe used for the PrintScreen function ๐Ÿ–จ๏ธ.
  • --cut-chars separators โ€” sets the separators for double-click selection โœ‚๏ธ.
  • --finished-title title โ€” the string Eterm adds to its title bar if --pause is specified and the child process finishes ๐Ÿ.
  • --finished-text text โ€” same as above, but the text shows up in the terminal window itself ๐Ÿ’ฌ.
  • --term-name TERM โ€” uses TERM as the value of $TERM ๐Ÿท๏ธ.
  • --pipe-name pipe โ€” specifies a named pipe to display output from. This is handy on systems where syslog output goes to a named pipe, like /dev/xconsole on Debian ๐Ÿง.
  • -a line, --attribute line โ€” this one passes config file attributes on the command line ๐Ÿงฉ. line should be a single string, so you'll almost certainly need to quote it. The first word of line has to be the context (see the config file section below), which parses the rest of the line. For example, you can set the foreground color with -a 'color foreground blue', or add a binding with -a 'actions bind anymod button1 to script exit' ๐ŸŽ€. This option only works with config file attributes that aren't context-sensitive. In other words, menus and imageclasses can't be specified with it ๐Ÿ™….
  • -C, --console โ€” grabs console messages ๐Ÿ‘€. Depending on your system, Eterm may need to be setuid root to do this.
  • -e command, --exec command โ€” runs command instead of a shell, and forces Eterm mode ๐Ÿš€.
  • -U URL, --url URL โ€” okay so this one lets you pick up a "screen" session at a URL instead of a local one (the local one is -U "") ๐Ÿ’… URLs look like screen://user@host.dom:port/screen_options, and every part is optional. If you leave stuff out, it defaults to screen://current_user@localhost:22/-RDD ๐ŸŒธ Using this forces Escreen mode and overrides --exec โœจ
Only screen-options are allowed here (see man screen for those). Do NOT pass a command here, with or without arguments ๐Ÿ™… If you want to send a command to the screen-session, use screen [<options>] <command> [<args>] instead.
  • -Z lclport:fw:fwport,delay, --fw lclport:fw:fwport,delay โ€” this one is giving tunnel energy ๐Ÿฆ‹ If the URL you gave to -U is hiding in an intranet behind firewall fw, Eterm builds an SSH-tunnel to that firewall (to port 22/SSH, or fwport if you give one) from your local machine. It'll use any available port number, or lclport if you pick one. Then, after delay seconds (or a sensible default if you skip it), it tries to open a screen session on the host behind the firewall using ssh -p localport ... localhost screen (cf. ssh -L) ๐Ÿงš

โœจ THEMES โœจ

Okay, Eterm is built on the philosophy of Freedom of Choice ๐ŸŒˆ Every user should get to pick the environment they want to live in, and the tools should totally support that. So Eterm is extremely configurable, and it's giving main character energy ๐Ÿ‘‘

Eterm supports something called "themes", which should feel familiar if you've used Enlightenment, icewm, or Microsoft Windows 95/98/NT ๐Ÿ’œ A theme is basically a collection of resources that change as many aspects of a program's look and feel as possible. For example, an Enlightenment theme lets you customize menus, window borders, desktops, icons, iconbars, and literally everything else about how E looks and feels ๐ŸŽ€

An Eterm theme is made of a primary configuration file, always called theme.cfg, sitting in a directory that has the same name as the theme. That directory has to be a child of one of the directories listed in CONFIG_SEARCH_PATH in src/feature.h ๐Ÿซถ The theme can also include extra config files that the primary theme.cfg references, plus pixmaps, menu files, documentation, etc. Those are all allowed as extras on top of the minimum requirement โœจ

By convention and default, themes should live in ~/.Eterm/themes/<theme_name>/ or /usr/share/Eterm/themes/<theme_name> ๐ŸŒธ

Eterm also supports a user configuration file as a supplement to the theme config file ๐Ÿ’– The default name is user.cfg, and it follows the exact same syntax as any other config file. It gets searched for using the same algorithm as theme.cfg, and any settings in user.cfg override previous values for those settings defined by the theme. So it's recommended that your user.cfg files aren't complete config files. Just keep the values you actually want to override ๐Ÿ™ˆ

NOTE: If you have a user.cfg file in the Eterm theme directory or in ~/.Eterm/, it will override any previous settings, even if you're running a different theme ๐Ÿ’€ For example, say you run the trans theme, but ~/.Eterm/themes/Eterm/user.cfg has a mode line that sets the image mode to "image" rather than "trans". Then you will NOT get transparency. This is why user.cfg files should be kept small and only override settings you know you want to enforce. On the flip side, if you were running the trans theme and had a user.cfg in the trans theme (or in ~/.Eterm/themes/trans/), that one would be found before the one in the Eterm theme.

Almost all command line options can be enabled or disabled in the theme's configuration file (the default is /usr/share/Eterm/themes/Eterm/theme.cfg). The next section has all the details on the format and usage of that file ๐Ÿ“œ


โœจ CONFIGURATION โœจ

Since Eterm 0.9.6 is based on the concept of themes, it is vital that you have a thorough understanding of the previous section before taking on this one ๐Ÿง  The previous section and this one were written by the same person who wrote the Eterm code that handles options, config files, and themes, so it's probably the most authoritative documentation on the subject you're going to find ๐Ÿ‘‘

From here on out, I'm going to assume you've read the stuff above and know how to change the default value for the theme. It's highly recommended that you keep a copy of the Eterm theme config file that comes with Eterm handy while you read this ๐Ÿ“–

Okay, first the general idea ๐Ÿ’… The theme.cfg file is made of comments and non-comments. Comments begin with a pound sign and continue to the end of the line. Lines of whitespace are also ignored. The rest of the file is the config stuff, which is divided into sections (called "contexts") and variables (called "attributes"). There are several contexts listed below in sections. Each attribute has to be inside a certain context to be valid. For instance, foreground is perfectly acceptable in the color context, but it would get rejected if it showed up in, say, the toggles context. This keeps the config file organized and lets multiple contexts have attributes with the same name (like the scrollbar attributes in the color and toggles sections) ๐ŸŽ€

Each context has to be enclosed in a begin...end pair that specifies the type of section. The statement begin toggles starts the toggles context, and the next end statement terminates it. (You'll notice some end statements have the context name after them. That's just for readability; any text after the word end gets ignored ๐Ÿฆ‹)

The rest of this section is a step-by-step breakdown of the config file, including what can go in each section. Heads up: some attributes (and even entire contexts) might not be available depending on what support was compiled into Eterm by whoever built it โš ๏ธ

๐ŸŒธ MAGIC NUMBER

The first line of the config file must contain a "magic number" type line. This lets Eterm verify that it's reading an Eterm config file and not something else, like an Enlightenment 0.13 and earlier config file ๐Ÿ™… The line should look like this:

<Eterm-VERSION>

where VERSION is the Eterm version the config file is intended for. For example, config files written for Eterm 0.9 should have <Eterm-0.9> as their first line, followed immediately by a newline โœจ

๐ŸŽจ COLOR CONTEXT

This context contains color specs ๐ŸŒˆ With the exception of the terminal colors 0-15, all colors should be either a valid color name or an RGB string as outlined in the X11(7) man page.

  • foreground color โ€” sets the foreground (text) color ๐Ÿ“
  • background color โ€” sets the background color ๐Ÿ–ค
  • cursor color โ€” sets the cursor color ๐Ÿ’–
  • cursor_text color โ€” sets the cursor text color ๐Ÿ’œ
  • pointer color โ€” sets the mouse pointer color ๐Ÿ–ฑ๏ธ
  • video { normal | reverse } โ€” normal won't reverse the foreground and background colors. reverse (aka reverse video) will ๐Ÿ”„
  • color num color โ€” sets terminal color num (0-15) to the color name, color string, or set of 3 decimal/hex/octal RGB values specified by color ๐ŸŒŸ
  • color { bd | ul } color โ€” sets the terminal bold (bd) or underline (ul) color to the color name, color string, or set of 3 decimal/hex/octal RGB values specified by color ๐Ÿ’…

๐ŸชŸ ATTRIBUTES CONTEXT

This context contains X11 attributes ๐ŸชŸ Most of these depend on the cooperation of the window manager, so keep that in mind ๐Ÿซถ

  • geometry geom โ€” sets the startup geometry using the geometry string geom. It should be in the format WxH+X+Y, where W is the width, H is the height, and +X and +Y are the X and Y offsets. If the signs on X and Y are positive, the coordinates are offsets (in pixels) from the left and top of the screen, respectively. If the signs are negative, the offsets are relative to the right and bottom of the screen, respectively ๐Ÿ“
  • title title โ€” uses title as the text in the title bar of the Eterm window ๐Ÿท๏ธ
  • name name โ€” uses name as the resource name of the Eterm window ๐Ÿงš
  • iconname name โ€” uses name as the icon name of the Eterm window icon ๐Ÿ–ผ๏ธ
  • desktop num โ€” starts Eterm on desktop num. NOTE: This requires a GNOME-compliant Window Manager. Check out http://www.gnome.org/devel/gnomewm/ for more info on the _WIN_WORKSPACE property and how to support it ๐Ÿ–ฅ๏ธ
  • scrollbar_type type โ€” uses a scrollbar with the type style. type can be any of motif, xterm, or next ๐Ÿ“œ
  • scrollbar_width num โ€” uses a scrollbar that is num pixels wide ๐Ÿ“
  • font num font and font bold font โ€” sets the numth font, or the bold font, to font ๐Ÿ”ค
  • font default num โ€” specifies that the numth font should be considered the "default" font โญ
  • font proportional boolean โ€” specifies that the font in use is proportional and requests standard deviation-based character cell spacing. Terminals must use fixed-width character cells to maintain proper columnal alignment, even when proportionally-spaced fonts are in use. Some proportionally-spaced fonts vary greatly between the minimum and maximum character widths. This option picks a character cell size that's up to two standard deviations above the average character width, but it won't exceed the maximum width of the largest glyph. Heads up: characters larger than the chosen cell width will overwrite (or be overwritten by) other characters and may tend to leave pixel droppings ๐Ÿ™ˆ This behavior is an expected side-effect of an imperfect scenario. If you object to this behavior, don't use this option ๐Ÿšซ
  • font fx effects โ€” specifies the effects to apply to the terminal window font ๐Ÿ’ซ The value of effects is a single string containing a series of corner/color pairs. These pairs define toward which corner a drop shadow of each character should be made, and what color that shadow will be. The corner is specified first using these keywords: top_left or tl, top_right or tr, bottom_left or bl, and bottom_right or br. Each corner specifier is then followed by a color ๐ŸŒˆ

There are also a few shortcut keywords for common font effects, and they're so satisfying ๐Ÿ’…โœจ You can get a single-color outline with the keyword outline followed by a color. For a drop shadow, use shadow, then an optional corner specifier (bottom_right is the default), then a color. For a 3-D embossed look, go with emboss dark_color light_color. The opposite vibe, a carved-out look, comes from carved dark_color light_color. ๐Ÿฆ‹ Heads up: with those last two, the 3-D effect only works if you pick your light and dark colors wisely, so choose carefully, bestie ๐Ÿ™ˆ

If you want zero font effects, just use the keyword none ๐Ÿซถ

The default is bottom_right black, which gives a black drop shadow. This is a total lifesaver for lightly colored fonts sitting on light spots in a background image ๐Ÿ˜ญ Also, font effects are not active in solid color mode, so don't be shocked when nothing shows up there ๐Ÿ’€


๐ŸŒธ IMAGECLASSES CONTEXT ๐ŸŒธ

This context holds the global image attributes. It's also the parent context for defining images through the image context, so it's basically the main character of the whole setup ๐Ÿ‘‘

  • icon filename โ€” Uses filename as the icon image for the Eterm window. filename can be an absolute path, relative to the current theme, or relative to one of the directories in the path attribute below โœจ
  • cache num โ€” Sets the Imlib2 cache size to num bytes. The default is 0 ๐Ÿงš
  • path directory_list โ€” Gives a colon-delimited list of directories that Eterm searches when it's looking for image and menu files. The syntax for directory_list is exactly the same as the $PATH environment variable in UNIX shells ๐ŸŒˆ
  • anim interval images ... โ€” Sets up an animation list for cycling the background pixmap. The interval is the delay, in seconds, between background updates. Pick a reasonable value so Eterm doesn't spend all its time rendering backgrounds ๐Ÿ’– Every image here is a background image and uses the same syntax as the -P option above, including the optional geometry string ๐ŸŽ€

๐Ÿฆ‹ IMAGE CONTEXT ๐Ÿฆ‹

This context defines every attribute of one particular image. There can be, and usually are, several image contexts per theme, one for each class of image ๐Ÿ’œ

  • type class โ€” Sets the type, or class, of the image you're defining in this context. This MUST be the first attribute in the image context, no exceptions ๐Ÿ™ˆ Valid classes are background, trough, anchor, up_arrow, down_arrow, left_arrow, right_arrow, menu, menuitem, submenu, button, and buttonbar. The left and right arrows are valid, but they don't do anything just yet ๐Ÿฅฒ Every attribute after this one, up until the next type definition, applies to that image class.
  • mode initial_mode [ allow allowed_modes ] โ€” Sets the starting mode for this image class, plus the modes it's allowed to switch into. initial_mode is the mode the image starts in (unless command-line options override it. allowed_modes is a list of one or more modes, and the image can't switch to any mode that isn't in the allow list. If you leave out the allow section entirely, the image can never change from initial_mode. If you don't give a mode line at all for an image class, the default is the same as mode solid allow solid. Valid mode names are image (use an image), trans (transparency), viewport (viewport mode), auto (auto mode, which needs Enlightenment 0.16 or better), and solid (solid color only) ๐Ÿ”ฅ
  • state { normal | selected | clicked | disabled } โ€” Sets the state of the image you're about to define. Everything until the next state attribute (or until you change types) applies to that particular state. You should at minimum define the normal state, since it's the default when the other states don't have their own attributes. BUT each state has self-contained options, so if you define multiple states, you have to define ALL the attributes that state needs ๐Ÿ˜ญ The sample themes that ship with Eterm show how to build 1-, 2-, 3-, and 4-state images, so go peek at those if you're stuck โœจ

The attributes above affect the image class as a whole. Everything else in this context only affects the current state of the image class ๐ŸŒˆ

  • color fg bg โ€” Sets the foreground and background colors for this image class. The foreground color is for text, and the background color is for the object itself. If you specify an invalid color, fg defaults to white and bg defaults to black ๐Ÿค
  • file filename โ€” Sets the file the image gets loaded from. This is used for the image mode, so if you allow image mode, don't forget to supply an image file! ๐Ÿ’€ You can also tack on an image geometry string by adding an @ and the geometry string to the end of the filename. The geometry string syntax is covered below. filename has to be an absolute path or a path relative to one of the directories in the path attribute. The image gets verified and loaded as soon as this attribute is parsed ๐Ÿงš
  • geom image_geometry โ€” Sets the geometry and geometry-related operations you want applied to the image. This only applies to image classes using image mode ๐Ÿ–ผ๏ธ The geometry is written as wxh+x+y:ops, where w and h are the horizontal and vertical scaling percentages, x and y are the horizontal and vertical alignment percentages, and ops is a colon-delimited list of operations. The operations are tiled (tiles the image) and propscaled (proportional scaling). You can combine these for different effects ๐Ÿ’…
  • cmod { image | red | green | blue } brightness [ contrast [ gamma ] ] and colormod { image | red | green | blue } brightness [ contrast [ gamma ] ] โ€” Both of these do the exact same thing ๐Ÿ’– They apply a color modifier to the image. The second keyword decides what gets modified: the whole image, the red values, the green values, or the blue values. Each of the three parameters is a number that's greater than or equal to 0. You can write numbers in decimal, octal (if they start with 0), or hexadecimal (if they start with 0x). A value of 256 (0x100) means 100%, or "leave that value unchanged." 0 is 0%, 512 (0x200) is 200%, and so on. Just be warned that overflow can happen with really high values ๐Ÿ˜ฌ Only brightness is required. But you have to give brightness before contrast, and both of those before gamma ๐Ÿ™ƒ
  • border left right top bottom โ€” Says the image has borders that shouldn't get scaled along with the rest of the image. This is mostly for images with a beveled look, so the bevel doesn't get scaled and lose its effect โœจ All four values are in pixels, same as the equivalent options for E themes and Gtk+ pixmap themes ๐ŸŽ€
  • bevel { up | down } left right top bottom โ€” Adds a bevel to an image class. You can do this to any image class using image or trans mode. The parameters are pixel values for the width of each edge of the bevel. This is especially handy if you're using tiled images or transparency for the arrow or anchor scrollbar widgets, or for menus ๐ŸŒธ
  • padding left right top bottom โ€” Only used for the submenu image class. It reserves the given number of pixels on each side so the text doesn't overwrite part of the image. It works just like the same option in Enlightenment themes ๐Ÿซถ

This context creates a menu. There's one instance of this context per menu, and menus have to be defined in submenu-menu order, meaning any menu that refers to another menu as its submenu must be defined after that submenu ๐Ÿง  Inside the menu context, each menu item gets a menuitem subcontext, with the exception of the shorthand for separators ๐Ÿ’œ

  • title menu_title โ€” Sets the title for the menu. This MUST be the first attribute after begin menu. Titles have to be unique across all menus. A title can have spaces, but wrap it in single or double quotes if it does. Any future references to the menu use the title ๐Ÿ‘‘
  • font font_name โ€” Tells Eterm to use font_name for this menu. If you don't give one, the default terminal font gets used ๐Ÿ”ค
  • sep or - โ€” Either symbol works as shorthand to insert a separator into the menu โž–

This is a subcontext of the menu context, and it creates a single item for a menu. There can be, and usually are, several menuitem contexts per menu ๐Ÿฆ‹

  • text label โ€” The text shown for this menu item. It's left-justified in the menu window. It can have spaces, but wrap label in quotes if it does โœจ
  • rtext label โ€” Text that's right-justified next to the menu item text. This is usually used to show which keystrokes go with a menu item, like "C-x C-c" for the "Exit" item in an Emacs menu ๐ŸŒˆ

okay so this is where you tell a menuitem what to actually do when someone clicks it ๐Ÿ’–

action { string | echo | submenu | script } param
action separator

bestie, if you pick separator you don't need anything else ๐Ÿ™ˆ The other action types all need a param. string sends a string over to Eterm to handle itself (think escape codes ๐ŸŒธ). echo sends a string to the client program instead, which is perfect for typing commands into a shell or keystrokes into something like emacs or mutt ๐Ÿ’ป. If you use string or echo, the param gets parsed for escape codes (\a, C-, and the like) before it's sent off โœจ. submenu pops open a submenu when the item is picked, and param is the title of that submenu. The submenu has to already be defined, no cap ๐Ÿ’…. Last one, script runs the Eterm-builtin script inside param. Check the section below for the builtin Eterm functions that are allowed with this action type ๐Ÿ‘‘.


โœจ ACTION CONTEXT โœจ

Okay, actions are the key and mouse button bindings that make things happen ๐Ÿ”ฅ Literally any action you can trigger with an escape code can be bound to a key or mouse button, with or without modifiers. You can even bind menus to keystrokes or mouse buttons ๐ŸŽ€

bind [ modifiers ] { keysym | button } to { string | echo | menu | script } param

This one binds a keysym or a mouse button to an action ๐Ÿฆ‹ The action part comes after the word to and is exactly the same syntax as menus (see above). You can stack as many modifiers as you want, as long as the combo is reasonable ๐Ÿ’€, but you only get one keysym or button. Valid modifiers are ctrl, shift, lock, mod1 through mod5, alt, meta, and anymod (which allows any modifier). If you don't list any modifiers, the keypress has to have NO modifier keys in use or the action just won't trigger ๐Ÿ™ˆ. Use anymod if you want any arbitrary modifier key to be allowed. The keysym can be written out in text (case-sensitive!) or as a hex number. Buttons go button1 through button5. Also, alt and meta are equivalent to one or more of mod1 through mod5, and maybe to each other too, depending on your modifier settings ๐Ÿงš. You can check yours with xmodmap -pm. See also the alt_mod and meta_mod options below ๐Ÿ’œ.


๐ŸŒธ BUTTON_BAR CONTEXT ๐ŸŒธ

The buttonbar is a newer addition, showing up in Eterm 0.9.1 ๐Ÿ“ It gives you a fully customizable bar at the top or bottom of each terminal window. Buttons work just like menuitems: they can pop open menus like a menubar, or trigger any other action a menuitem can ๐Ÿ’….

  • font font โ€” picks the font that button labels get displayed in ๐Ÿ”ค
  • dock { top | bottom | no } โ€” decides whether to dock the buttonbar, and if so, whether it goes at the top or bottom of the Eterm window ๐Ÿฆ‹ Heads up: only top and bottom are currently enabled ๐Ÿ™ˆ
  • visible boolean โ€” toggles whether this particular buttonbar is visible on startup ๐Ÿ‘€

For buttons, this is the syntax:

button [ text ] [ icon filename ] action { string | echo | menu | script } param

This binds an action to a button ๐ŸŽ€ param and the action types work exactly the same as they do for menuitems. You can add some text, an icon, or both, but you can't leave out both at once ๐Ÿ’–.


๐Ÿง MULTICHAR CONTEXT ๐Ÿง

This is where behavior for multi-byte fonts and encodings gets defined ๐ŸŒˆ Heads up, this context doesn't exist by default ๐Ÿ™ˆ

  • encoding { eucj | sjis | euckr | big5 | gb | iso-10646 } โ€” specifies the encoding method. Patches to support other encoding methods are very much encouraged ๐Ÿซถ
  • font num font โ€” sets the numth multichar font to font โœจ

๐Ÿ”ฎ XIM CONTEXT ๐Ÿ”ฎ

This context controls locale-based behavior ๐ŸŒ

  • input_method input_method โ€” your input method program of choice ๐Ÿ’…
  • preedit_type { OverTheSpot | OffTheSpot | Root } โ€” your preedit type of choice โœจ

๐ŸŒ ESCREEN CONTEXT ๐ŸŒ

This context has customizations specific to Escreen mode ๐Ÿงš Check the Escreen section below for more details ๐Ÿ’œ

  • url protocol://user@host:port/params โ€” connects to (or creates) a particular screen session through a URL-type construct ๐Ÿ”— Standard URL rules apply. The protocol should be either screen (the default) or twin. If user, host, and/or port are specified, an ssh connection gets made to the remote server with that login info. By default it creates or attaches to a local session ๐Ÿ 

Any params you give get passed straight to the underlying protocol, and they're separated from each other by a plus sign (+) โž•

  • firewall localport:firewall:remoteport โ€” bounces the connection through a firewall via ssh ๐Ÿฆ‹
  • delay secs โ€” how long to wait before sending the screen/twin initialization sequence. This is needed to make sure the remote session is established before the init sequence goes out ๐Ÿซถ
  • bbar_font font โ€” the font for the Escreen buttonbar. The default is -*-helvetica-medium-r-normal--10-*-*-*-p-*-iso8859-1 โœจ
  • bbar_dock { top | bottom | no } โ€” docks the Escreen buttonbar as specified. Only top and bottom are currently enabled ๐Ÿ™ˆ

๐ŸŽ€ TOGGLES CONTEXT ๐ŸŽ€

This context is full of boolean variables you can flip on or off ๐Ÿ” For these attributes, "yes", "on", "1", and "true" turn the option on, and "no", "off", "0", or "false" turn it off. That's what boolean means everywhere in this section. They all default to false unless otherwise noted ๐Ÿ’œ

  • map_alert boolean โ€” if true, Eterm un-iconifies itself when it gets a beep (ASCII 0x07) ๐Ÿ””
  • visual_bell boolean โ€” if true, Eterm flashes instead of sending a beep ๐Ÿ’ก
  • login_shell boolean โ€” if true, Eterm prepends - to the shell name when it calls the shell. Depending on your shell, this might change its startup behavior ๐Ÿš
  • scrollbar boolean โ€” turns the scrollbar display on or off. Default is on ๐Ÿ“œ
  • utmp_logging boolean โ€” if true, Eterm tries to make an entry in the utmp file to record login info. Eterm may need to run privileged to pull this off ๐Ÿ”
  • meta8 boolean โ€” toggles whether the Meta key sets the 8th bit in a character ๐Ÿ”ข
  • iconic boolean โ€” if true, Eterm launches as an icon ๐ŸŒŸ
  • home_on_output boolean โ€” zooms to the bottom of the scrollback buffer on output ๐Ÿ 
  • home_on_input boolean โ€” zooms to the bottom of the scrollback buffer on input โŒจ๏ธ
  • no_input boolean โ€” if true, Eterm won't accept any keyboard input and asks the window manager not to let it be focused ๐Ÿ™…
  • scrollbar_floating boolean โ€” if true, the scrollbar has no trough ๐Ÿซง
  • scrollbar_right boolean โ€” if true, Eterm puts the scrollbar on the right side of the window (default is left) โžก๏ธ
  • scrollbar_popup boolean โ€” if true, Eterm hides the scrollbar when the window loses focus and restores it when focus comes back. Default is to not change the scrollbar state based on focus ๐Ÿ‘€
  • borderless boolean โ€” if true, Eterm runs with no window borders. That also means the window can't be moved or resized, so you'll want to specify a geometry with this one ๐ŸชŸ
  • double_buffer boolean โ€” instead of drawing text directly onto the window, Eterm allocates an extra pixmap the size of the terminal window. The background and the text get rendered into it, and then that pixmap is set as the window background. Double-buffering uses extra memory in the X server, but it lets Eterm ignore expose events so redraws are faster ๐ŸŽ๏ธ
  • no_cursor boolean โ€” if true, Eterm won't display a text cursor ๐Ÿซฅ
  • pause boolean โ€” after the child process terminates, Eterm waits for a keypress before exiting โธ๏ธ
  • xterm_select boolean โ€” duplicates xterm's treatment of cutchars ๐ŸŽฏ The only real difference is what happens when you double-click a single cutchar between two words. If this is on, only that single character gets selected. If it's off, that character gets selected along with the two words. The latter is handy for double-clicking the space between someone's first and last names, or the @ sign in an e-mail address, etc ๐Ÿ“ง
  • select_line boolean โ€” if true, a triple click selects the entire line from beginning to end. If false (default), a triple-click selects from the current word to the end of the line ๐Ÿ–ฑ๏ธ
  • select_trailing_spaces boolean โ€” if true, spaces at the end of a line get included in the selection text when selecting. The default is to strip these trailing spaces โœ‚๏ธ
  • report_as_keysyms boolean โ€” reports certain keystrokes as keysyms and modifiers instead of escape sequences. NOTE: this is intended only for programs that support this special Eterm mode. Do not enable it unless you're running a program that uses this mode ๐Ÿšจ
Only flip this on if the program you're running actually speaks Eterm's special mode, bestie ๐Ÿšจ
  • itrans boolean and immotile_trans boolean โ€” toggles the immotile transparency optimization for transparent Eterm windows ๐ŸชŸ Note that this does NOT activate transparency. You still have to activate trans mode for the background image. Use this on transparent windows that are shaded or tinted and don't move around the desktop much ๐ŸงŠ See the Mon Mar 6 21:11:13 PST 2000 ChangeLog entry for a more detailed explanation ๐Ÿ“œ
  • buttonbar boolean โ€” okay so this one toggles the display of all the buttonbars at once ๐ŸŽ€
  • resize_gravity boolean โ€” bestie, if this is true, Eterm finds the nearest corner on its own ๐Ÿงš and when you change the font size, the window gravitates toward that corner ๐Ÿฆ‹
  • overstrike_bold boolean โ€” this one is on by default โœจ Eterm fakes bold by printing each character twice, with the second pass shifted over by one pixel. The letters look thicker without needing a special bold font ๐Ÿ’– You might want to turn it off if you've picked a specific color for bold ๐Ÿ™ˆ
  • bold_brightens_foreground boolean โ€” also on by default ๐ŸŒธ the "bold" ANSI attribute brightens the text color by using the high-intensity colors (8 through 15) instead of the low-intensity ones (0 through 7). Heads up: if you've set a specific color for bold, that color wins and this gets overridden ๐Ÿ’…
  • blink_brightens_background boolean โ€” on by default ๐ŸŒˆ the "blink" ANSI attribute brightens the background color using the high-intensity colors (8 through 15) instead of the low-intensity ones (0 through 7) ๐Ÿ“
  • colors_suppress_bold boolean โ€” on by default ๐Ÿ’œ any colored text (so anything that isn't using the default foreground color) gets no extra bold treatment at all, no bold font and no bold overstrike. Iconic restraint ๐Ÿ‘‘
  • sticky boolean โ€” if true, Eterm makes its window sticky, which means it shows up on all desktops โญ

โŒจ๏ธ KEYBOARD CONTEXT

This context is all about the keyboard-related config options ๐Ÿ’…

  • smallfont_key keysym โ€” pick a keysym to shrink the font size ๐Ÿซถ The default is Shift plus the - key on the keypad. Ctrl-< or Meta-< might work too, if you #define one of the hotkeys in src/feature.h โœจ
  • bigfont_key keysym โ€” pick a keysym to grow the font size ๐Ÿ“ˆ The default is Shift plus the + key on the keypad. Ctrl-> or Meta-> might work too, if you #define one of the hotkeys in src/feature.h ๐Ÿ”ฅ
  • keysym keysym string โ€” make keysym send string instead of whatever it normally does ๐Ÿฆ‹ The keysym has to be between 0xff00 and 0xffff, or Eterm will absolutely complain ๐Ÿ˜ญ
  • meta_mod num โ€” tell Eterm which X modifier (1-5) counts as the Meta key ๐Ÿ‘‘ Check out xmodmap(1) and the output of xmodmap -pm for the full scoop
  • alt_mod num โ€” same deal as meta_mod, but for the Alt key ๐ŸŒธ
  • numlock_mod num โ€” same deal as meta_mod, but for the NumLock key ๐Ÿ’–
  • greek boolean { iso | ibm } โ€” turn greek keyboard support on or off, and pick which greek mode you want ๐Ÿ‡ฌ๐Ÿ‡ท ๐Ÿงš
  • app_keypad boolean โ€” turn application keypad mode on or off when Eterm starts up ๐ŸŽ€
  • app_cursor boolean โ€” turn application cursor key mode on or off when Eterm starts up ๐ŸŒˆ

๐Ÿ“ MISC CONTEXT

This context holds the misc attributes that really didn't have a cute home anywhere else ๐Ÿงธ

  • print_pipe command โ€” set the command that print requests (printscreen) get piped into โœจ
  • save_lines num โ€” set how many lines the scrollback buffer holds ๐Ÿ“œ
  • cut_chars string โ€” set the characters that count as word delimiters to whatever characters are in string โœ‚๏ธ
  • min_anchor_size num โ€” set the minimum size, in pixels, of the scrollbar anchor ๐Ÿ–ฑ๏ธ (that's the part your mouse grabs onto and drags around) ๐Ÿ’œ
  • border_width num โ€” set how wide the border is between the text window and the X window, in num ๐Ÿฆ‹
  • line_space num โ€” add num pixels' worth of space between each row of the terminal window ๐ŸŒธ
  • finished_title title โ€” when the child process finishes and the Eterm is paused, title shows up in the title bar ๐Ÿ
  • finished_text text โ€” when the child process finishes and the Eterm is paused, text shows up in the terminal window ๐Ÿ’…
  • term_name name โ€” use name as the $TERM environment variable, which decides which termcap/terminfo entry gets used ๐Ÿงš The default is Eterm ๐ŸŽ€
  • exec command โ€” instead of running a shell, Eterm spawns command as its child process ๐Ÿ‘‘
Only one exec allowed, bestie! You can only have one of these ๐Ÿ’€

โœจ BUILT-IN FUNCTIONS โœจ

Eterm has a whole set of built-in functions you can use in config files ๐Ÿฆ‹ Each one takes zero or more parameters and spits out a series of zero or more words. "Words" follow shell rules, so words are separated by whitespace, and single or double quotes can wrap words that have whitespace inside them ๐Ÿซถ You can also use backquotes to run a command, and its output can either become part of the config file itself or get handed to a built-in function as its parameter list ๐Ÿ“ Built-in functions and backquotes can go anywhere their output would be valid. Built-in functions always start with the % character ๐Ÿ’–

  • %appname() โ€” returns the application name, a hyphen, and the version number. Right now that's the string Eterm-0.9.6 โœจ
  • %exec(command) โ€” runs command and returns the result. Basically it's exactly like using backquotes ๐Ÿงš
  • %get(variable) โ€” retrieves the value of a config file variable. Check out %put() below for the deets ๐ŸŒˆ
  • %put(variable value) โ€” creates a config variable named variable and assigns it the value of value. You can grab that value later with %get(variable) ๐Ÿ’œ
  • %random(params) โ€” randomly picks one of the words that make up params and returns it ๐ŸŽฒ The default themes that ship with Eterm use this to choose random backgrounds, but backgrounds aren't the only thing you can randomize! You can randomize anything: colors, toggles, fonts, tinting, etc. ๐Ÿ”ฅ
  • %version() โ€” returns the version number. Right now that's the string 0.9.6 ๐Ÿ“

๐ŸŒธ PREPROCESSING ๐ŸŒธ

Eterm supports the %include file directive, so you can split your config info into multiple files ๐Ÿซถ Eterm loads and parses file just like any other config file, but it treats the contents as if they replaced the directive itself ๐Ÿ’…

You can also ask for a config file to be run through an external preprocessor (like m4 or cpp) before Eterm reads it ๐Ÿง  You do this with the %preproc command directive. You can use whatever you like for command, as long as it accepts input on STDIN and sends output to STDOUT ๐ŸŽ€ If you want an example, check out the menus.cfg file in the default chooser theme ๐Ÿ‘‘


๐ŸŒˆ SCRIPT FUNCTIONS ๐ŸŒˆ

One of the action types you can bind to keypresses, mouse buttons, menuitems, or buttonbar buttons is a script ๐Ÿฆ‹ The script has to be a single word (so no spaces, or wrapped in quotes), and it's made up of one or more calls to the script functions below ๐Ÿ’– Each call is separated from the next by a semicolon (;). Function parameters go inside parentheses, though the parentheses are optional if there aren't any parameters to pass ๐Ÿงš Commas and/or whitespace separate parameters from each other โœจ

  • copy(buffer) โ€” copies the current selection to the specified clipboard or cut buffer ๐Ÿ“‹ buffer is either a number from 0-7, in which case the selection goes to that cut buffer, or one of the words clipboard, primary, or secondary (or any initial substring of those), in which case the selection goes to the specified clipboard. You can leave buffer out, and then the default buffer is primary (XA_PRIMARY in Xlib-speak) ๐Ÿซถ
  • echo(string) โ€” sends the specified string to the subcommand ๐Ÿ’ฌ Exactly equivalent to the echo action
  • es_display(cmd, params) โ€” Aliases: es_disp ๐ŸชŸ This is a master function for messing with Escreen displays through a series of subcommands. The cmd you pick decides what, if any, params are allowed. Here are the available subcommands:
    • goto โ€” switch to the specified display (0-9) ๐ŸŽฏ
    • prev โ€” switch to the previous display โฌ…๏ธ
    • next โ€” switch to the next display โžก๏ธ
    • toggle โ€” toggle display ๐Ÿ”
    • new โ€” create a new display. You can pass a name for the new display as a parameter, or ask to prompt the user for the name ๐ŸŒŸ
    • rename โ€” change the name of the current display. You can pass a name for the new display as a parameter, or ask to prompt the user for the name โœ๏ธ
    • kill โ€” terminate the current (or specified) display ๐Ÿ’€
    • watch โ€” toggle monitoring of the current/specified display for activity ๐Ÿ‘€
    • scrollback โ€” view the scrollback for the current/specified display ๐Ÿ“œ

๐ŸŽ€ es_region(cmd, params)

Aliases: es_reg, es_win, es_window

okay so this is the master function for bossing around Escreen display regions ๐Ÿ‘‘. You pick a subcommand with cmd, and that decides whether params are allowed. Here are the subcommands:

  • goto โ€” switch to the specified region (0-9) ๐Ÿฆ‹
  • prev โ€” switch to the previous region
  • next โ€” switch to the next region
  • toggle โ€” toggle region
  • new โ€” create a new region. You can pass a name as a parameter, or ask to prompt the user for the name โœจ
  • rename โ€” change the name of the current region. You can pass the new name as a parameter, or ask to prompt the user for it ๐Ÿ’…
  • kill โ€” terminate the current (or specified) region ๐Ÿ’€
  • only โ€” maximize the current or specified region to the full display ๐Ÿ”ฅ
  • watch โ€” toggle monitoring of the current or specified region for activity ๐Ÿ‘€
  • scrollback โ€” view the scrollback for the current or specified region ๐Ÿ“œ

๐ŸŒธ es_statement(statement)

Executes an Escreen (screen/twin) command directly. No detours, just vibes ๐Ÿงš

๐Ÿฆ‹ es_reset()

Aliases: es_rst

Resets the Escreen session. A fresh start, bestie ๐ŸŒˆ

๐Ÿ’œ exec_dialog(command)

Same as exec/spawn, but this one pops up a dialog box where you can edit or confirm the command to be run and specify extra parameters if needed ๐ŸŽ€

๐Ÿ‘‘ exit(message) / exit(code)

exit(message)
exit(code)

Aliases: die, quit

Exits Eterm with an optional message or an integer return code. You can pass either parameter, but not both โš ๏ธ. If neither is specified, a code of 0 (zero) is the default ๐Ÿ“

๐Ÿ’ฅ kill(signal)

Sends the specified signal to Eterm's primary child process (either your shell, or whatever you told Eterm to execute). For the time being, signal must be numeric ๐Ÿ”ข. If you leave signal out, SIGTERM is the default ๐Ÿ’–

๐Ÿ’ฌ msgbox(message)

Pops up a small dialog box with message and waits for a keypress before moving on โญ

๐Ÿ˜ด nop()

Does absolutely nothing except waste time. :-) ๐Ÿ™ˆ

๐Ÿ“‹ paste(buffer)

Pastes the contents of the specified clipboard or cut buffer right into the terminal window ๐Ÿซถ. buffer can be:

  • a number from 0-7, which pastes the selection from that cut buffer
  • one of the words clipboard, primary, or secondary (or any starting part of those words), which pastes the contents of that clipboard

You can leave buffer out, and then the default is primary (XA_PRIMARY in Xlib-speak) ๐Ÿฆ‹

๐Ÿ’พ save(type, filename)

Saves the current theme or user configuration ๐Ÿ’พ. type can be user or theme, and the default is user. filename is the file where the settings get saved. It can include a path, either absolute or relative to the theme directory ๐Ÿ—‚๏ธ. The default filename for user is user.cfg, and the default for theme is theme.cfg โœจ

๐Ÿ“œ save_buff(filename)

Dumps the whole scrollback buffer into the file you name ๐Ÿ“

๐ŸŒŠ scroll(n)

Scrolls backward or forward through the scrollback buffer ๐ŸŒŠ. n is a floating point number with an optional unit specifier. The units are:

  • lines or l
  • pages or p
  • buffers or b

The number and the unit can be separated by whitespace or a comma, but that's optional. A positive number scrolls down (forward), and a negative number scrolls up (backward) โฌ†๏ธโฌ‡๏ธ. For example, the key sequence Shift-PgUp is the same as scroll(-1p) ๐ŸŽ€. You can also use fractions, like scroll(0.5p) to scroll down half a page ๐ŸŒ—. If you don't give a unit, the default is lines.

๐Ÿ” search(str)

Pops up a dialog box where you can type a search term, and the default value is set to str ๐Ÿ”. Every occurrence of the search string gets highlighted in the scrollback buffer, and Eterm jumps back to the most recent one โœจ. Search again with the same keyword and the previous highlighting gets cleared ๐Ÿงน.

๐Ÿš€ spawn(command)

Aliases: exec

Spawns a secondary child process to run command, or runs Eterm if no value is passed ๐Ÿงš

๐Ÿงต string(string)

The specified string is parsed via Eterm. This is exactly identical to the string action ๐Ÿ’…


โœจ ESCREEN โœจ

Escreen is a screen/twin interface layer that lets Eterm work with GNU screen and with Massimiliano Ghilardi's twin software ๐Ÿฆ‹. This means Eterm can run multiple subshell sessions inside a single window ๐ŸชŸ. It works kind of like the "tabbed" sessions in programs like konsole and multi-gnome-terminal, but Escreen is an interface to existing software, so you get extra perks like multiple regions per display, detach/reattach capability, seamless remote session support, firewall support, and more ๐ŸŒˆ.

Escreen support is still somewhat experimental, so it's not compiled into Eterm by default ๐Ÿงช. To turn it on, you have to compile with --enable-escreen and/or --enable-etwin, depending on whether you have screen, twin, or both. If you installed from a package, run Eterm --version and look for either +ESCREEN (enabled) or -ESCREEN (disabled) ๐Ÿ”Ž.

For the best results, use Escreen mode by starting Eterm with the Escreen theme: Eterm -t Escreen ๐Ÿ’–. This theme supplies the default key bindings, the basic Escreen menu, color definitions, and so on for the Escreen engine ๐ŸŽจ. Most importantly, it supplies the required url parameter that invokes Escreen mode ๐Ÿ‘‘.

For a deeper dive into Escreen mode, check out the README.Escreen file ๐Ÿ“–.


๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

Michael Jennings (mej@eterm.org) ๐Ÿซถ

๐ŸŒˆ URL(s) ๐ŸŒˆ

Eterm Home Page -- http://www.eterm.org/ ๐Ÿ 

Author's Home Page -- http://www.kainx.org/ ๐Ÿฆ‹


That's the whole page, bestie! ๐Ÿ’…โœจ This one is stamped with X Version 11 and dated 17 August 2008, and it's still giving main character energy ๐Ÿ‘‘๐ŸŽ€๐Ÿ’–

๐Ÿ“ฆ where this page comes from