MLTERM(1)

🌸 MLTERM(1) β€” NAME 🌸

mlterm β€” the Multi Lingual TERMinal emulator on X. She's that girl, fr fr. πŸ’–


✨ SYNOPSIS ✨

mlterm [options]

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so mlterm is a multi-lingual terminal emulator written from scratch, bestie. She supports various character sets and encodings from all over the world, plus complex characters like double width for East Asian, combining for Thai, Vietnamese, and so on, and bi-direction for Arabic and Hebrew. Indic scripts are experimentally supported. She also has a bunch of unique features like anti-alias using FreeType, multiple XIM, multiple windows, scrollbar API, scroll by mouse wheel, automatic selection of encoding, daemon mode, and so on. Obsessed. 😍

Here's the full roster of encodings she speaks, no cap:

  • ISO-8859-[1-11]
  • ISO-8859-[13-16]
  • TIS-620 (same as ISO-8859-11)
  • KOI8-R
  • KOI8-U
  • KOI8-T
  • GEORGIAN-PS
  • TCVN5712
  • ISCII_(ASSAMESE|BENGALI|GUJARATI|HINDI|KANNADA|MALAYALAM|ORIYA|PUNJABI|TAMIL|TELUGU)
  • VISCII
  • CP125[0-8]
  • CP874
  • EUC-JP
  • EUC-JISX0213
  • Shift_JIS
  • Shift_JISX0213
  • ISO-2022-JP[1-3]
  • EUC-KR
  • UHC
  • JOHAB
  • ISO-2022-KR
  • GB2312 (EUC-CN)
  • GBK
  • GB18030
  • ISO-2022-CN
  • HZ
  • EUC-TW
  • BIG5
  • BIG5HKSCS
  • UTF-8

If you've already set your locale (like the LANG variable; see locale(7) for detail), mlterm will automatically select the proper encoding. Periodt. πŸ’…


πŸ’… OPTIONS πŸ’…

Note that bool is to be substituted by true or false. Don't forget, bestie!
  • -A, --aa(=bool) β€” Turn on anti-aliased fonts. This only works with Xft or cairo for now. The default is true. Slay.
  • -B, --sbbg=color β€” Set the background color of a scrollbar. A valid value for color is a color name or an RGB value. The color name should be defined in rgb.txt or the "color" configuration file. The RGB value's format should be "#RRGGBB", "#RRGGBBAA", "rgb:RR/GG/BB" or "rgba:RR/GG/BB/AA". So many options, we love to see it. 🌈
  • -C, --ctl(=bool) β€” Enable complex text layouting on UTF8 encoding to support indic scripts and RTL (right-to-left) languages such as Arabic and Hebrew. The default is true. (If mlterm -v outputs "no-indic" or "no-bidi", indic scripts or RTL languages are not supported.) Just a heads up, bestie.
  • -E, --km=encoding β€” Specify encoding. Valid encodings are listed in the DESCRIPTION section above in this man page. AUTO makes mlterm determine the encoding according to the current locale (default AUTO). Easy peasy.
  • -F, --sbfg=color β€” Set the foreground color of a scrollbar. See the --sbbg option for valid values. Matchy matchy. πŸ’–
  • -G, --vertical=mode β€” Specify vertical writing mode. cjk for RTL vertical writing and mongol for LTR one. The default is none which means horizontal writing mode. Choose your vibe.
  • -H, --bright=value β€” Brightness of background images in percent. See the -p option for details of background images. The default is 100 (keep original). Glow up. ✨
  • -I, --icon=name β€” Specify a name to be used when a mlterm window is iconified. The default is "mlterm". Iconic, literally.
  • -J, --dyncomb(=bool) β€” Enable dynamic character combining. "Dynamic" means that combining characters are stored in without combining but they are displayed using combined form. This affects calculation of column position, i.e., a pair of base character and combining character is counted to be two columns in this mode, while it is counted to be one column in the normal mode. Under this option, a (logical) column number and a character have a one-to-one correspondence, even for combining characters (though not for fullwidth characters; see -Z/--multicol option for handling of fullwidth characters). Thus, this mode enables you to use combining characters with software which does not support combining characters. The default is false. Big brain energy. 🧠
  • -K, --metakey=value β€” Specify a key to be interpreted as a META key. Valid values are: alt, meta, hyper, super, mod1, mod2, mod3, mod4, and none. The default is none. See the -k option also. Meta af. πŸ’…
  • -L, --ls(=bool) β€” Whether to use login shell or not. The default is false. Your call, bestie.
  • -M, --im= input method : [ arguments ... ] β€” Specify an input method.

Examples:

  • --im=xim β€” Use XIM with the default XIM server specified by standard way (i.e., XMODIFIERS environmental variable).
  • --im=xim:Ami β€” Use XIM with Ami on the system locale.
  • --im=xim:kinput2:ja_JP.EUC-JP β€” Use XIM with kinput2 on ja_JP.EUC-JP locale.
  • --im=kbd:arabic β€” Use keyboard mapping input method in Arabic.
  • --im=kbd:hide:arabic β€” Use keyboard mapping input method without showing the status screen.

The "kbd" input method converts US keyboard characters to other keyboard layouts. It is assumed to be used in environments with limited functionality, such as older OSs that support few keyboard layouts. Available values for "kbd" input method argument are "arabic", "hebrew", "de", "fr", "es", "pt", "jp106", "isciiassamese", "isciibengali", "isciigujarati", "isciihindi", "isciikannada", "isciimalayalam", "isciioriya", "isciipunjabi", "isciitamil" and "isciitelugu".

  • --im=uim β€” Use uim with the default conversion engine.
  • --im=uim:prime β€” Use uim with prime conversion engine.
  • --im=m17nlib:ru β€” Use m17n library in Russian.
  • --im=m17nlib:or:itrans β€” Use m17n library in Oriya using ITRANS method.
  • --im=scim β€” Use SCIM.
  • --im=ibus β€” Use IBus with the default conversion engine.
  • --im=ibus:anthy β€” Use IBus with anthy conversion engine.
  • --im=fcitx β€” Use Fcitx.
  • --im=canna β€” Use Canna.
  • --im=wnn β€” Use Freewnn.
  • --im=wnn:foo.bar β€” Use Freewnn with jserver at foo.bar host. (JSERVER environmental variable is also available.)
  • --im=skk β€” Use SKK.
  • --im=skk:dict=foo.bar:utf8,sskey=\x3b β€” Use SKK with the use of utf8 skk server at foo.bar host and semicolon key as sticky shift key. (SKK_DICTIONARY and SKK_STICKY_SHIFT_KEY environmental variable are also available.)
  • --im=iiimf β€” Use IIIMF in the system language.
  • --im=iiimf:ar β€” Use IIIMF in Arabic.
  • --im=iiimf:ja:CannaLE β€” Use IIIMF in Japanese using CannaLE language engine.
  • --im=none β€” Don't use input method.

So many input methods, we're obsessed. 😭

  • -N, --name=name β€” Specify application name. (WM_CLASS property) The default is "mlterm". Name drop. πŸ’…
  • --role=role β€” Specify application role. (WM_WINDOW_ROLE property) The default is undefined. Mysterious. πŸ™ˆ
  • -O, --sbmod=value β€” Specify the side to show a scrollbar. left for left side and right for right side. none turns off a scrollbar. autohide shows a scrollbar only if mouse pointer is at the right edge of the screen. The default is left. Pick your side. ✨
  • -Q, --vcur(=bool) β€” Change interpretation of cursor keys to be natural in vertical writing mode. This means that up and down arrow keys are treated as backward (left arrow in horizontal LTR) and forward (right arrow in horizontal LTR), respectively. In cjk -G/--vertical mode, left and right arrow keys are also treated as next line (down arrow in horizontal LTR) and previous line (up arrow in horizontal LTR), respectively, while vice versa in mongol mode. The default is true. Arrow keys go brrr. πŸ”₯
  • -R, --fsrange=range β€” Set acceptable range of font size. The format is "minsize-maxsize", where minsize and maxsize are font sizes in pixel (default 1-10000). The GUI configurator and other means for setting fontsize should honor the range. No tiny fonts allowed, bestie.
  • -S, --sbview=name β€” Select a type of scrollbar. See the SCROLLBAR section below for details. The default is "simple" which means the built-in simple scrollbar. Simple but iconic. πŸ’–
  • -T, --title=name β€” Specify a title for a mlterm window. The default is "mlterm". Main character energy. πŸ‘‘
  • --locktitle(=bool) β€” Lock the title for a mlterm window. If a title is locked then OSC 0, 1 and 2 esc sequences to change it are ignored. The default is false. Don't touch my title, periodt.
  • -U, --viaucs(=bool) β€” Force to convert a selection (i.e., copy-and-paste strings) whose type is not UTF8_STRING to the current mlterm encoding via Unicode. See the SELECTION section below for detail. The default is false. Unicode said "I got you". 🌈
  • -V, --varwidth(=bool) β€” Use variable column width. You may want to use this option when you use proportional fonts. The default is false. Fancy fonts, fancy widths. πŸ’…
  • -W, --sep=characterlist β€” Delimiter characters used for word selection, which are consulted when you double-clicked mlterm, to define what is a word. The default is " ,.:;/|@()[]{}"). Double-click to select words, yasss.
  • -X, --alpha=value β€” Alpha in pseudo or true transparent. The default is 255. Transparency is a vibe. ✨
  • -Y, --decsp(=bool) β€” Use dynamically composed line drawing character set of DEC special. The default is false. This overrides DEC_SPECIAL in the "font" configuration file, while DEC_SPECIAL in "aafont" (for Xft or cairo) is always overridden. Line drawing but make it dynamic. 🎨
  • -Z, --multicol(=bool) β€” Treat fullwidth characters (east Asian characters in most cases; which occupies two columns on the screen) as they occupy two logical columns. It is the de-facto standard way to handle fullwidth characters in east Asian terminal emulators (XFree86 xterm and kterm, cxterm, hanterm, rxvt, eterm) and other systems such as MS-DOS, PC-9801, and so on. In most fonts, the glyphs of fullwidth characters are designed assuming that their width are twice of normal characters and won't display correctly without this option. The default is true. Fullwidth characters are that girl. πŸ‘‘
  • -0, --crbg=color β€” Specify background color for cursor (default is same to foreground color). Valid values for color are color names defined in rgb.txt and color rgb string whose format is "#RRGGBB", "#RRGGBBAA", "rgb:RR/GG/BB" or "rgba:RR/GG/BB/AA". Cursor drip, no cap. πŸ’§
  • -1, --wscr=value β€” ✨ okay so this sets the actual window width as a percentage against the calculated value (font width Γ— column number). It's giving β€œmy proportional font has some glyphs that are lowkey huge” β€” like, way bigger β€œmaximum width” than you expected. πŸ™ˆ In vertical mode, this option changes the actual window height instead. Default is 100. πŸ’…
  • -3, --contrast=value) β€” 🎨 Contrast of the background image in percent. See -p option for deets on the background image. Default is 100. ✨
  • -4, --gamma=value) β€” 🌈 Gamma of the background image in percent. See -p option for deets. Default is 100. πŸ¦‹
  • -5, --big5bug(=bool) β€” πŸ› Enable a workaround for Big5 CTEXT bugs (which had been existed until XFree86 4.1.0). This affects Big5 selections (i.e., copy-and-paste strings) in COMPOUND_TEXT format which mlterm sends. Default is false. πŸ’€
  • -6, --stbs(=bool) β€” πŸ›‘ Don't exit backscroll mode when console applications output something. Default is false. periodt.
  • -7, --bel=mode β€” πŸ”” Behavior when BEL (0x07) is received. sound for beep, visual for blanking screen, and sound|visual for the both. Default is none which ignores BEL. πŸ™ˆ
  • -8, --88591(=bool) β€” πŸ”€ Use ISO8859-1 fonts for US-ASCII part of various encodings. ✨
  • -9, --crfg=color β€” πŸ–±οΈ Specify foreground color for cursor (default is same to background color). Valid values for color are color names defined in rgb.txt and color rgb string whose format is "#RRGGBB", "#RRGGBBAA", "rgb:RR/GG/BB" or "rgba:RR/GG/BB/AA". πŸ’…
  • -$, --mc=value β€” πŸ–±οΈ Doubleclick/tripleclick interval in millisecond. Default is 250. ✨
  • -%, --logseq(=bool) β€” πŸ“ Enable logging. Contents of stream received by mlterm will be logged under ~/.mlterm/. This option is mainly intended to be used for debugging purposes. Default is false. Note that % should be escaped to be supplied as a command line option on most shells. 😭
  • -&, --borderless(=bool) β€” πŸͺŸ Asks the window manager to use no decorations at all. > Warning: You will not be able to resize the window. You probably want to use --geometry as well. Default is false. πŸ’€
  • -@, --screens=value β€” πŸ–₯️ Specify number of screens (sessions) to be used in start up. Default is 1. Note that when one of these screens are closed, sessions which were connected to the screens do not immediately killed. See MULTIPLE PTY section for details. 🫢
  • -*, --type=value β€” 🎨 Specify the rendering engine to be used to draw fonts. xcore is conventional X11 core font mechanism. xft means Xft mechanism and cairo means cairo mechanism. Default is cairo. On platforms except X11, it is always xcore. (If mlterm -v outputs "no-xft" or "no-cairo", xft or cairo is unavailable.) πŸ”₯
  • -#, --initstr=value β€” ✨ Specify a string to be automatically sent after initialization of session. The value normally will be parsed by a shell. See -e option to execute other application at start-up time. πŸ’…
  • -a, --ac=value β€” πŸ”€ Specify number of columns to be occupied by a Unicode's "EastAsianAmbiguous" character. Default is 1 except "ja" locale where the default is 2. Some of asian people may want to specify 2. See Unicode Standard Annex (UAX) #11 East Asian Width found at Unicode web site for details. πŸ¦‹
  • -b, --bg=color β€” 🎨 Specify background color (default white). Valid values for color are color names defined in rgb.txt and color rgb string whose format is "#RRGGBB", "#RRGGBBAA", "rgb:RR/GG/BB" or "rgba:RR/GG/BB/AA". πŸ’–
  • -c, --cp932(=bool) β€” πŸ‡―πŸ‡΅ Use CP932 mapping table to convert from JIS X 0208 to Unicode when displaying JIS X 0208 characters using Unicode font in Xft or cairo mode. This is useful when you use proprietary Japanese true type fonts which are intended to be used with Microsoft Windows, with mlterm with encodings (such as EUC-JP, Shift_JIS, ISO-2022-JP, and so on) which contain JIS X 0208 as a coded character set.

