SEYON(1)
okay so bestie, welcome to the General Commands Manual, section 1, and it's the manual page for SEYON β the X11 telecommunications package π this one is LONG so grab a snack, we're doing this in parts, and I'm not skimping on a single flag, promise π«Ά
β¨ NAME β¨
Seyon β X11 Telecommunications Package. That's the whole vibe, that's the whole name π
πΈ SYNOPSIS πΈ
seyon [-option ...] [-toolkit_option ...] [-- -emulator_option ...]
Look at her. Iconic. Simple. She contains multitudes π₯
π DESCRIPTION π
Seyon is a complete, full-featured telecommunications package for the X Window System. Not "kind of does the thing" β complete. Full-featured. Main character energy fr fr π
Some of her features, because the list is a whole buffet:
- Dialing directory that supports an unlimited number of entries. The directory is fully mouse-driven and features call progress monitoring, dial timeout, automatic redial, multi-number dialing, and a circular redial queue π Every single item in the dialing directory can be configured with its own baud rate, bit mask, and script file. The directory uses a plain-text phone book that you can edit from within Seyon, and yes she also supports manual dialing β sometimes you just wanna type it out yourself, no judgment π
- Terminal emulation window supporting
DEC VT02,Tektronix 4014, andANSI. Here's the slay part: Seyon delegates its terminal emulation toxterm, so all the familiar xterm functions β scroll-back buffer, cut-and-paste utility, visual bell β are available right through Seyon's terminal emulation window π¦ Using xterm also means Seyon has a more complete emulation of VT102 than any other Unix or DOS telecommunications program. No cap. And other terminal emulation programs can be used with Seyon too, whatever suits your need β for example, colorxtermcan be used to provide emulation for color ANSI (super popular on many BBS systems), andxvtcan be used if memory is a bit tight π - Script language to automate tedious tasks such as logging into remote hosts β¨ Seyon's script interpreter uses plain-text files and has a syntax similar to that of
sh, with a few extra additions. It supports many familiar statements such as conditional branching byif-elseand looping bygoto. Scripts may be assigned to items in the dialing directory for automatic execution after a connection is made π - Unlimited number of slots for external file transfer protocols π Protocols are activated from a mouse-driven transfer console that uses a plain-text file, editable from within Seyon, for protocol configuration. Seyon prompts you for filenames only if the chosen protocol requires filenames, or if the transfer operation is an upload β and for uploads Seyon also accepts wildcards π Multiple download directories can be specified for the different transfer slots.
- Support for Zmodem auto-download π Seyon detects incoming Zmodem signature and automatically activates a user-specified zmodem protocol to receive incoming files. Zmodem transfers can thus be completely automatic and require zero user intervention. Obsessed.
- Translation modes πΈ Seyon can perform useful translations on your input. For example, Seyon can translate backspace to delete (useful on many Unix systems), newline to carriage return (useful on many BBS hosts), and my favorite, meta key translation: to send keys pressed while the meta (
ALT) key is held down as an escape (ESC) followed by the key press. The latter mode simulates the meta key on hosts that do not support 8-bit-clean connections and makes possible the use of the meta key in programs like Emacs on such hosts π§ - Other features: interactive setting of program parameters, on-line help, software (
XONN/XOFF) and hardware (RTS/CTS) flow control, session capture to a file, and temporary running of a local shell in the terminal emulation window π
Seyon is intended to be both simple and extensively configurable. Almost every aspect of Seyon can be configured via the resources to suit your taste, so go off, customize her, make her yours π
β OPTIONS β
Besides the toolkit options, Seyon recognizes the following command-line switches:
-modems <device-list>β Overrides the resourcemodems. Go read the description of that resource below π Unlike the resource, though, the list here has to be quoted if it consists of more than one entry. Quote it, bestie.-emulator <terminal-emulation-program>β Tells Seyon to use the specified program as the terminal emulator. If Seyon fails to execute that program, it will fall back toxterm. If this option is not given, Seyon will try to useseyon-emu, which should be a link to your favorite terminal emulation program. Seyon will fall back toxtermin this case as well if it fails to executeseyon-emuπ¦--β This switch instructs Seyon to pass the rest of the command-line to the terminal emulation program. All options following this switch will be passed blindly to the emulator π This switch cannot be combined with-noemulator.-nodefargsβ Seyon usually invokes the terminal emulation program with some options to set the application name and window and icon titles (those are-name Seyon -T "Seyon Terminal Emulator" -n Terminal). If this switch is given, Seyon will not pass those options to the emulator. This is to accommodate terminal emulation programs that use a different command-line syntax thanxtermβ likexvt,cmdtool,shelltool, ..etc. You can use the--switch to pass your own options to the emulator π-noemulatorβ This option is valid only if Seyon is invoked from within a terminal emulation program in the foreground of an interactive shell session. If given, Seyon will not launch a new terminal emulator, but will use the existing one instead π You cannot use the--switch if this option is given.-script <script-file>β Causes Seyon to automatically execute the specified script after the startup script is run. The specified script file will be looked for according to the rule mentioned under the description of the resourcescriptDirectorybelow π-entries <entries-list>β Overrides the resourcedefaultPhoneEntries. Go read the description of that resource below π Unlike the resource, though, the list here has to be quoted if it consists of more than one entry.-dial,-nodialβ Overrides the resourcedialAutoStartand sets it to'on'and If both-dialand-nodialare specified on the command-line, the override value will be set according to the last of the two on the command-line. Last one wins, periodt π
π RESOURCES π
Besides the toolkit resources, Seyon defines the following proprietry resources:
autoZmodem (boolean)
Specifies whether Seyon is to look for Zmodem auto-download signature. If enabled, Seyon will detect incoming Zmodem signature and execute the action given by the resource autoZmodemAction (typically to start a local rz). Otherwise, Zmodem signature will be ignored π«Ά
Default value: on
autoZmodemAction (string)
Specifies a simple or compound action that will be executed when Zmodem auto-download signature is detected. This action will be executed only if the resource autoZmodem is enabled (see above π). Refer to the section entitled SeQuickKeys for a description of available actions β¨
Default value: ShellCommand($rz);
backspaceTranslation (boolean)
Whether to translate your backspace to delete. When the remote host is a Unix system, it's better to set this to on, since many Unix systems are not happy with backspace π€
Default value: off
captureFile (string)
The name of the capture file. Seyon will write session captures to this file when capture is enabled. This file will be placed in Seyon's default directory π The capture file will not be overwritten by successive capture sessions β Seyon will merely append new capture to its end. So it just keeps growing, bestie, keep an eye on it π
Default value: capture
connectString (string)
The modem connect string. This is the string response the modem gives when a connection is made after dialing π
Default value: CONNECT
defaultBits (int)
The default number of bits (character size). Seyon will set the number of bits to this value on startup and will use it for items in the dialing directory for which no such parameter is given. Valid values are 5, 6, 7, and 8 π
Default value: 8
defaultBPS (string)
The default baud rate. Seyon will set the baud rate to this value on startup and will use it for items in the dialing directory for which no baud rate is given π¦
Default value: 9600
defaultDirectory (string)
Seyon's default directory. When looking for its files, Seyon will first try this default directory, then the current directory. Seyon will also put the capture file in this directory π
Default value: ~/.seyon
defaultParity (int)
The default parity. Seyon will set the parity to this value on startup and will use it for items in the dialing directory for which no such parameter is given. Valid values are 0 (no parity), 1 (odd parity), and 2 (even parity) β¨
Default value: 0
defaultPhoneEntries (int array)
This resource specifies a list of numbers corresponding to the order the entries in the dialing directory appear at. Seyon will highlight (select) those entries on startup and whenever you click ``Default'' from the dialing directory π This is useful if there is a set of entries that you most frequently dial that you want to be highlighted automatically instead of doing that every time by hand. You can override this resource by the -entries command-line switch. Unlike the command-line switch, however, the list here should not be quoted. Phonebook entries numbering starts at one π
No default value.
defaultStopBits (int)
The default number of stop bits. Seyon will set the number of stop bits to this value on startup and will use it for items in the dialing directory for which no such parameter is given. Valid values are 1 and 2 π
Default value: 1
dialAutoStart (boolean) β bestie, this one tells Seyon to justβ¦ start dialing on startup? The entries it dials are the ones in the defaultPhoneEntries resource (or whatever override command-line switch you used for that). Timing matters here: Seyon kicks off the dialing after it runs the startup script and any script you handed it on the command line. Now, the way more convenient route for auto-dialing is the override command-line switch -dial β it overrides this resource and turns it on. And if the resource is on, you can shut it off from the command line with the override switch -nodial. Go read the descriptions of those switches above, iykyk. Default value: off β¨
dialCancelString (string) β the string Seyon yeets at the modem to cancel a dial that's mid-progress. Default value: ^M
dialDelay (int) β how many seconds Seyon chills after no connection is made within dialTimeOut before it moves on to the next number. Default value: 10
dialDirFormat (string) β okay so this is a format string that decides the layout of your dialing directory π. The default is %-15s %-15s %6s %1c%1c%1c %1c%1c %s (no quotes). Real quick tour: the fields are the host name, the number, the baud rate, bits, parity, stop bits, whether there's a custom prefix, a suffix, and the script name. You can figure out which field is which by comparing it against your actual dialing directory β fields that use the current setting (via the keyword CURRENT) get marked with a question mark. Heads up though: you cannot change the order the items appear in the dialing directory, only the format. Example time! If every number you call is 7 digits, your host names are short, you never go above 9600 baud, and you're a dashes-between-the-baud-rate-bits-parity-and-stop-bits kind of person, then you might vibe harder with the format string %-10s %-8s %5s-%1c-%1c-%1c %1c%1c %s, which is narrower than the default. Default value: %-15s %-15s %6s %1c%1c%1c %1c%1c %s
dialPrefix (string) β the string Seyon sends to the modem before the phone number. Want pulse dialing? Set this resource to ATDP π
. Default value: ATDT
dialRepeat (int) β how many times Seyon should try dialing a number. If no connection happens after this many tries, Seyon gives up on it, periodt. Default value: 5
dialSuffix (string) β the string Seyon sends to the modem after the phone number. Not optional, bestie: this string has to contain a carriage return or the number will literally never get sent to the modem π. Default value: ^M
dialTimeOut (int) β how many seconds Seyon waits for a connection to be made after dialing finishes. If no connection happens within that window, Seyon cancels the dial. Default value: 45
exitConfirm (boolean) β should Seyon ask before hanging up when you exit? Here's the tea: if you're off-line and ignoreModemDCD is set to off, Seyon will not prompt for hanging up on exit even if this resource is set to on. Default value: on
funMessages (string array) β the fun little messages Seyon shows when it has no other important info to display. This should be a list of double-quoted [funny] sentences π. Default value: varies, version-dependent
funMessagesInterval (int) β the time interval, in seconds, between one fun message and the next. Default value: 15
idleGuard (boolean) β set this to on and Seyon will send a string to the remote host whenever your terminal session goes idle (no keyboard input) for a given amount of time. The idleGuardInterval and idleGuardString resources are the ones that specify that time interval and the string to send. Super useful when you wander away from the computer for a while and want to keep the session alive (e.g. so you don't get auto-logged-out) πΈ. Default value: off
idleGuardInterval (int) β how long, in seconds, with zero keyboard activity at the terminal, before Seyon counts the session as idle. Seyon sends a string to the remote host every such interval for as long as the session stays idle. Default value: 300
idleGuardString (string) β the string sent to the remote host while the session is idle. It goes out at a regular interval as long as the session remains idle. Ngl, one lil detail: the current translations get used when this string is sent β so for example, if backspaceTranslation is enabled, then the default string <Space><BS> gets sent as <Space><DEL>. Default value: \s^H (space then backspace)
ignoreModemDCD (boolean) β set this to on and the modem DCD (Data Carrier Detect) status is completely ignored. Some of the consequences of flipping it to on: Seyon will always prompt for hangup (if the exitConfirm resource is set to on) even when the modem DCD status says it's off-line, and dialing will be attempted even when the modem DCD status says it's on-line.
Bestie I'm begging you, keep this set to off unless your modem genuinely does not honor the DCD line. Go consult your modem's manual for the details π.
Default value: off
hangupBeforeDial (boolean) β when on, Seyon hangs up the line (if it's connected) before dialing the phone number. Otherwise the number gets dialed without hanging up first, and it becomes your responsibility to make sure the line is clear (no connection) when dialing π. Default value: on
hangupConfirm (boolean) β whether Seyon should ask for confirmation before hanging up the phone. Default value: on
hangupViaDTR (boolean) β when enabled, Seyon hangs up the modem by dropping DTR. That's so much quicker than sending a Hayes-like hangup string and then waiting out the escape guard time. But plot twist: some modems and serial drivers choke on dropping DTR, and others just flat-out don't hang up when DTR drops β in those cases it should be disabled. If it is disabled, Seyon hangs up by sending the string in the modemAttentionString resource, followed by the one in modemHangupString. Default value: off
metaKeyTranslation (boolean) β whether to transmit keys pressed while the meta (ALT) key is held down as an escape (ESC) followed by the key press. Most hosts don't support 8-bit sessions, which means they don't recognize the meta key at all. So when you're connected to hosts like that, this translation mode has to be enabled if you want to actually use the meta key in programs that make use of it, like Emacs β¨. Default value: on
modemAttentionString (string) β the string sent to the modem to get its attention (i.e. switch it to command mode). This gets sent to the modem before the hangup string whenever hangupViaDTR is disabled. Default value: +++
modemHangupString (string) β the hangup string to send to the modem when hangupViaDTR is disabled. Default value: ATH^M
modems (string) β a list of modem devices to use. Seyon goes through the modems in this list one after the other until it finds an available modem or the list runs out. No default value.
modemStatusInterval (int) β this resource controls the amount of time (in seconds) between updates to the modem status toggles (the clock included π). The default is five seconds, but you can set it to one second (or literally any other number) if you want those toggles updating more often. And even if you set it to a big number, Seyon is smart enough to update the toggles after each connect or hangup, so don't stress. Default value: 5
modemVMin (int) β this one specifies the minimum number of characters that should be in the buffer before the read process is satisfied. The read process waits until that many incoming characters are in the buffer, or until 0.1 second has elapsed between the reception of two characters, before displaying the data in the buffer. The result? Data gets displayed in chunks and the terminal display speeds up π₯. The speedup is most noticeable on slow machines with fast modems.
Leave this resource at its default (1), or set it to a low value (6), if you've got a slow modem (e.g. 2400bps). Otherwise you might set it to the maximum value, which is platform-dependent but generally 255. If you set it to anything greater than the maximum value, it gets truncated down to the maximum value. Default value: 1
newlineTranslation (string) β when you press the Enter key, a newline character (\n) is generated, and this resource decides what that character gets translated to. Three modes exist: no translation (newline), carriage return (\r), and carriage return / line feed. Unix systems usually expect newline or carriage return; DOS systems expect carriage return or carriage return / line feed. The three keywords for those modes are nl, cr, and cr/lf. Default value: cr
noConnectStringX [X = 1-4] (string) β the response strings the modem gives you when a connection fails. Default values: NO CARRIER, NO DIALTONE, BUSY, VOICE (respectively)
phonelistFile (string) β the name of your phone list (dialing directory) file. Peep the included example to learn how this file should be formatted π. Default value: phonelist
postConnectAction (string) β specifies a simple or compound action that runs after a connection to a remote host is made. It runs before any script attached to that host in the dialing directory. Important: all actions here have to be synchronous. For a rundown of the available actions, refer to the section entitled SeQuickKeys below. Default value: Beep();
protocolsFile (string) β the name of the protocols file. This file tells Seyon which file transfer protocols are available, and the user gets prompted with a list based on it whenever a file transfer is about to be initiated. Default value: protocols
quickKey? β refer to the section entitled SeQuickKeys below π¦.
rtsctsFlowControl (boolean)
Whether Seyon should flip on RTS/CTS hardware flow control. Bestie, make sure your modem is set to use this too, or it's gonna be a mess. Default value: off
scriptDirectory (string)
Seyon's script directory. When it's out here looking for scripts, Seyon will hit this script directory first, then the current directory. Default value: defaultDirectory
showFunMessages (boolean)
Whether to show funny messages when Seyon has literally nothing else important to tell you. Seyon will display those messages at an interval set by the funMessagesInterval resource, but only when there's no other important info to convey. To disable the display of fun messages, this resource has to be set to off. Default value: on
startupAction (string)
Specifies a simple or compound action that gets executed on startup. This action runs prior to running any script (if the -script switch was given) or dialing any entry of the dialing directory (if the -dial switch was given, or the dialAutoStart resource is enabled). You can make Seyon open the dialing directory automatically on startup by using the simple action ``OpenWidnow(Dial);'' as a constituent of this complex action stack. Note that running the startup script is just a special case of this resource. Go read the section called SeQuickKeys for a description of the available actions. Default value: RunScript(startup);
startupFile (string)
Seyon's startup file. Seyon will execute every command in this file upon startup. This file can have any commands acceptable as script commands. The most useful command to put here is the set command, to set the various communications parameters. Default value: startup
stripHighBit (boolean)
Whether to strip the high (eights) bit from incoming characters. If set to on, the high bit of all incoming characters gets stripped, which makes an 8-N-1 setting behave like 7-N-1, even though eight bits are used for each character. Default value: off
xonxoffFlowControl (boolean)
Whether Seyon should turn on XON/XOFF software flow control. Default value: off
β¨ SEQUICKKEYS β¨
Seyon lets you have custom buttons, called SeQuickKeys (or quickies, iykyk π
), and you can attach actions to them. SeQuickKeys are the convenient little shortcut via which you can invoke frequently-used operations with a single mouse click (iconic behavior, fr fr). SeQuickKeys are specified through the resources quickKeyX, where X is an integer corresponding to the order at which that SeQuickKey is to appear on the command center. The relevant subparts of that resource are visible, action, and label. Here's an example:
Seyon*quickKey3.visible: on
Seyon*quickKey3.action: FileTransfer(1,file); Beep();
Seyon*quickKey3.label: Upload
The first line says SeQuickKey3 should be visible. The second line specifies the action bound to the SeQuickKey (in this case, a compound action), and the third line specifies the label for that SeQuickKey's button. Other subparts can also be specified in a similar fashion (e.g. background, foreground, ..etc.)
Actions can be either simple or compound. A compound action is a stack of simple actions and can be used as a simple mini-script. Examples:
Set(idleGuard,on); DialEntries(Default);Echo("Uploading files..."); Transmit(rz); \<br>FieTransfer(1,"*.ico $HOME/acct.wks"); Echo(Done);OpenWindow(Dial); DialEntries("2 5 6");Echo("Goodbye.."); Hangup(); Quit();Set(baud,9600); ManualDial("555-5555");Echo("Will upload..."); ShellCommand("$sz *.wks");Set(parity,0); RunScript(login.scr); Echo(Finished);
Okay so here's the full list of actions Seyon currently supports. Asterisks mark the asynchronous actions. Brackets mark optional arguments.
Beep ();
Rings the bell, making a short beep. π
CloseWindow(window [,...]);
Closes (dismisses) the given windows. Currently the only valid argument to this action is Dial, which corresponds to the dialing directory window. Example: CloseWindow(Dial);
DialEntries(entries-list); *
Dials entries in the dialing directory corresponding by order to the given list. Entries get dialed as if the user had selected them on the dialing directory. Entries get dialed without opening the dialing directory. You can use the action ``OpenWindow(Dial);'' and stack the two actions in a compound action if you want the dialing directory to be opened.
The list must be quoted if it consists of more than one entry, and entries should be separated by white space, not commas. If the list consists of just the word ``Default'', then the entries given by the resource defaultPhoneEntries will be dialed β go check that resource's description for more details.
The most common use of this action is attaching frequently-dialed hosts to SeQuickKeys, making dialing those hosts a one-click operation. Heads up: if this action is not the last in a compound action stack, actions specified by the resource postConnectAction may not work properly. Examples: DialEntries(2); DialEntries("2 4 5"); DialEntries(Default);
DivertFile([file]); *
Sends the given file to the remote host as a text upload. If the optional argument ``file'' is not specified, Seyon will pop up a dialog box asking for the file name. In that latter case, this action is similar to clicking Divert from the Misc window. Examples: DivertFile("/tmp/acct.wks"); DivertFile();
Echo([string]);
Echos the given string to the terminal. It does not send it to the modem (use Transmit for that). If the string consists of more than one word, it must be quoted. Note that unlike the shell command of the same name, this command does not accept the switch -n β it always appends a newline to the string. If the argument is omitted, an empty line will be echoed. Examples: Echo(Hello); Echo("Hello there"); Echo();
FileTransfer(entry, [file-list]); *
Executes the transfer protocol corresponding by order in the transfer console (protocols file) to ``entry''. If that protocol requires a file name and file-list is omitted, Seyon will pop up a dialog box asking for the file. Otherwise file-list will be passed to that protocol. The list must be quoted if it consists of more than one word, and items in it should be separated by white space. It can contain wild cards and shell variables. Examples: FileTransfer(1); FileTransfer(2,acct.wks); FileTransfer(2,"*.wks $HOME/acct.wks");
Hangup();
Disconnects the line. Does not pop up a confirmation box. Just hangs up on the modem, no explanation, no text back π
IconifyWindow(window [,...]);
Iconifies the given windows. Valid arguments to this action are Main, Dial, and Term, corresponding respectively to the command center, dialing directory, and terminal emulator windows. When the argument is Term, this action will work only if the terminal emulator sets the environment variable WINDOWID, like xterm does. Examples: IconifyWindow(Main,Dial,Term); IconifyWindow(Dial);
ManualDial([number]); *
Dials a number as if the Manual button had been clicked from the dialing directory. If ``number'' is specified, it will be dialed directly and no dialog box will be popped up asking for the number. Examples: ManualDial(555-5555); ManualDial();
Message([string]);
Echos the given string to the message box of Seyon's command center (main window). If the string consists of more than one word, it must be quoted. If the argument is omitted, an empty line will be echoed. Examples: Message(Hello); Message("Hello there"); Message();
OpenWindow(window [,...]);
Opens each of the given windows by popping it if it's closed, or de-iconifying it if it's in an iconic state. Valid arguments to this action are Main, Dial, and Term, corresponding respectively to the command center, dialing directory, and terminal emulator windows. When the argument is Term, this action will work only if the terminal emulator sets the environment variable WINDOWID, like xterm does. Examples: OpenWindow(Main,Dial,Term); OpenWindow(Dial);
Quit();
Exits Seyon completely and returns to the shell. Does not pop up a confirmation box. It's giving "leaving the group chat with no goodbye" π
RunScript([script-name]); *
Executes the script given by the file script-name. The script will be executed as if the user had selected it via the Script button. If script-name is omitted, a dialog box will be popped up asking for the script name. This is a very versatile action, because so many remote and local commands (or series of commands) can be performed by attaching appropriate scripts to SeQuickKeys. Examples: RunScript(login.scr); RunScript();
Set(parameter, value);
Sets the specified parameter to the given value. Can be used to set the various communications parameters. The available parameters are listed under the script command ``set''. Examples: Set(baud,9600); Set(parity,0); Set(idleGuard,off).
ShellCommand(shell-command); *
Executes the given shell command via the user's shell pointed to by the SHELL environment variable, or /bin/sh if that environment variable is not set. Note that the command must be quoted if it consists of more than one word. If the first non-space letter of the command is the character ``$'', then standard input and standard output will be redirected to the modem. This action can be used to execute any external program from within Seyon. Example: ShellCommand(ls); ShellCommand("$cd $HOME; sz -vv *.wks");
Transmit(string);
Transmits the given string to the remote host. The string must be quoted if it consists of more than one word. The string is transmitted as is (no case conversions are performed). No newline character or carriage return is appended to the string β use the prefix characters for that (e.g. ^M, ^J). See the description of the script command ``transmit'' for more details. Example: Transmit(ls^M); Transmit("ls -CF^M");
π SCRIPT LANGUAGE π
okay bestie, this is the fun part π script files let you automate all the tedious little tasks β like logging into a system, literally the most boring thing ever β so you never have to do them by hand again. a script file is an ascii text file, and you can write or edit it with any standard text editor. no special tools, no β¨ vibes required β¨.
the script file gets read line by line, k. empty lines (the ones that are nothing but white space) are just ignored, no thoughts head empty. comments are lines whose first non-space character is a pound sign (#).
the script processor reads each script line, ignoring leading white space, and breaks it into words. and a word is defined as either:
- a sequence of characters delimited by white space, or
- a sequence of characters enclosed in single or double quotes.
the first word of a script file is considered the command word. if the last character of the command word is a colon (:), the line is a label (the object of a goto statement). otherwise it's assumed to be a script command and gets interpreted as such. command words are case insensative β yes that's how it's spelled in the source, love that for us.
some commands take one or more arguments. each argument is parsed as a single word, same definition as above. if you need blanks inside an argument, you gotta quote it with single or double quotes. no cap. πΈ
Script Command List
here's the description of all the commands you can use in the Seyon script language. buckle up, there's a lot, and we're doing every single one π«Ά
capture on|off(currently may not work) βcapture onturns capture on. every character received whilewaitforis processing gets appended to the capture file.capture offcloses that capture file. heads up: this setting does not currently extend to terminal mode, and it may be offered in a later release. lowkey unfinished, sorry bestie πdebug on|offβ if the argument ison, every subsequent command line processed gets displayed on your local screen. the exception? lines containing atransmitcommand β those just printTRANSMIT...so your passwords and stuff stay protected π. if the argument isoff, scripts execute quietly, and that's the default setting.dial <number>β dials the specified number. Seyon supports generic "Hayes" compatible modems for dialing. note that this command needs an actual phone number β the phonebook is not used for this function. πecho <string>β echoes the given string to the terminal. does not send it to the modem (usetransmitfor that, bestie). if the string contains spaces it must be quoted. and unlike the shell command with the same name, this one does not accept the switch-nβ it always appends a newline to the string. iconic behavior, honestly.exitβ terminates the script file before the end of file, and returns to terminal mode.flushβ flushes the modem, i.e. discards data written to the modem but not transmitted, and data received but not read. bye to all of it πgoto <label>β goes to the specified label in the script file and continues execution from that point. the label may come before or after the actualgotostatement, so no pressure on ordering. a label is any command word whose last character is a colon (:).hanupβ hangups up the line and disconnects from the remote host. (yes, it's spelledhanup, nothangupβ that's the real command name, don't come for me π)if,else,endifβ conditional execution, and the syntax is:
if <condition>
<statements>
[else
<statements>]
endif
conditionally executes statements based on a specified condition. Seyon supports these conditions:
waitfor: true if the lastwaitforcommand was successful.linked: true if this script was executed from the dialing directory.
conditions may be negated using the prefix not or the character !:
!waitfor: true if the lastwaitforcommand timed out.not waitfor: same as!waitforabove.
β οΈ theelseandendifkeywords must appear on their own lines. andifstatements may not be nested. that's the rule, bestie, don't test it.
pause <time>β suspends execution of the script for the specified number of seconds. usually this is for timing stuff, like waiting a couple seconds after receiving the connect message and then typing^Cto CompuServe. β³purgeβ reads and discards all data coming from the modem for the duration of one second. one second of pure nothing β¨quitβ terminates the script and exits the whole program (returns to the shell). dramatic but valid.redialβ redials the last number dialed using thedialcommand. πsend_breakβ sends aBREAKsignal to te remote host. (typo's theirs, not mine π)set <parameter> <value>β sets the specified parameter to the given value. you can use this to set the various communications parameters for each host. here's the full list ofsetkeywords Seyon recognizes. keywords marked with an asterisk set the current parameter only, not the default one. refer to the corresponding resource (in parentheses below) for the details of what each keyword actually does:baud*(defaultBPS)bits*(defaultBits)parity*(defaultParity)stopBits*(defaultStopBits)stripHighBit(stripHighBit)newlineTranslation(newlineTranslation)del(backspaceTranslation)meta_tr(metaKeyTranslation)xoff(xonxoffFlowControl)rtscts(rtsctsFlowControl)autozm(zmodemAutoDownload)idleGuard(idleGuard)
boolean keywords accept on or off as their argument. the other keywords accept the same arguments as the corresponding resources. π
shell <shell-command>β executes the given shell command via the user's shell pointed to by theSHELLenvironment variable, or/bin/shif the environment variableSHELLis not set. note that the command must be quoted if it consists of more than one word. and if the first non-space letter of the command is the character$, then standard input and standard output get redirected to the modem. this command can run any external program from withen Seyon. example:shell "cd /usr/dl; rz -vv". (that's "withen" β their typo, our treasure π)transmit <text>β transmits the specified text to the remote host. the text argument should be quoted (single or double quotes) if there are spaces you want transmitted. the text goes out as is β no case conversions are performed. periodt.
prefix characters, because of course there are prefixes:
^is the Control character prefix: the next character is made into a control character. for example,^Mis carriage return (0x0D) and^Jis newline (0x0A).\is quote prefix: the next character is transmitted verbatim. for example,\^would transmit a literal^.
tty on|offβ this command says whether or not characters received from the modem get displayed on the local terminal. and here's the tea: since the only time the script processor looks at the receive queue is duringwaitforprocessing, the displays may look a bit erratic π. usetty offto disable local display of received characters during script processing.waitfor <text> [timeout]β waits for the specified text to appear from the modem. the text argument should be quoted (single or double quotes) if there are spaces to be transmitted. special characters are interpreted the same as fortransmit. if thetimeoutargument is specified, Seyon waits that number of seconds for the string to appear. if no timeout is given, Seyon defaults to 30 seconds. duringwaitforprocessing, characters received (up to and including the last character found in the text or in the timeout) can be captured to a disk file (ifcapture onis specified), and/or displayed to the screen (iftty onis specified). multitasking queen πwhen [<string-to-expect> <string-to-send>]β sends string-to-send whenever it encounters string-to-expect while waiting in awaitforcommand, whatever the number if times string-to-expect is encountered. (their typo, keeping it π)
this is is useful if the order of prompts you're expecting isn't known before hand. for example, some BBS systems (notably PCBoard) change the prompts depeding on the time of call, and a complete script for such boards simply cannot be written using waitfor only.
you can specify as many number of when commands as you want. a when command with no arguments clears all outstanding when commands. and waitfor commands take precedence over when commands if they expect the same string. π€
a typical use of this command would be:
when "Continue?" "y^M"
when "More?" "n^M"
waitfor "BBS Command?"
when
the above script keeps sending "y^M" to every Continue?" prompt and "n^M" to every "More?" prompt until the the string "BBS Command?" is encountered. the lasy when clears all outstanding when commands. (yes, "lasy". we stan a legend who ships typos π)
β¨ FILES β¨
the default Seyon files are startup, phonelist, and protocols. these have to be in the current directory, Seyon's default directory (~/.seyon), or the user's home directory. the default script directory is Seyon's default directory. all of these files and directories can be overridden by setting the appropriate resources β go read the description of those resources, plus the description of the files above. go on, i'll wait π
π SEE ALSO π
π COPYRIGHT π
Seyon is Copyright (c) 1992-1993 of Muhammad M. Saggaf. Seyon is not public domain. permission is granted to use and distribute Seyon freely for any use and to sell it at any price without reference to the copyright owner, provided that in all above cases Seyon is intact and is not made part of any program either in whole or in part, and that this copyright notice is included with Seyon. permission is also granted to modify the source as long as the modified source is not distributed without prior consent of the author. read it, know it, respect it π«Ά
π BUGS π
- the script command
set portis not supported in this release. sorry bestie. - if the action
DialEntriesis not the last in a compound action stack, actions specified by the resourcepostConnectActionmay not work properly. so keep it last, k?
if Seyon is hung, it can be made to exit cleanly by killing its main process with signal 15 (SIGTERM) from another shell. Seyon's main process is the one that has the lowest PID (Process ID) number. for example, if ps shows:
1100 p0 S 0:04 seyon -noemulator
1101 p0 S 0:00 seyon -noemulator
1102 p0 S 0:38 seyon -noemulator
then kill -15 1100 or kill 1100 would cause Seyon to clean up and exit gracefully. rescue mission complete, main character energy only π
π AUTHOR π
okay so this whole thing was written by Muhammad M. Saggaf, and you can reach him at alsaggaf@mit.edu. if you're feeling β¨vintageβ¨ you can also do actual Snail Mail to: Muhammad Saggaf, Box 9863, Dhahran 31311, SAUDI ARABIA. bestie is upfront about it tho β he apologizes that he may not be able to respond to all correspondence he receives π (he's just one guy!!).
and the whole reason xcomm 2.2 exists? that was written by Eric Coe and Larry Gensch. icons. π
π ACKNOWLEDGEMENT π
shoutout time, because nobody builds something like this alone:
- David Boyce β for helpful suggestions, the
Imakefile, and patches for a clean build undergcc -Wallπ«Ά - Joaquim Jorge β for the
lex/yaccparsing routines contributed by him π₯ - and the MANY people who sent patches for various platforms, no cap:
- Fred Appleman (SVR4)
- atae@spva.dnet.nasa.gov (Ultrix)
- Alain Hebert (SVR3.2)
- Peter Davies (Sun Sparc)
- Eric Schmidt (Apollo)
- David Sanderson (AIX)
- Jonathan Bayer (Sun)
- Jeff Johnson (SVR4)
- Glenn Geers (SVR4-Esix)
- Tony Vincent-Sun-Vienna (Solaris)
- Bob Smith (SunOS 3.x and
sgttyinterface)
(pardon me if I forgot to mention you) β his words, not mine, but fr fr we forgive you π
he's also thankful to all the nice people who sent him suggestions or bug reports. every single one. main character behavior honestly π
and one more glow-up credit: the MultiList widget used in the dialing directory? that was written by the Free Widget Foundation. you can get it and other FWF widgets by ftp from a.cs.uiuc.edu. periodt. π
okay bestie that's literally the whole seyon(1) manual page, like the entire thing, from the source and version info down at the bottom all the way through β this page is the SEYON(1) manual, dated with its own little footer stamp at the end of every version. you made it to the end, I'm so proud, go read the dialing directory section again and slay πβ¨π¦
π¦ where this page comes from
- debian bookworm: seyon 2.20c-34
- debian trixie: seyon 2.20c-36
- ubuntu jammy: seyon 2.20c-34
- ubuntu noble: seyon 2.20c-35
- ubuntu questing: seyon 2.20c-36
- ubuntu resolute: seyon 2.20c-37
- ubuntu stonking: seyon 2.20c-37
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms