{
    "content": [
        {
            "type": "text",
            "text": "# multixterm (man)\n\n## NAME\n\nmultixterm - drive multiple xterms separately or together\n\n## SYNOPSIS\n\nmultixterm [ args ]\n\n## DESCRIPTION\n\nMultixterm creates multiple xterms that can be driven together or separately.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **ARGUMENTS**\n- **EXAMPLE COMMAND LINE ARGUMENTS**\n- **FILES**\n- **EXAMPLE FILE**\n- **DOT FILE**\n- **MENUS**\n- **USAGE SUGGESTION - ALIASES AND COMMAND FILES**\n- **USAGE SUGGESTION - SELECTING HOSTS BY NICKNAME**\n- **COMPARE/CONTRAST**\n- **LIMITATIONS**\n- **BUGS**\n- **REQUIREMENTS**\n- **VERSION**\n- **DATE**\n- **AUTHOR**\n- **LICENSE**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "multixterm",
        "section": "",
        "mode": "man",
        "summary": "multixterm - drive multiple xterms separately or together",
        "synopsis": "multixterm [ args ]",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 18,
                "subsections": []
            },
            {
                "name": "ARGUMENTS",
                "lines": 35,
                "subsections": []
            },
            {
                "name": "EXAMPLE COMMAND LINE ARGUMENTS",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "FILES",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "EXAMPLE FILE",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "DOT FILE",
                "lines": 23,
                "subsections": []
            },
            {
                "name": "MENUS",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "USAGE SUGGESTION - ALIASES AND COMMAND FILES",
                "lines": 49,
                "subsections": []
            },
            {
                "name": "USAGE SUGGESTION - SELECTING HOSTS BY NICKNAME",
                "lines": 24,
                "subsections": []
            },
            {
                "name": "COMPARE/CONTRAST",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "LIMITATIONS",
                "lines": 16,
                "subsections": []
            },
            {
                "name": "BUGS",
                "lines": 8,
                "subsections": []
            },
            {
                "name": "REQUIREMENTS",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "VERSION",
                "lines": 7,
                "subsections": []
            },
            {
                "name": "DATE",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "LICENSE",
                "lines": 4,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "multixterm - drive multiple xterms separately or together\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "multixterm [ args ]\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "Multixterm creates multiple xterms that can be driven together or separately.\n\nIn  its simplest form, multixterm is run with no arguments and commands are interactively en‐\ntered in the first entry field.  Press return (or click the \"new xterm\" button) to  create  a\nnew xterm running that command.\n\nKeystrokes  in the \"stdin window\" are redirected to all xterms started by multixterm.  xterms\nmay be driven separately simply by focusing on them.\n\nThe stdin window must have the focus for keystrokes to be sent to the xterms.   When  it  has\nthe  focus, the color changes to aquamarine.  As characters are entered, the color changes to\ngreen for a second.  This provides feedback since characters are not echoed in the stdin win‐\ndow.\n\nTyping in the stdin window while holding down the alt or meta keys sends an escape  character\nbefore the typed characters.  This provides support for programs such as emacs.\n\n",
                "subsections": []
            },
            "ARGUMENTS": {
                "content": "-xa The optional -xa argument indicates arguments to pass to xterm.\n\n\n-xc The  optional  -xc argument indicates a command to be run in each named xterm (see\n-xn).  With no -xc argument, the command is the current shell.\n\n\n-xd The optional -xd argument indicates a directory to search for files that will  ap‐\npear in the Files menu.  By default, the directory is: ~/lib/multixterm\n\n\n-xf The optional -xf argument indicates a file to be read at startup.  See FILES below\nfor more info.\n\n\n-xn The optional -xn argument indicates a name for each xterm.  This name will also be\nsubstituted for any %n in the command argument (see -xc).\n\n\n-xv The  optional  -xv flag puts multixterm into a verbose mode where it will describe\nsome of the things it is doing internally.  The verbose output is not intended  to\nbe understandable to anyone but the author.\n\nLess common options may be changed by the startup file (see FILES below).\n\nAll  the  usual X and wish flags are supported (i.e., -display, -name).  There are so many of\nthem that to avoid colliding and make them easy to remember, all the multixterm  flags  begin\nwith -x.\n\nIf  any  arguments  do  not  match the flags above, the remainder of the command line is made\navailable for user processing.  By default, the remainder is used as a list of xterm names in\nthe style of -xn.  The default behavior may be changed using the .multixtermrc file (see  DOT\nFILE below).\n\n",
                "subsections": []
            },
            "EXAMPLE COMMAND LINE ARGUMENTS": {
                "content": "The following command line starts up two xterms using ssh to the hosts bud and dexter.\n\nmultixterm -xc \"ssh %n\" bud dexter\n\n",
                "subsections": []
            },
            "FILES": {
                "content": "$DOTDIR/.multixtermrc   initial command file\n~/.multixtermrc         fallback command file\n~/lib/multixterm/       default command file directory\n\n",
                "subsections": []
            },
            "EXAMPLE FILE": {
                "content": "The following file does the same thing as the earlier example command line:\n\n# start two xterms connected to bud and dexter\nset xtermCmd \"ssh %n\"\nset xtermNames {bud dexter}\nxtermStartAll\n\n",
                "subsections": []
            },
            "DOT FILE": {
                "content": "At  startup,  multixterm  reads  ~/.multixtermrc  if present.  This is similar to the command\nfiles (see FILES above) except that .multixtermrc may not call xtermStartAll.  Instead it  is\ncalled implicitly, similar to the way that it is implicit in the command line use of -xn.\n\nThe  following example .multixtermrc file makes every xterm run ssh to the hosts named on the\ncommand line.\n\nset xtermCmd \"ssh %n\"\n\nThen multixterm could be called simply:\n\nmultixterm bud dexter\n\nIf any command-line argument does not match a multixterm flag, the remainder of  the  command\nline  is  made  available  to  .multixtermrc in the argv variable.  If argv is non-empty when\n.multixtermrc returns, it is assigned to xtermNames unless xtermNames is non-empty  in  which\ncase, the content of argv is ignored.\n\nCommands  from  multixterm are evaluated early in the initialization of multixterm.  Anything\nthat must be done late in the initialization (such as adding additional bindings to the  user\ninterface) may be done by putting the commands inside a procedure called \"initLate\".\n\n",
                "subsections": []
            },
            "MENUS": {
                "content": "Except  as  otherwise  noted,  the menus are self-explanatory.  Some of the menus have dashed\nlines as the first entry.  Clicking on the dashed lines will \"tear off\" the menus.\n\n",
                "subsections": []
            },
            "USAGE SUGGESTION - ALIASES AND COMMAND FILES": {
                "content": "Aliases may be used to store lengthy command-line invocations.  Command files can be also  be\nused to store such invocations as well as providing a convenient way to share configurations.\n\nTcl  is a general-purpose language.  Thus multixterm command files can be extremely flexible,\nsuch as loading hostnames from other programs or files that may change from  day-to-day.   In\naddition,  command  files  can be used for other purposes.  For example, command files may be\nused to prepared common canned interaction sequences.  For example, the command to  send  the\nsame string to all xterms is:\n\nxtermSend \"a particularly long string\"\n\nThe  File menu (torn-off) makes canned sequences particularly convenient.  Interactions could\nalso be bound to a mouse button, keystroke, or added to a menu via the .multixtermrc file.\n\nThe following .multixtermrc causes tiny xterms to tile across and down the screen.  (You  may\nhave  to  adjust the parameters for your screen.)  This can be very helpful when dealing with\nlarge numbers of xterms.\n\nset yPos 0\nset xPos 0\n\ntrace variable xtermArgs r traceArgs\n\nproc traceArgs {args} {\nglobal xPos yPos\nset ::xtermArgs \"-geometry 80x12+$xPos+$yPos -font 6x10\"\nif {$xPos} {\nset xPos 0\nincr yPos 145\nif {$yPos > 800} {set yPos 0}\n} else {\nset xPos 500\n}\n}\n\nThe xtermArgs variable in the code above is the variable corresponding to the -xa argument.\n\nxterms can be also be created directly.  The following  command  file  creates  three  xterms\noverlapped horizontally:\n\nset xPos 0\nforeach name {bud dexter hotdog} {\nset ::xtermArgs \"-geometry 80x12+$xPos+0 -font 6x10\"\nset ::xtermNames $name\nxtermStartAll\nincr xPos 300\n}\n\n",
                "subsections": []
            },
            "USAGE SUGGESTION - SELECTING HOSTS BY NICKNAME": {
                "content": "The  following  .multixtermrc  shows an example of changing the default handling of the argu‐\nments from hostnames to a filename containing hostnames:\n\nset xtermNames [exec cat $argv]\n\nThe following is a variation, retrieving the host names from the yp database:\n\nset xtermNames [exec ypcat $argv]\n\nThe following hardcodes two sets of hosts, so that you can call multixterm with either \"clus‐\nter1\" or \"cluster2\":\n\nswitch $argv {\ncluster1 {\nset xtermNames \"bud dexter\"\n}\ncluster2 {\nset xtermNames \"frank hotdog weiner\"\n}\n}\n\n\n\n",
                "subsections": []
            },
            "COMPARE/CONTRAST": {
                "content": "It is worth comparing multixterm to xkibitz.  Multixterm connects a separate process to  each\nxterm.  xkibitz connects the same process to each xterm.\n\n",
                "subsections": []
            },
            "LIMITATIONS": {
                "content": "Multixterm provides no way to remotely control scrollbars, resize, and most other window sys‐\ntem related functions.\n\nBecause  xterm  has no mechanism for propagating size information to external processes, par‐\nticularly for character graphic applications (e.g., vi, emacs), you may have to manually  en‐\nsure  that  the  spawned process behind each xterm has the correct size.  For example, if you\ncreate or set the xterm to a size, you may have to send an explicit  stty  command  with  the\ncorrect  size  to the spawned process(es).  Alternatively, you can add the correct size argu‐\nment when an xterm is created (i.e., \"-geometry 80x20\").\n\nMultixterm can only control new xterms that multixterm itself has started.\n\nAs a convenience, the File menu shows a limited number of files.  To show all the files,  use\nFile->Open.\n\n",
                "subsections": []
            },
            "BUGS": {
                "content": "If  multixterm  is killed using an uncatchable kill, the xterms are not killed.  This appears\nto be a bug in xterm itself.\n\nSend/expect sequences can be done in multixterm command files.  However, due to the  richness\nof  the  possibilities,  to  document it properly would take more time than the author has at\npresent.\n\n",
                "subsections": []
            },
            "REQUIREMENTS": {
                "content": "Requires Expect 5.36.0 or later.\nRequires Tk 8.3.3 or later.\n\n",
                "subsections": []
            },
            "VERSION": {
                "content": "This man page describes version 1.8 of multixterm.\n\nThe latest version of multixterm is available from  http://expect.nist.gov/example/multixterm\n.  If your version of Expect and Tk are too old (see REQUIREMENTS above), download a new ver‐\nsion of Expect from http://expect.nist.gov\n\n",
                "subsections": []
            },
            "DATE": {
                "content": "April 30, 2002\n\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "Don Libes <don@libes.com>\n\n",
                "subsections": []
            },
            "LICENSE": {
                "content": "Multixterm  is  in  the public domain; however the author would appreciate acknowledgement if\nmultixterm or parts of it or ideas from it are used.\n\n16 August 2002                              MULTIXTERM(1)",
                "subsections": []
            }
        }
    }
}