The reason is, such proprietary fonts may have glyphs only for Unicode code points into which JIS X 0208 code points are converted using CP932 mapping table. (CP932 is a name of mapping table which is used by Microsoft to convert from Shift_JIS [plus Microsoft private extended characters] into Unicode. In Unicode's point of view, CP932 is a name of encoding which is similar to Shift_JIS and is used by Japanese version of Microsoft Windows.) If you use such fonts for encodings such as EUC-JP and Shift_JIS with JIS0208.TXT mapping table which mlterm adopts as the standard, a few characters are mapped into Unicode code points where the fonts don't have glyphs.

Both of CP932.TXT and JIS0208.TXT mapping tables are supplied by Unicode Consortium, though they are regarded to be obsolete.

The default is true. πŸ’…

  • -d, --display=string β€” πŸ–₯️ Specify X display to connect with. ✨
  • -e program [ arguments ... ] β€” πŸš€ Invoke the command in the mlterm window. This option must be the last option on the command line. πŸ’…
  • -f, --fg=color β€” 🎨 Foreground color (default black). Valid values for color are color names defined in rgb.txt and color rgb string whose format is "#RRGGBB", "#RRGGBBAA", "rgb:RR/GG/BB" or "rgba:RR/GG/BB/AA". πŸ–€
  • -g, --geometry=geometry β€” πŸ“ Specify size and position of the window; see X(7). πŸ¦‹
  • -h, --help(=bool) β€” πŸ†˜ Show help messages. 🫢
  • -i, --xim(=bool) β€” ⌨️ Whether to use XIM (X Input Method). Most east Asian people will want to enable this option. Other people can also safely enable this. Default is true. The name of the XIM server to be connected is specified by standard way (i.e., XMODIFIERS environmental variable). 🌸
  • -j, --daemon=value β€” πŸ‘» Start as a daemon process. Note that mlclient is executed if a daemon process has already started. Possible =values are "blend" and "genuine". See the chapter of DAEMON MODE for details. (If mlterm -v outputs "no-daemon", this option is unavailable.) πŸ”₯
  • -k, --meta=mode β€” πŸ”‘ Behavior of META key. esc for sending ESC and none for ignoring META key. Default is 8bit which sets the most significant bit. See -K option also. πŸ’…
  • -l, --sl=value β€” πŸ“œ Specify number of lines of backlog or "unlimited". Over 65535(0xffff) is regarded as "unlimited". Default is 128. ✨
  • -m, --comb(=bool) β€” 🧩 Enable combining characters by overstriking glyphs (recommended for TIS-620, TCVN5712, and UTF-8). Note that fonts which contain combining characters which extend backward cannot be used, since mlterm does combine characters by controlling the writing positions. This option is automatically turned on when using --dyncomb option. Default is true. πŸ’–
  • -n, --noucsfont(=bool) β€” πŸ”€ Use non-Unicode fonts even when mlterm encoding is UTF-8. Useful when you don't have ISO10646-1 fonts and you want to use UTF-8 encoding. Default is false. 🌈
  • -o, --lsp(=value) β€” πŸ“ Specify number of extra pixels between lines. Default is 0. ✨
  • -p, --pic=path β€” πŸ–ΌοΈ Path for a wallpaper (background) image. Note that the wallpaper cannot be used with pseudo transparent background. (If mlterm -v outputs "no-image", this option is unavailable.) πŸŽ€
  • -r, --fade=ratio β€” 🌫️ Specify fading ratio for unfocused windows. 100 means no fading and 0 means darkest. Default is 100. πŸ’…
  • -s, --mdi(=bool) β€” πŸͺŸ Whether to use multiple document interface. Default is true. If you disable this option, scrollbar and screen separation are unavailable. 😭
  • -t, --transbg(=bool) β€” 🫧 Whether to enable pseudo transparent background. Note that pseudo transparent background cannot be used with wallpaper. Default is false. ✨
  • -u, --onlyucsfont(=bool) β€” πŸ”€ Use Unicode fonts even when mlterm encoding is not UTF-8. Useful when you have ISO10646 fonts but you don't have other fonts and want to use non-UTF-8 encodings. Note that conversion to Unicode is lossy. i.e. if mlterm encoding is not a subset of Unicode like ISO-2022-JP-2 or EUC-TW, characters which are regarded as a same character in Unicode will be displayed with the same glyph and cannot be distinguished. The default is false. πŸ’€
  • -v, --version β€” πŸ“¦ Show version information. ✨
  • -w, --fontsize=value β€” πŸ”  Specify font size in pixel. Default is 16. πŸ’…
  • -x, --tw=value β€” πŸ“ Specify tab width. Default is 8. ✨
  • -y, --term=string β€” 🏷️ Specify terminal type, i.e., the value of TERM variable. Default is xterm. Note that mlterm is deprecated. πŸ’€
  • -z, --largesmall=size β€” πŸ” Specify the step of changing font size in pixel when you pushed "Font size larger" or "Font size smaller" button on GUI configurator. Default is 1. πŸŽ€
  • --aafont=(bool) β€” (Available for mlterm-fb, mlterm-wl or mlterm-sdl2) Whether to use ~/.mlterm/*aafont configurations with the use of fontconfig. Default is false for mlterm-fb and true for mlterm-wl and mlterm-sdl2. (If mlterm -v doesn't output "fontconfig", this option is unavailable.) 🌈
  • --ade=value β€” πŸ”€ Specify character encodings detected automatically. ✨
  • --auto(=bool) β€” πŸ€– Automatically detect appropriate character encoding from the encodings specified by --ade option. Default is false. πŸ’…
  • --altbuf(=bool) β€” πŸ–₯️ Whether to enable alternate screen buffer. This option is similar to "titeInhibit" of xterm. ✨
  • --bc(=bool) β€” πŸ“‘ Whether to broadcast input or pasted characters to all ptys whose value of "ignore_broadcasted_chars" option is false. Default is false. 🫢
  • --bd=value β€” 🎨 Specify the color to use to display bold characters. πŸ’ͺ
  • --bdfont(=bool) β€” πŸ…±οΈ Use bold font for characters with the bold attribute. Default is true. ✨
  • --bimode=value β€” ↔️ Specify bidi mode. Valid values are: normal, left and right. Default is normal. (If mlterm -v outputs "no-bidi", this option is unavailable.) πŸ¦‹
  • --bisep=characterlist β€” πŸ”€ Specify separator characters to render bidi text. (If mlterm -v outputs "no-bidi", this option is unavailable.) πŸ’…
  • --bl=value β€” picks the colour for blinking characters πŸ’– like what colour do they flash in bestie
  • --blink(=bool) β€” does the cursor blink or not? default is false (steady queen, no blinking) ✨
  • --blpos=value β€” where the baseline sits, as an offset from the default baseline. default is 0 πŸ“
  • --border=value[,value2] β€” the inner border width, default 2 πŸ’… if you only hand it value, that sets both horizontal and vertical. hand it value2 too and value = horizontal, value2 = vertical. max is 224.
  • --boxdraw=value β€” force either a unicode font or the DEC Special font to draw box-drawing characters πŸŽ€ unicode for unicode font, decsp for DEC special font. default is noconv, which just draws them as they are, no cap.
  • --chsel(=bool) β€” (available on platforms except x11 and wayland) β€” do you get to change the selection right after selecting text with the mouse? default is true πŸ–±οΈ
  • --ciphlist=value β€” the ciphers (comma separated list) for encrypting the ssh session πŸ” (if mlterm -v doesn't print ssh, this option is unavailable, sorry bestie)
  • --clp(=bool) β€” clip things so no dots leak outside the text drawing area. default is false βœ‚οΈ
  • --ckm=encoding β€” (available for mlterm-con) β€” the encoding of the console where mlterm-con does its thing. valid encodings are listed in the DESCRIPTION section earlier in this man page. AUTO makes mlterm figure it out from the current locale (default AUTO) 🌈
  • --co=value β€” the colour for crossed-out characters
  • --colors(=bool) β€” do we recognise ANSI color change escape sequences? default is true 🎨
  • --conpty(=bool) β€” (available for win32) β€” use ConPTY or not. default is true πŸͺŸ
  • --csc=value β€” (available for mlterm-con) β€” number of sixel graphics colors for the console mlterm-con lives in. valid values: 16, 256 or full. default is 16 πŸ–ΌοΈ
  • --csp=value β€” number of extra pixels between lines (negative values are allowed, yes really). if you use --V, this option gets ignored. default is 0 πŸ“
  • --csz=value β€” (available for mlterm-con) β€” cell width and height in pixels that mlterm-con uses when it doesn't get them from anywhere else. default is 8,16 πŸ“
  • --da1=value β€” the primary device attributes string. default is 63;1;2;3;4;7;29 πŸ‘‘
  • --da2=value β€” the secondary device attributes string. default is 24;279;0 πŸ‘‘
  • --depth=value β€” visual depth, one of 8, 16, 24, 32 πŸ’Ž if depth is 32 you can enable semi-transparency by giving opacity as the value of --alpha, or "rgba:RR/GG/BB/AA" as the value of --bg. so fancy.
  • --deffont=value β€” DEFAULT in ~/.mlterm/*font πŸ”€
  • --emoji=value β€” path to a directory of emoji image files, or an open type emoji font, to show unicode emoji characters. default is ~/.mlterm/emoji πŸ₯°
  • --emojifmt=value β€” filename format for the emoji image files in the directory from --emoji. the value is "[Format1](,[Format2])". [Format1] is for singleton emoji made of 1 code point, [Format2] is for emoji sequences made of 2 code points. omit [Format2] and [Format1 except file suffix]-[Format1] is used automatically for emoji sequences. emoji sequences of 3 or more code points aren't supported for now πŸ™ˆ default is %.4x.png,%.4x-%.4x.png.
  • --exitbs(=bool) β€” do we exit backscroll mode when data arrives from the pty? default is false πŸ“œ
  • --fk(=bool) β€” send modified keys as a parameter for CSI u (same as formatOtherKeys in xterm). default is false ⌨️
  • --fullwidth=value β€” force full width no matter what EastAsianWidth.txt says πŸ’ͺ
e.g.) --fullwidth=U+1234-5678,U+0123-4567
  • --halfwidth=value β€” force half width no matter what EastAsianWidth.txt says 🀏
e.g.) --halfwidth=U+1234-5678,U+0123-4567
  • --ibc(=bool) β€” ignore broadcasted characters or not. default is false πŸ“’
  • --iconpath=path β€” the file to use as a window icon πŸ–ΌοΈ
  • --it=value β€” the colour for italic characters
  • --itfont(=bool) β€” use italic font for characters with the italic attribute. default is true ✨
  • --keepalive=value β€” interval in seconds to send a keepalive message to the ssh server. default is 0 πŸ’“ (if mlterm -v doesn't print ssh, this option is unavailable)
  • --lborder=value[,value2] β€” inner border width of a layout manager. default is 0 πŸŽ€ same deal as --border: only value sets both horizontal and vertical; with value2, value = horizontal and value2 = vertical. max is 224.
  • --ldd(=bool) β€” embolden glyphs by drawing doubly at 1 pixel leftward instead of rightward. default is false πŸ–οΈ
  • --lew=value β€” time in msec to keep local echo mode. default is 250 ⏱️
  • --locale=value β€” the locale. default is "" 🌍
  • --logmsg(=bool) β€” log mlterm's messages to ~/.mlterm/msg.log. default is true πŸ“
  • --loecho(=bool) β€” use local echo mode or not. default is false πŸ—£οΈ
  • --maxptys=value β€” max number of ptys (sessions) open at the same time. it should be a multiple of 32. default is 32 πŸ”’
check the MULTIPLE PTY section for the deets, bestie
  • --metaprefix=value β€” prefix characters when pressing the meta key if mod_meta_mode = esc. default is \x1b 🎹
  • --multivram(=bool) β€” (available for mlterm-fb on NetBSD/x68k) β€” draw the wall picture on Text VRAM instead of Graphic VRAM to make scrolling faster. default is true πŸš€
  • --norepkey=value β€” modifier keys that stop mouse reporting. valid values: shift, control, mod1, mod2, mod3, mod4, mod5, mod and alt. default is shift,control πŸ–±οΈ
  • --noul(=bool) β€” don't draw underline. default is false 🚫
  • --oft=value β€” features of glyph substitution. default is fliga,clig,dlig,hlig,rlig πŸ”€
  • --osc52(=bool) β€” allow clipboard (selection) access via the OSC 52 sequence. default is false πŸ“‹
  • --ost=value β€” script of glyph substitution. default is latn ✍️
  • --otl(=bool) β€” show substituting glyphs in open type fonts using libotf or harfbuzz. don't specify --ctl=false if you want substituting glyphs πŸ’… --ctl disables automatic search of alternative glyphs in other fonts on cairo/xlib and freetype+fontconfig/{wayland|framebuffer}. default is false. (if mlterm -v doesn't print otl, this option is unavailable.)
  • --parent=value β€” the parent Window ID. default is 0 πŸ‘¨πŸ‘§
  • --point(=bool) β€” treat the value of -w as point instead of pixel. heads up, this only works on xft, cairo or win32. default is false πŸ“Œ
  • --pubkey=value β€” public key file for the ssh connection. default is ~/.ssh/id_rsa.pub (%HOMEPATH%termid_rsa.pub in win32) πŸ”‘ (if mlterm -v doesn't print ssh, this option is unavailable)
  • --privkey=value β€” private key file for the ssh connection. default is ~/.ssh/id_rsa (%HOMEPATH%termid_rsa in win32) πŸ” (if mlterm -v doesn't print ssh, this option is unavailable)
  • --rcn(=bool) β€” reconnect to the ssh server automatically if the disconnection was unexpected. default is false πŸ” (if mlterm -v doesn't print ssh, this option is unavailable)
  • --recvdir=value β€” the directory to save files received via zmodem or scp. default is ~/.mlterm/recv πŸ“₯
  • --restart=value β€” restart mlterm with all opened ptys except ssh if SIGSEGV, SIGBUS, SIGFPE or SIGILL is received. default is true ♻️
  • --rv=value β€” the colour for reverse characters
  • --rz=value β€” how text is displayed on screen when it gets resized. valid values: none, scroll and wrap. default is wrap πŸ“œ
  • --scp(=bool) β€” allow OSC 5379 scp. default is false πŸ“€ even if allow_scp = false, you can still transfer a file to the "." directory (~/.mlterm/scp).
  • --sdpr=value β€” device pixel ratio used to figure out the width of the "simple" scrollbar. default is 1 πŸ“Š
  • --seqfmt=value β€” the format for logging vt100 sequences. raw logs it as it is, ttyrec logs it in ttyrec format. default is raw πŸŽ₯
  • --serv=value β€” a host you want to connect to via ssh etc. this option is only enabled if mlterm is built with MinGW or the --enable-ssh2 option πŸ›°οΈ

value format:

(<protocol>://)(<user>@)<server>(:<port>)(:<encoding>)

e.g.)

mlterm --serv ssh://user@host:22:eucjp
mlterm --serv mosh://user@host:22:utf8
  • --shortcut(=bool) β€” allow dynamic change of shortcut keys via the OSC 5379 set_shortcut sequence. default is false ⚑
  • --slp(=bool) β€” (available for Android or win32) β€” start mlterm with a local pty instead of an ssh connection. default is false πŸ“±
  • --trim(=bool) β€” trim new line characters at the end when pasting text. default is false βœ‚οΈ
  • --ul=value β€” the colour for underlined characters
  • --ulpos=value β€” position (offset from the baseline) of the underline. default is 0 πŸ“
  • --ucsnoconv=value β€” use unicode fonts partially no matter what -n says πŸ™ƒ
e.g.) --ucsnoconv=U+1234-5678,U+0123-4567
  • --urgent(=bool) β€” draw the user's attention when a bell sound happens in an unfocused window. default is false πŸ””
  • --uriword(=bool) β€” select a URI by double clicking it no matter what -W says. default is false πŸ”—
  • --vtcolor=mode β€” set vt color mode. 256 for pseudo color, high for high color and true for true color. default is high 🌈
  • --winsize(=bool) β€” (win32 girlies only ✨) throws out an XTWINOPS sequence whenever the screen gets resized… unless you've also passed --conpty, in which case she stays quiet. Default is false.
  • --working-directory=value β€” the working directory. that's it, that's the whole thing. πŸ’…
  • --x11(=bool) β€” turns on x11 forwarding for your ssh connection. Default is false. (heads up bestie: if mlterm -v doesn't print ssh, this option literally isn't available to you.)

πŸŽ€ GUI CONFIGURATOR πŸŽ€

okay so this is the moment. press your control key and mouse button 3 at the same time and boom πŸ’₯ the GUI configurator pops up β€” that's mlconfig. she can change your encoding, foreground and background color, tab size, backlog size, font size, whether combining characters are a thing, and like… a whole lot more.

The GUI configurator has six pages (Encoding, Font, Background, Color, Scrollbar, and Others), OK/Apply/Cancel buttons, and four special buttons. iconic lineup honestly.

fr fr note: this feature needs GTK+ 2.x or later. no GTK, no glow-up. 🫢

✨ Encoding page ✨

all the encoding-related configs live here. Note that configurations will be enabled when you push Apply button β€” so don't be out here changing stuff and wondering why nothing happened. apply first, bestie.

  • Encoding β€” pick your encoding. (-E, --km)
  • Auto detect β€” whether to sniff out the appropriate character encoding all by herself. (--auto)
  • Encoding list β€” the character encodings she's allowed to auto-detect. (--ade)
  • Input Method β€” which input method gets used. (-M, --im)

XIM

  • XIM Server β€” the name of the XIM server to connect to. You can type it from your keyboard, or pick one of the registered XIM servers. (no equivalent command option for this one!) see the XIM Configuration File section for how to register XIM servers.
  • XIM locale β€” the name of the locale used to connect to the XIM server. Popular XIM servers usually have acceptable locales for connecting. If you pick a registered XIM server in Input Method, this gets set automatically. You can also just type the locale name in yourself. πŸ’…

keyboard

  • Option β€” the name of the key mapping table. When you're using ISCII encoding, Indic key mapping is used automatically. In other encodings, this gets auto-selected based on your current locale.

uim

  • Option β€” the name of the conversion engine to use. If you pick auto, the conversion engine gets auto-selected based on your current locale.
needs the uim library, just so you know. πŸ¦‹

m17n library

  • Option β€” the language and the input method to use. If you pick auto, the language and input method get auto-selected based on your current locale.
needs the m17n library and m17n-db.

SCIM

  • No option. she's low maintenance. πŸ’œ

iBus

  • No option either. ✨

Fcitx

  • No option. periodt.

Freewnn

  • Option β€” the address of the host where jserver works.

Canna

  • No option.

SKK

  • Option β€” where the skk dictionary lives (server or file) plus the key used as the sticky shift key.

IIIMF

  • Option β€” the language id (RFC1766) and the language engine to use. If you pick auto, the language id/engine gets auto-selected based on your current locale.
needs the IIIMCF library. 😭
  • Complex Text Layout β€” whether to enable complex text layouting on UTF8 encoding so indic scripts and RTL (right-to-left) languages like Arabic and Hebrew are supported. (-C, --ctl)
  • Combining β€” whether to support combining characters by overstriking. (-m, --comb)
  • Combining = 1 (or 0) logical column(s) β€” process combining characters as if they take up one column logically, while they take up zero columns on screen. (-J, --dyncomb)
  • Process received strings via Unicode β€” when you paste strings into mlterm, they get converted into Unicode and then into mlterm encoding. (-U, --viaucs)
  • OpenType Layout β€” whether to show substituting glyphs in open type fonts using libotf or harfbuzz. (--otl)
  • Ambiguouswidth = fullwidth (UTF8 only) β€” process Unicode characters with the EastAsianAmbiguous property as fullwidth. (-a, --ac)
  • Fullwidth = 2 (or 1) logical column(s) β€” process CJK fullwidth characters as occupying two columns logically, since they occupy two columns on screen. (-Z, --multicol)

🌸 Font page 🌸

everything about appearance (a.k.a. look&feel, a.k.a. the vibe) lives here.

  • Font size β€” font size in pixels. (-w, --fontsize)
  • Foreground color β€” the foreground color for letters. (-f, --fg)
  • Xft β€” use xft as the rendering engine. (-*, --type)
  • Cairo β€” use cairo as the rendering engine. (-*, --type)
  • Anti Alias β€” use anti-alias fonts via Xft or cairo. (-A, --aa)
  • Variable column width β€” use variable column width. (-V, --varwidth)
  • Vertical mode β€” vertical writing mode. (-G, --vertical)
  • Font name β€” specify the XLFD, Xft or cairo font for character sets. The "Select" button pops a dialog so you can choose it. ✨
  • Font policy β€” whether to use unicode fonts (or non-unicode fonts) all the time, no matter which encoding is selected. (-u, --onlyucsfont) (-n, --noucsfont)
  • Unicode areas you won't convert to other charsets β€” the code point areas shown by unicode fonts regardless of the -n option. (--ucsnoconv)
  • Box drawing β€” whether to use a unicode font or (a dec special font) all the time to draw box drawing characters. (--boxdraw)
  • Line space β€” how many extra dots go between lines. (-o, --lsp)
  • Letter space β€” how many extra dots go between characters. (--csp)
  • Underline position β€” the position (offset from the baseline) of the underline. (--ulpos)
  • Baseline position β€” the position (offset from the default baseline) of the baseline. (--blpos)
  • Screen size ratio against font size β€” the actual screen width (screen height when you're in vertical mode). (-1, --wscr)

πŸ¦‹ Background page πŸ¦‹

background configs, all cozy in here.

  • Background color β€” the background color. (-b, --bg)
  • Picture β€” the image file to use as your background image. (-p, --pic)
  • Pseudo Transparent β€” pseudo transparent background. (-t, --transbg)
  • Picture/Transparent Brightness, Contrast, Gamma and Alpha. β€” brightness, contrast, gamma, alpha of the background image. (-H, --bright) (-3, --contrast) (-4, --gamma) (-X, --alpha)
  • Fade ratio on unfocus β€” the fading ratio when the window is unfocused. (-r, --fade)

🎨 Color page 🎨

color configs live here, obviously.

  • Cursor color β€” the color used to show the cursor. (-9, --crfg) (-0, --crbg)
  • Substituting color β€” the color to show instead of the bold, underlined, italic, blinking or crossed-out attribute. (--bd) (--ul) (--it) (--bl) (--co)
  • VT basic 16 colors β€” customize the VT basic 16 text colors.

πŸ’œ Scrollbar page πŸ’œ

scrollbar configs, gathered right here.

  • Position β€” the scrollbar position. (-O, --sbmod)
  • View β€” the name of the scrollbar. (-S, --sbview)
  • Foreground color β€” the foreground color of the scrollbar. (-F, --sbfg)
  • Background color β€” the background color of the scrollbar. (-B, --sbbg)

⭐ Others page ⭐

the misc page. the catch-all. the main character of "where did that setting go".

  • Tab width β€” the column number of tab. (-x, --tw)
  • Backlog size β€” number of lines of backlog. (-l, --sl)
  • Columns/Rows β€” number of columns and rows of the screen. (-g, --geometry)
  • Word separators β€” the delimiter characters used for word selection, consulted when you double-click mlterm, to define what counts as a word. (-W, --sep)
  • Double click interval (msec) β€” doubleclick/tripleclick interval in milliseconds. (-$, --mc)
  • Meta key outputs β€” the behavior of the META key. (-k, --meta)
  • Bell mode β€” the behavior when mlterm receives a BEL (0x07) code. (-7, --bel)
  • Save log β€” whether to log the sequence received from pty into ~/.mlterm/[pty].log in raw or ttyrec format. (--logseq) (--seqfmt)
  • Local echo β€” whether to use local echo mode. (--loecho)
  • Blink cursor β€” whether to blink the cursor. (--blink)
  • Don't scroll automatically in scrolling back. β€” don't exit backscroll mode when console applications output something. (-6, --stbs)
  • Select URI by double click β€” select a URI by double clicking it, regardless of the -W option. (--uriword)
  • Send keys to all windows β€” whether to broadcast input or pasted characters to all ptys whose "ignore_broadcasted_chars" option value is false. (--bc)
  • Trim trailing CR/LF in pasting β€” whether to trim new line characters at the end when pasting text. (--trim)

πŸ‘‘ Buttons πŸ‘‘

these ones are independent from the OK/Apply/Cancel buttons. they do their own thing.

  • Save&Exit / Apply&Exit / Apply / Cancel β€” the Save&Exit button applies the modified configuration to the current mlterm session, saves it to the "~/.mlterm/main" configuration file, and quits the GUI Configurator. The Apply button just applies the modified configuration to the current mlterm session. that's the difference, bestie, don't mix them up. πŸ’…
  • Font size (Larger and Smaller) β€” change the font size.
  • Full reset β€” reset the internal status.
  • Snapshot β€” snapshot the screen and save it to ~/.mlterm/*.snp.
  • SCP β€” transfer a file via SCP.
  • PTY List β€” okay this one's a little lore drop. one process of mlterm may have multiple sessions and screens. the sessions may or may not have a corresponding screen, i.e. the number of sessions can be more than the number of screens. you can end up there by closing a part of multiple screens from the -@/--screens option. in that case, the screen-less session can be assigned to one of the screens by choosing the session (pty) from this list and pushing the "select" button. 🫢

πŸŽ€ CONFIGURABLE MENU πŸŽ€

Okay bestie, this one's cute. Hit a control key plus mouse button 1 and boom β€” mlterm pops open its configurable menu displayer, aka mlterm-menu. It shows you a menu with stuff like "Larger Font" or "UTF-8 encoding", super handy, super quick. ✨

There's a default menu definition already supplied (you're welcome), but you can freely define your own menu items by writing a menu configuration file. Full deets are in the Menu Configuration File section, go look.

Heads up: this feature needs GTK+ 2.x or later. No GTK, no menu, no vibe. πŸ’…

🌈 MULTIPLE XIM 🌈

mlterm can use multiple XIM (X Input Method) servers, not just one. The current XIM is specified by the GUI configurator. Using this, you can input multiple complex languages β€” like Japanese and Korean at the same time. Iconic.

You can also specify the locale used for communication with XIM for each XIM individually. In the GUI configurator you get to either:

  • pick one of the registered pairs of XIM + its locale, or
  • just type in your own favorite XIM and its locale. 🫢

Important: the locale for XIM is only used for talking to the XIM. It is not related to the current mlterm locale. You only need to properly configure the XIM locale when your XIM actually has a preference about the locale of its XIM client (which, in this case, is mlterm). mlterm automatically converts the inputted string into the proper encoding, so you genuinely do not have to care about it. 😌

And of course, the initial XIM is chosen via standard configuration β€” i.e. the XMODIFIERS environmental variable. See X(7) for the details on XIM and the XMODIFIERS variable.


πŸ’€ DAEMON MODE πŸ’€

Invoke mlterm with the -j / --daemon command line option and it starts listening on a unix domain socket, accepting requests from mlclient. It's giving butler energy.

Now, the exit behavior depends on which flavor you're running:

  • With blend, mlterm will exit when the final terminal window is closed. Bye. πŸ‘‹
  • With genuine, mlterm will disconnect from X server windows and keeps on working. In that latter case, it's possible to stop and restart an X server and revive the lasting sessions on mlterm. That's main character energy fr fr. πŸ‘‘

πŸ¦‹ SCROLLBAR πŸ¦‹

mlterm supports a scrollbar API so that users can develop their own scrollbar libraries with whatever arbitrary look and feel they want. Make it cute, make it ugly, make it yours. ✨

To use a scrollbar library: drop it in the specified directory (that directory is determined during the compilation process), then invoke mlterm with the -s -S name option.

The scrollbar libraries named sample, sample3, athena, motif, mozmodern, and next are supplied. Pick your fighter. πŸ’…


⭐ ANTI-ALIAS ⭐

mlterm can use True Type fonts via the -A option, through the FreeType library β€” but only when it has been compiled with the anti-alias option. Compile-time decisions, we love those.

Note this feature needs XFree86 4.0.2 or above and FreeType 2.0.2 or above.

🌸 WALLPAPER 🌸

Yes bestie, backgrounds. mlterm can use a background image (as known as wallpaper) by using the -p / --pic option. And you can also specify the brightness of the image with -H / --bright. Aesthetic customization, obsessed. πŸŽ€

Note this feature needs gdk-pixbuf.

πŸ‘‘ MULTIPLE PTY πŸ‘‘

This is one of the most unique features of mlterm, no cap. The number of windows can be specified using the -P option. Typing control + F1 opens another window which shares the same process. The maximum number of windows can be specified using the --maxptys option. So many windows, so little chaos. πŸͺŸβœ¨


🧚 BACKSCROLL MODE 🧚

mlterm enters into backscroll mode by typing Shift + up or Shift + PageUp. Once you're in the mode, here's your key lineup:

  • j or Down β€” Scroll down one line.
  • k or Up β€” Scroll up one line.
  • u or PageUp β€” Scroll up one page.
  • d or PageDown β€” Scroll down one page.
  • keys defined in key configuration file β€” Shortcut keys work the same way as in normal mode. (INSERT_SELECTION, INSERT_CLIPBOARD, RESET and COPY_MODE exit from the backscroll mode.)
  • other keys β€” Exit from the backscroll mode.

πŸ’– SELECTION πŸ’–

Selection is a mechanism used for copy-and-paste in the X Window System. So yeah, this section is all about so-called copy-and-paste. Let's get into it.

There are many encodings in the world, bestie. Copy-and-paste needs a sender and a receiver, and each of them can be using one of various encodings. So mlterm is designed to be able to receive characters from as many various encodings as possible. Overachiever behavior, honestly. πŸ’…

There are two internationalized types of selection. One is COMPOUND_TEXT, the another is UTF8_STRING.

  • COMPOUND_TEXT is ISO2022-based and can distinguish which character set a character belongs to. However, the character sets COMPOUND_TEXT supports are limited to ISO8859-* and East Asian character sets.
  • UTF8_STRING is Unicode-based and can express all characters from the Unicode character set. However, it cannot distinguish characters from different character sets which share one codepoint in Unicode β€” which can be a problem especially for CJK Han Ideogram (in other words, Kanji, Hanji, or Hanja). Also note that UTF8_STRING is rather new and can be used only with XFree86.

So even though the receiver of copy-and-paste can request its preferable type of selection, the sender may not support the requested type. Which means mlterm has to be able to process both COMPOUND_TEXT and UTF8_STRING. No skipping. 😀

On the other hand, the encodings supported by mlterm (see the DESCRIPTION section for detail) are classified into four categories:

  • (a) Unicode itself β€” UTF-8.
  • (b) subset of Unicode and ISO-2022-compliant β€” "Subset of Unicode" means that Unicode supports round-trip compatibility for the encoding, i.e., the conversion of the encoding --> Unicode --> the encoding doesn't lose any information. "ISO-2022-compliant" means that the encoding can be regarded as a subset of ISO-2022 where a part of ISO-2022 control codes and escape sequences are not supported. Many popular encodings belong to this category such as ISO-8859-*, EUC-*, ISO-2022-KR, TIS-620, TCVN5712, and so on.
  • (c) subset of Unicode and non-ISO-2022-compliant β€” Some of the popular encodings such as Shift_JIS, Big5, GBK, GB18030, Johab, and so on belong to this category.
  • (d) not subset of Unicode β€” ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-3, EUC-TW, and so on. All of them are ISO-2022-compliant.

Now the behavior of mlterm can be explained. Here's the whole chart, exactly as it is:

-------------------------------------------------------
encoding received selection  how to process?
-------------------------------------------------------
   a     COMPOUND_TEXT       convert to Unicode
   a     UTF8_STRING         no need for conversion
   b     COMPOUND_TEXT       user preference *1
   b     UTF8_STRING         convert to the encoding *2
   c     COMPOUND_TEXT       user preference *1
   c     UTF8_STRING         convert to the encoding *2
   d     COMPOUND_TEXT       no need for conversion *3
   d     UTF8_STRING         convert to the encoding *2
-------------------------------------------------------

And the footnotes, because you know they matter:

*1 Characters from unsupported character sets (i.e., characters which cannot be expressed in the mlterm encoding) may appear in the selection (received copy-and-paste string). If you want to receive characters which are equivalent to characters which are supported in the current mlterm encoding (i.e., characters which share the same codepoint in Unicode), you can use the -U (or --viaucs) option. Otherwise, these characters are pasted into mlterm using ISO-2022 escape sequence (when mlterm encoding is category b). Note such ISO-2022 escape sequences are illegal in the current mlterm encoding and the application software will need special feature to treat them properly, though it is displayed well in mlterm. When mlterm encoding is category c, such characters are simply ignored (when -U option is not enabled).

*2 Characters which cannot be converted into mlterm encoding are simply ignored.

*3 Characters from unsupported character sets will be pasted into mlterm using ISO-2022 escape sequence.


🌟 COPY MODE 🌟

mlterm enters into copy mode by typing Shift + Control + Return. Once you're in, you can move around the screen including the backlog, select a region, and copy it β€” all with these keys:

  • j or Down β€” Scroll down one line.
  • k or Up β€” Scroll up one line.
  • l or Right β€” Move right.
  • h or Left β€” Move left.
  • u or PageUp β€” Scroll up one page.
  • d or PageDown β€” Scroll down one page.
  • / β€” Input search string. (forward)
  • ? β€” Input search string. (backward)
  • Control+g β€” Cancel search string.
  • Space or Return β€” Start or finish selection.
  • Mod+Space or Mod+Return β€” Start rectangle selection.
  • Escape or q β€” Exit from the copy mode.
  • Any other keys β€” Stop selection.

🫢 CONFIGURATION 🫢

On start up, mlterm loads configuration files named main, font, vfont, tfont, aafont, vaafont, taafont, color, key, termcap, and xim. The menu configuration file is loaded by the configurable menu displayer (mlterm-menu) instead β€” see the CONFIGURABLE MENU section for detail.

Where do these live?

  • Configuration files for one user go in the ~/.mlterm/ directory.
  • The location for configuration files for all users depends on the compilation option. Possible locations are /etc/, /etc/X11/, /usr/X11R6/lib/X11/mlterm/, and so on.

The names and the roles of the configuration files are:

  • main β€” Main configuration items which can be overridden by command line options.
  • font β€” Configurations for ordinary X fonts.
  • vfont β€” Configurations for ordinary X fonts of variable column width.
  • tfont β€” Configurations for ordinary X fonts of vertical writing.
  • aafont β€” Configurations for Xft or cairo fonts.
  • vaafont β€” Configurations for Xft or cairo fonts of variable column width.
  • taafont β€” Configurations for Xft or cairo fonts of vertical writing.
  • color β€” Designate concrete RGB values for color names.
  • key β€” Key definitions for special features of mlterm.
  • termcap β€” Define mlterm's behaviors which affects terminfo and termcap definition.
  • xim β€” Define preset locales for X Input Methods which are shown in the GUI configurator. Of course you can input XIM names and locales for the GUI configurator which are not listed in this configuration file.
  • menu β€” Define menu items which is displayed by configurable menu displayer.

The contents of these configuration files (other than menu) consist of lines of key=value format. Lines beginning with # are ignored. Simple as that. ✨

Note that the configuration files are changed since version 1.9.44. Don't say we didn't warn you.

🌸 Main Configuration File 🌸

This file contains main configuration items which can be overridden by command line options. The main configuration file main has the following keys. Parentheses show the corresponding command-line options. See the explanation on these command-line options for detail.

  • auto_detect_encodings=value (--ade) β€” Specify character encodings detected automatically.
  • allow_osc52=bool (--osc52) β€” Allow access to clipboard(selection) by OSC 52 sequence.
  • allow_scp=bool (--scp) β€” Allow OSC 5379 scp.
  • allow_change_shortcut=bool (--shortcut) β€” allow dynamic change of shortcut keys by OSC 5379 set_shortcut sequence. yes bestie, hot-swap your shortcuts on the fly πŸ’…
  • alpha=name (-X, --alpha) β€” alpha in pseudo or true transparent. ✨
  • app_name=name (-N, --name) β€” application name (the WM_CLASS property). πŸŽ€
  • auto_restart=bool (--restart) β€” restart mlterm with all opened ptys except ssh if SIGSEGV, SIGBUS, SIGFPE or SIGILL is received. if you want to get core image, specify "false". πŸ‘‘
  • baseline_offset=value (--blpos) β€” specify the position of baseline. the default is 0. 🌸
  • bel_mode=mode (-7, --bel) β€” behavior when BEL (0x07) is received. πŸ””
  • bd_color=value (--bd) β€” specify the color to use to display bold characters. πŸ’–
  • bl_color=value (--bl) β€” specify the color to use to display blinking characters. ✨
  • bg_color=color (-b, --bg) β€” background color. 🎨
  • bidi_mode=mode (--bimode) β€” specify bidi mode. 🌈
  • bidi_separators=characterlist (--bisep) β€” specify separator characters (\x00-\xFF is also available) to render bidi text. πŸ¦‹
  • big5_buggy=bool (-5, --big5bug) β€” support Big5 CTEXT bugs (which exist in XFree86 4.1.0 or before). πŸ’€
  • blink_cursor=bool (--blink) β€” blink cursor. πŸ‘€
  • box_drawing_font=value (--boxdraw) β€” use either unicode font or DEC Special font forcibly to draw box-drawing characters. πŸ“¦
  • borderless=bool (-&, --borderless) β€” don't draw window decorations. 🚫
  • brightness=value (-H, --brightness) β€” specify the amount of darkening or lightening the background image. 🌞
  • broadcast=bool (-H, --bc) β€” whether to broadcast input or pasted characters to all ptys whose value of "ignore_broadcasted_chars" option is false. πŸ“’
  • change_selection_immediately=bool (--chsel) β€” (Available for platforms except x11 and wayland) whether to enable to change selection just after selecting text by mouse. πŸ–±οΈ
  • cipher_list=value (--ciphlist) β€” specify ciphers (comma separated list) for encrypting the ssh session. πŸ”
  • co_color=value (--co) β€” specify the color to use to display crossed-out characters. ❌
  • col_size_of_width_a=value (-a, --ac) β€” number of columns of Unicode characters with EastAsianAmbiguous property. πŸ“
  • compose_dec_special_font=bool (-Y, --decsp) β€” compose line drawing character set. πŸ–οΈ
  • console_encoding=encoding (--ckm) β€” (Available for mlterm-con) specify encoding of the console where mlterm-con works. πŸ–₯️
  • console_sixel_colors=value (--csc) β€” (Available for mlterm-con) specify the number of sixel graphics colors of the console where mlterm-con works. 🎨
  • contrast=value (-3, --contrast) β€” contrast of background image in percent. βš–οΈ
  • cursor_bg_color=color (-0, --crbg) β€” specify background color for cursor. πŸŸͺ
  • cursor_fg_color=color (-9, --crfg) β€” specify foreground color for cursor. 🟩
  • daemon_mode=mode (-j, --daemon) β€” start as a daemon process. πŸ‘»
  • default_cell_size=value (--csz) β€” (Available for mlterm-con) specify cell width and height in pixel which mlterm-con uses if it doesn't get them. πŸ“
  • default_server=value (--serv) β€” specify a host you want to connect via ssh etc. 🌐
  • depth=value (--depth) β€” specify visual depth. 🧊
  • display=value (-d, --display) β€” specify X server to connect. πŸ–₯️
  • emoji_path=value (--emoji) β€” specify path of a directory where emoji image files exist or a open type emoji font to show unicode emoji characters. 😍
  • emoji_file_format=value (--emojifmt) β€” specify filename format of emoji image files in the directory specified by --emoji option. πŸ–ΌοΈ
  • encoding=encoding (-E, --km) β€” specify encoding. πŸ”€
  • exit_backscroll_by_pty=bool (--exitbs) β€” exit backscroll mode on receiving data from pty. πŸšͺ
  • format_other_keys=bool (--fk) β€” send modified keys as parameter for CSI u. (Equivalent to "formatOtherKeys" of xterm) ⌨️
  • fade_ratio=ratio (-r, --fade_ratio) β€” specify fading ratio when window is unfocused. 🌫️
  • fb_resolution=ratio β€” (Available for mlterm-fb on NetBSD/x68k or OpenBSD) specify the screen resolution and depth. (e.g. 768x512x4) πŸ–ΌοΈ
  • fg_color=color (-f, --fg) β€” foreground color. 🎨
  • fontsize=value (-w, --fontsize) β€” font size in pixel. πŸ“
  • font_size_range=range (-R, --fsrange) β€” range of size of usable fonts. πŸ” 
  • gamma=value (-4, --gamma) β€” gamma of background image in percent. 🌈
  • geometry=value (-g, --geometry) β€” specify size and position of the window; see X(7). πŸ“
  • hide_underline=bool (--noul) β€” don't draw underline. 🚫
  • icon_name=name (-I, --icon) β€” icon name. 🏷️
  • icon_path=path β€” path for the image file to be used as window icon. πŸ–ΌοΈ
  • ignore_broadcasted_chars=bool (--ibc) β€” whether to ignore broadcasted characters. πŸ™‰
  • inner_border=value[,value2] (--border) β€” specify inner border width. πŸ–ΌοΈ
  • input_method= input method : [ arguments ... ] (-M, --im) β€” specify input method. ⌨️
  • iso88591_font_for_usascii=bool (-8, --88591) β€” use ISO8859-1 fonts for US-ASCII part of various encodings. πŸ”€
  • it_color=value (--it) β€” specify the color to use to display italic characters. ✨
  • layout_inner_border=value[,value2] (--lborder) β€” specify inner border width of a layout manager. πŸ–ΌοΈ
  • leftward_double_drawing=bool (--ldd) β€” embold glyphs by drawing doubly at 1 pixel leftward instead of rightward. ⬅️
  • letter_space=value (--csp) β€” specify number of extra dots between letters. (ignored if you specify --V option.) if you use multiple fonts whose widths are different, adjust this option. πŸ”€
  • line_space=value (-o, --lsp) β€” specify number of extra dots between lines. (Negative value is available.) if you use multiple fonts whose heights are different, adjust this option. πŸ“
  • locale=value (--locale) β€” specify locale. 🌍
  • local_echo_wait=value (--lew) β€” specify time (msec) to keep local echo mode. ⏳
  • logging_msg=bool (--logmsg) β€” enable logging messages of mlterm to ~/.mlterm/msg[pid].log. πŸ“
  • logging_vt_seq=bool (--logseq) β€” enable logging vt100 sequences to ~/.mlterm/[device].log. πŸ“œ
  • logsize=value (-l, --sl) β€” specify number of lines of backlog or "unlimited". πŸ“š
  • max_ptys=value (--maxptys) β€” specify maximum number of ptys (sessions) to be opened simultaneously. πŸ–₯️
  • meta_prefix=value (--metaprefix) β€” specify prefix characters in pressing meta key if mod_meta_mode = esc. ⌨️
  • mod_keys_to_stop_mouse_report=mode (--norepkey) β€” specify modifier keys to stop mouse reporting. πŸ–±οΈ
  • mod_meta_mode=mode (-k, --meta) β€” behavior of META key. ⌨️
  • mod_meta_key=value (-K, --metakey) β€” specify a key to be regarded as META. ⌨️
  • not_use_unicode_font=bool (-n, --noucsfont) β€” use non-Unicode fonts even when mlterm encoding is UTF-8. πŸ”€
  • only_use_unicode_font=bool (-u, --onlyucsfont) β€” use Unicode fonts even when mlterm encoding is not UTF-8. πŸ”€
  • output_xtwinops_in_resizing=bool (--winsize) β€” output XTWINOPS sequence when the screen is resized unless --conpty option is specified. πŸ–₯️
  • ot_features=value (--gft) β€” specify features of glyph substitution. πŸ”€
  • ot_features=value (--gst) β€” specify script of glyph substitution. πŸ”€
  • parent_window=value (--parent) β€” specify parent Window ID. πŸͺŸ
  • primary_da=value (--da1) β€” specify primary device attributes string. πŸ“Ÿ
  • receive_directory=value (--recvdir) β€” specify the directory to save received files via zmodem or scp. πŸ“
  • receive_string_via_ucs=bool (-U, --viaucs) β€” if the received selection (i.e., copy-and-paste strings) or strings received from XIM is not UTF8_STRING type, convert it into Unicode and then to the current mlterm encoding, in order to identify equivalent characters (i.e., characters which share the same codepoint in Unicode) from various character sets. see SELECTION section below for detail. πŸ”„
  • regard_uri_as_word=bool (--uriword) β€” select URI by double clicking it regardless of --W option. πŸ”—
  • resize_mode=value (--rz) β€” specify the way to display text on the screen when it is resized. πŸ–₯️
  • rv_color=value (--rv) β€” specify the color to use to display reverse characters. πŸ”„
  • sb_bg_color=color (-B, --sbbg) β€” background color for scrollbar. 🎨
  • sb_fg_color=color (-F, --sbfg) β€” foreground color for scrollbar. 🎨
  • screen_width_ratio=value (-1, --wscr) β€” specify actual screen width (screen height in vertical mode). πŸ“
  • scrollbar_mode=mode (-O, --sbmod) β€” specify scrollbar position. πŸ“œ
  • scrollbar_view_name=name (-S, --sbview) β€” specify name of scrollbar. πŸ“œ
  • secondary_da=value (--da2) β€” specify secondary device attributes string. πŸ“Ÿ
  • separate_wall_picture=bool (--multivram) β€” (Available for mlterm-fb on NetBSD/x68k) draw the wall picture on Text VRAM instead of Graphic VRAM to improve the performance of scrolling. πŸ–ΌοΈ
  • simple_scrollbar_dpr=value (--sdpr) β€” specify device pixel ratio to determine the width of "simple" scrollbar. πŸ“
  • ssh_auto_reconnect=bool (--rcn) β€” reconnect to ssh server automatically in unexpected disconnection. πŸ”„
  • ssh_keepalive_interval=value (--keepalive) β€” specify interval seconds to send keepalive message to ssh server. ⏱️
  • ssh_public_key=value (--pubkey) β€” specify public key file for ssh connection. πŸ”‘
  • ssh_private_key=value (--privkey) β€” specify private key file for ssh connection. πŸ”
  • ssh_x11_forwarding=bool (--x11) β€” enable x11 forwarding for ssh connection. πŸ–₯️
  • start_with_local_pty (--slp) β€” (Available for Android or win32) start mlterm with local pty instead of ssh connection. πŸ“±
  • step_in_changing_font_size (-z, --largesmall) β€” specify changing size when font size becomes larger or smaller. πŸ” 
  • tabsize=value (-x, --tw) β€” specify tab width. πŸ“
  • termtype=string (-y, --term) β€” terminal type. πŸ–₯️
  • title=name (-T, --title) β€” title name. 🏷️
  • trim_trailing_newline_in_pasting=bool (--trim) β€” trim new line characters at the end in pasting text. βœ‚οΈ
  • type_engine=value (-*, --type) β€” rendering engine for drawing fonts. 🎨
  • ul_color=value (--ul) β€” specify the color to use to display underlined characters. πŸ–οΈ
  • underline_offset=value (--ulpos) β€” specify the position (offset from the baseline) of underline. the default is 0. πŸ“
  • unicode_full_width_areas=value (--fullwidth) β€” force full width regardless of EastAsianWidth.txt. ↔️
  • unicode_half_width_areas=value (--halfwidth) β€” force half width regardless of EastAsianWidth.txt. ↔️
  • unicode_noconv_areas=value, --ucsnoconv β€” use unicode fonts partially, regardless of what -n says. bestie said "some of it, not all of it" πŸ’…
  • use_aafont=bool, --aafont β€” use your ~/.mlterm/*aafont configs, with fontconfig doing the heavy lifting. (only available for mlterm-fb, mlterm-wl or mlterm-sdl2)
  • use_auto_detect=bool, --auto β€” it just knows the right character encoding, sniffed out from whatever you put in the auto_detect_encodings option. main character energy fr πŸ¦‹
  • use_alt_buffer=bool, --altbuf β€” use the alternate screen buffer.
  • use_ansi_colors=bool, --colors β€” recognize ANSI color change escape sequences. the colors!! 🌈
  • use_anti_alias=bool, -A, --aa β€” use an anti alias font. smooth like butter ✨
  • use_bold_font=bool, --bdfont β€” actually use a bold font for characters that have the bold attribute. as they deserve πŸ‘‘
  • use_clipping=bool, --clp β€” use clipping so you don't get stray dots leaking outside the text drawing area. contained. tidy. slay.
  • use_combining=bool, -m, --comb β€” enable combining characters.
  • use_conpty=bool, --conpty β€” use ConPTY. (available for win32)
  • use_cp932_ucs_for_xft=bool, -c, --cp932 β€” use CP932 - UCS mapping when displaying JISX0208 through Xft or cairo.
  • use_ctl=bool, -C, --ctl β€” enable complex text layouting on UTF8 encoding. it's giving ✨typography✨
  • use_dynamic_comb=bool, -J, --dyncomb β€” enable dynamic character combining.
  • use_italic_font=bool, --itfont β€” use an italic font for characters with the italic attribute. leaning, aesthetically πŸ’…
  • use_local_echo=bool, --loecho β€” use local echo mode.
  • use_locked_title=bool, --locktitle β€” lock the title of a mlterm window. once it's locked, those OSC 0, 1 and 2 esc sequences that try to change it are just ignored. not today 😀
  • use_login_shell=bool, -L, --ls β€” whether to use a login shell or not.
  • use_multi_column_char=bool, -Z, --multicol β€” process full width characters.
  • use_ot_layout=bool, --otl β€” whether to show substituting glyphs in open type fonts, using libotf or harfbuzz.
  • use_point_size=bool, --point β€” treat the value of the -w option as point instead of pixel.
  • use_mdi=bool, -s, --mdi β€” use multiple document interface.
  • use_transbg=bool, -t, --transbg β€” use pseudo transparent background. see-through, iconic 🫢
  • use_urgent_bell=bool, --urgent β€” when a bell sound happens in a window that isn't focused, it draws your attention to it. bestie is tapping the glass 😭
  • use_variable_column_width=bool, -V, --varwidth β€” use variable column width.
  • use_vertical_cursor=value, -Q, --vcur β€” use cursor movement for vertical writing.
  • use_xim=bool, -i, --xim β€” use XIM (X Input Method).
  • vt_color_mode=mode, --vtcolor β€” set vt color mode.
  • vertical_mode=value, -G, --vertical β€” use vertical writing.
  • wall_picture=path, -p, --pic β€” path for the wallpaper image. decorate the girlies 🌸
  • word_separators=characterlist, -W, --sep β€” the delimiter characters used for word selection (\xNN is also available here, fancy).
  • working_directory=value, --working-directory β€” working directory.
  • static_backscroll_mode=bool, -6, --stbs β€” don't exit backscroll mode when console applications output something. you stay where you are, periodt.
  • vt_seq_format=value, --seqfmt β€” specify the format of logging vt100 sequence.
  • wm_role=value, --role β€” specify the application role. (that's the WM_WINDOW_ROLE property, iykyk)

πŸŽ€ Font Configuration Files πŸŽ€

The font configuration files font, vfont, tfont, aafont, vaafont, and taafont have the following keys. no cap, this is the whole roster:

DEFAULT=font
DEC_SPECIAL=font
ISO8859_n=font
TIS620=font
ISCII_HINDI=font
ISCII_MALAYALAM=font
ISCII_ASSAMESE=font
ISCII_BENGALI=font
ISCII_GUJARATI=font
ISCII_KANNADA=font
ISCII_MALAYALAM=font
ISCII_ORIYA=font
ISCII_PUNJABI=font
ISCII_TAMIL=font
ISCII_TELUGU=font
VISCII=font
KOI8_R=font
KOI8_U=font
TCVN5712=font
JISX0201_ROMAN=font
JISX0201_KATA=font
JISX0208_1978=font
JISX0208_1983=font
JISX0208_1990=font
JISX0213_2000_1=font
JISX0213_2000_2=font
KSX1001_1997=font
UHC=font (not used)
JOHAB=font (not used)
GB2312_80=font
GBK=font
BIG5=font
HKSCS=font
CNS11643_1992_n=font
ISO10646_UCS4_1=font
ISO10646_UCS4_1_FULLWIDTH=font
U+XXXX-XXXX=font

okay so that's you specifying fonts for the corresponding character sets. BUT β€” and this is the important bit β€” the format is different between the font, vfont tfont files and the aafont, vaafont taafont files. two whole different vibes.

In font, vfont, tfont files, font is written in the "NAME:PERCENT" format, where "SIZE" is the font size in pixel and "NAME" is an XLFD or alias names of X fonts. if "NAME" contains %d, that gets swapped out for an appropriate font size number. the ":PERCENT" gets multiplied by the font size and decides the character width of a font. and if you just... omit ":PERCENT"? then max font width is used for it. easy 🧚

In aafont, vaafont, taafont files, font is written in the "FAMILY WEIGHT SLANT SIZE:PERCENT" format. again, ":PERCENT" gets multiplied by font size and decides character width of a font. and if ":PERCENT" is omitted here, it's the 'M' width that's used for it instead.

little life hack: the mlfc command generates ~/.mlterm/aafont automatically. let it cook πŸ“
  • charset_BOLD=font β€” specify boldface fonts.
  • charset_ITALIC=font β€” specify italic fonts.
  • charset_BOLD_ITALIC=font β€” specify bold-italic fonts.
  • U+XXXX-XXXX=font β€” specify which fonts to use for unicode ranges except U+00-7f. (those little guys are handled elsewhere, bestie)

🌈 Color Configuration File 🌈

The color configuration file color has the following key.

  • COLORNAME=RGB β€” assign a concrete color for the name COLORNAME. the default colors used by mlterm are black, red, green, yellow, blue, magenta, cyan, and white, and all of them can be overridden right here. πŸ’–

for highlighted colors, a name with the hl_ prefix gets searched automatically. like, for bold red characters, hl_red is searched instead of red. the glow-up is built in ✨

17 - 230 and 232 - 255 in 256 colors can be also overridden.

the format of RGB is either "RRRR-GGGG-BBBB" (where RRRR, GGGG, and BBBB are hexadecimal value from 0 to ffff), "#RRGGBB", "#RRGGBBAA", "rgb:RR/GG/BB" or "rgba:RR/GG/BB/AA" (where RR, GG, and BB are hexadecimal value from 00 to ff).

heads up bestie: if mlterm fails to parse an entry, the color gets regarded as black. no error, no drama, just... black. πŸ’€

🌸 XIM Configuration File 🌸

The X Input Methods configuration file xim has the following format

XIM=locale

where XIM is the XIM name and locale is the locale name used for communication with the XIM server. for example:

kinput2=ja_JP.eucJP
Ami=ko_KR.eucKR
xcin-zh_CN.GB2312=zh_CN.GB2312

these settings are used to create the list of XIMs in the GUI configurator. and okay so here's the thing β€” a XIM that isn't listed in this file can't be selected from the list, but it can still be selected by specifying its name directly. loophole queen πŸ‘‘


πŸ‘‘ Feature Key Configuration File πŸ‘‘

The feature key configuration file key has the following format.

KEY=FEATURE

here, the format for KEY is "(MASK+)KEY", where MASK is one of Control, Shift, Mod1, Mod2, Mod3, Mod4, Mod5, Mod and Alt. and yes you can stack multiple "MASK+"s, go off πŸ’…

you can search spellings of KEY by using the xev(1) command, or by searching keysym macros from /usr/X11R6/include/X11/keysymdefs.h (or the equivalent file in your X11 include directory) and just omitting the XK_ prefix. double quotation marks are not needed. you can also specify Button1, Button2, Button3, Button4 or Button5 as KEY.

FEATURE is one of IM_HOTKEY, EXT_KBD, OPEN_SCREEN, NEW_PTY, OPEN_PTY, NEXT_PTY, PREV_PTY, VSPLIT_SCREEN, HSPLIT_SCREEN, CLOSE_SCREEN, NEXT_SCREEN, PREV_SCREEN, HEXPAND_SCREEN, VEXPAND_SCREEN, PAGE_UP, SCROLL_UP, SCROLL_UP_TO_MARK, SCROLL_DOWN_TO_MARK, SET_MARK, INSERT_SELECTION, INSERT_CLIPBOARD, COPY_CLIPBOARD, RESET, COPY_MODE, "STRING", or "proto:STRING".

  • IM_HOTKEY β€” switch conversion mode of m17n library and kdb input methods. (default UNUSED)
  • EXT_KBD β€” activate or deactivate kbd input method. (this feature was obsoleted by IM_HOTKEY)
  • OPEN_SCREEN β€” open new pty in new screen (default Ctrl+F1).
  • NEW_PTY β€” same as OPEN_SCREEN (obsoleted).
  • OPEN_PTY β€” open new pty in current screen (default Ctrl+F2).
  • NEXT_PTY β€” switch to a next free pty (default Ctrl+F3).
  • PREV_PTY β€” switch to a previous free pty (default Ctrl+F4).
  • HSPLIT_SCREEN β€” open new pty in horizontally split screen (default Shift+F1). (if mlterm -v outputs "no-split", this shortcut key is unavailable.)
  • VSPLIT_SCREEN β€” open new pty in vertically split screen (default Shift+F2). (if mlterm -v outputs "no-split", this shortcut key is unavailable.)
  • NEXT_SCREEN β€” switch to a next unfocused screen (default Shift+F3).
  • PREV_SCREEN β€” switch to a previous unfocused screen (default Shift+F4).
  • CLOSE_SCREEN β€” close current screen (default Shift+F5).
  • HEXPAND_SCREEN β€” expand current screen horizontally (default Shift+F6). (if mlterm -v outputs "no-split", this shortcut key is unavailable.)
  • VEXPAND_SCREEN β€” expand current screen vertically (default Shift+F7). (if mlterm -v outputs "no-split", this shortcut key is unavailable.)
  • PAGE_UP β€” start backscroll mode and scroll up one page (default Shift+Prior).
  • SCROLL_UP β€” start backscroll mode and scroll up by one line (default Shift+Up).
  • SCROLL_UP_TO_MARK β€” start backscroll mode and scroll up to the next marked line (default Control+Shift+Up).
  • SCROLL_DOWN_TO_MARK β€” scroll down to the next marked line (default Control+Shift+Down).
  • SET_MARK β€” set mark to the current line (default Control+Shift+m).
  • INSERT_SELECTION β€” insert selection (default Shift+Insert).
  • INSERT_CLIPBOARD β€” insert clipboard (default Shift+Control+v).
  • COPY_CLIPBOARD β€” copy selected text to clipboard (default Shift+Control+c).
  • RESET β€” reset terminal (default Pause).
  • COPY_MODE β€” enter copy mode, which enables you to select and copy a region by keyboard (default Control+Shift+Return).
  • "STRING" β€” the specified string is issued when the KEY key is pressed. double quotation marks are required around the STRING. and okay, huge note bestie: you cannot control the status of mlterm by sending terminal control codes such as "\x1b]5379;encoding=utf8\x0a" because that code sequence will get caught by your shell (or something running on it) first. 😭 to deliver control sequences to mlterm directly, use "proto:STRING" instead.
  • "proto:STRING" β€” the string you write here gets treated as mlterm's own original control sequence πŸ’… the full menu of them lives in doc/en/PROTOCOL. So like, "proto:encoding=utf8" = swap the current character encoding to UTF-8, easy. And if you want the STRING to actually show up on screen when you hit your shortcut key, just slap (echo) at the front of it β€” so "proto:(echo)encoding=utf8" prints Config: encoding=utf8. cute, right? ✨
  • "exesel:STRING" β€” here STRING is a command to run, with your selected text handed over as arguments 🫢. Any %s in the command string gets replaced by the selected strings. Example: "exesel:mlclient -e w3m" means run mlclient -e w3m [selected text]. selection go brrr πŸ’–
  • "menu:STRING" β€” STRING here is a configuration program that gets executed. For example, "menu:mlterm-menu" = running mlterm-menu. slay ✨

🌈 Terminal Behavior Configuration File 🌈

Okay bestie, this config file decides how mlterm behaves, and those behaviors have to line up with whatever your terminfo and termcap say. In principle, you should NOT edit this file. Instead you pick the right value for the TERM variable (i.e. a proper terminfo/termcap definition) that matches what mlterm does. And like β€” since mlterm can cosplay as a xterm/kterm to some degree, TERM=kterm or TERM=xterm should give you acceptable results. ngl that's the move πŸ™ˆ

But sometimes editing your terminfo/termcap just isn't it. Maybe your software doesn't understand terminfo or termcap at all 😭, or your terminfo/termcap entry is shared between several terminal emulators and changing it would break the other ones. In those cases you can configure mlterm so it plays nice with the terminfo/termcap definitions already on your system. This is also super useful for OS distributors (like Debian πŸ‘‘) with strict policies about how terminal emulators behave.

You can define mlterm's behavior per value of the TERM variable, so you don't have to edit the termcap file every single time you log into another system and use a different TERM value via the -y option πŸŽ€. You can also set the default behavior for when TERM doesn't match any of the TERM names you listed in the termcap file.

The grammar here is giving termcap energy β€” same vibes. First you write one or more name(s) of TERM, joined together with the vertical line character '|'. The special name '*' is for default. Then comes a colon ':', and keys go after it, separated by colons. Configurations for other TERM values start on a new line. periodt πŸ’…

Followings are available keys for each TERM value:

  • kD=sequence β€” the sequence to output when the Delete key is pushed (default \E[3~).
  • kb=sequence β€” the sequence to output when the BackSpace key is pushed (default ^H).
  • kh=sequence β€” the sequence to output when the HOME key is pushed in application cursor key mode. (default \EOH).
  • @7=sequence β€” the sequence to output when the END key is pushed in application cursor key mode. (default \EOF).
  • k1=sequence β€” the sequence to output when the F1 key is pushed (default \EOP).
  • k2=sequence β€” the sequence to output when the F2 key is pushed (default \EOQ).
  • k3=sequence β€” the sequence to output when the F3 key is pushed (default \EOR).
  • k4=sequence β€” the sequence to output when the F4 key is pushed (default \EOS).
  • k5=sequence β€” the sequence to output when the F5 key is pushed (default \E[15~).
  • ut β€” this one decides how the screen gets erased by control codes πŸ‘€. If ut is written in the termcap file, charcells get painted with the current background color when erased; otherwise they get painted with the initial background color. Default is non-ut behavior.

The following special characters can be used to specify sequence in keys of kD/kb/kh/@7:

  • \E β€” ESC code (0x1b).
  • ^? β€” DEL code (0x7f).
  • ^A, ^B,... β€” corresponding control code (0x01 - 0x1a).

This config file defines the menu shown by the configurable menu displayer mlterm-menu. See the CONFIGURABLE MENU section for detail. iykyk πŸ’–


✨ SEE ALSO ✨

Manual pages of mlclient(1), locale(7), charsets(7), UTF-8(7), and X(7). yes bestie, go read them all 🌸

PROTOCOL (https://github.com/arakiken/mlterm/blob/master/doc/en/PROTOCOL) β€” all about mlterm's original control escape sequences, the ones that let you change configurations dynamically πŸ”₯

e.g.)

echo -en "\x1b]5379;encoding=eucjp\x07"

README.android (https://github.com/arakiken/mlterm/blob/master/doc/en/README.android) β€” for mlterm on Android πŸ“±

README.beos (https://github.com/arakiken/mlterm/blob/master/doc/en/README.beos) β€” for mlterm on BeOS (Haiku).

README.brltty (https://github.com/arakiken/mlterm/blob/master/doc/en/README.brltty) β€” for accessibility with the use of brlapi (https://brl.thefreecat.org). 🫢

README.cocoa (https://github.com/arakiken/mlterm/blob/master/doc/en/README.cocoa) β€” for mlterm on MacOSX/Cocoa πŸ“

README.cocoatouch (https://github.com/arakiken/mlterm/blob/master/doc/en/README.cocoatouch) β€” for mlterm on iOS/Cocoa Touch.

README.console (https://github.com/arakiken/mlterm/blob/master/doc/en/README.console) β€” for mlterm on Console.

README.fb (https://github.com/arakiken/mlterm/blob/master/doc/en/README.fb) β€” for mlterm on framebuffer.

README.indic (https://github.com/arakiken/mlterm/blob/master/doc/en/README.indic) β€” for indic scripts ✨

README.sb (https://github.com/arakiken/mlterm/blob/master/doc/en/README.sb) β€” for development of scrollbar library.

README.sdl2 (https://github.com/arakiken/mlterm/blob/master/doc/en/README.sdl2) β€” for mlterm on SDL2.

README.ssh (https://github.com/arakiken/mlterm/blob/master/doc/en/README.ssh) β€” for ssh connection with the use of libssh2 (https://www.libssh2.org). πŸ”

README.wayland (https://github.com/arakiken/mlterm/blob/master/doc/en/README.wayland) β€” for mlterm on Wayland 🌈

README.win32 (https://github.com/arakiken/mlterm/blob/master/doc/en/README.win32) β€” for mlterm on Win32 GDI.

Mapping tables between Unicode and local character sets (and encodings) live at the Unicode Consortium web site (https://www.unicode.org/Public/MAPPINGS/). Note that mapping tables for East Asian character sets and encodings were moved to the OBSOLETE/EASTASIA directory of the site since August 2001. πŸ’€

For BIG5 and BIG5HKSCS encodings, the mapping tables for Unicode are taken from ftp://xcin.linux.org.tw/pub/xcin/i18n/charset/.

Unicode Standard Annex (UAX) #11 East Asian Width, which explains East Asian Width properties, and EastAsianWidth.txt, which defines EastAsianAmbiguous characters in Unicode, are supplied by Unicode Consortium (https://www.unicode.org). πŸ‘‘


πŸ’– FILES πŸ’–

"main", "font", "vfont", "tfont", "aafont", "vaafont", "taafont", "color", "key", "termcap", "xim", and "menu"

  • Configuration files. that's the whole list bestie, collect them all πŸŽ€

🌸 CONTACT 🌸

Subscribe to mlterm-dev-en ML (https://lists.sourceforge.net/lists/listinfo/mlterm-dev-en). 🫢

Attach ~/.mlterm/msg.log, backtrace log and related files to your report if at all possible. fr fr, it helps so much πŸ™ˆ


okay that's the whole page, we did it πŸ’… this gorgeousness is from the 2025-03-30 version of MLTERM(1) β€” go forth and terminal, bestie, you ate πŸ‘‘βœ¨

πŸ“¦ where this page comes from