XJOVE(1)

NAME
Xjove, Jovetool - run JOVE under X-windows or Sunview with function-key and mouse support.

SYNOPSIS
xjove [ window_args ] [ -f | -nf ] [ -rc run_command_path ]... [ args ... ]
jovetool [ window_args ] [ -nf ] [ -rc run_command_path ]... [ args ... ]

DESCRIPTION
Xjove (or Jovetool) creates an XView or SunView frame and a tty subwindow within which mouse events and function keys are translated to ASCII sequences which JOVE can parse. The translated input events are sent to the process running in the tty subwindow, which is typically JOVE. Xjove thereby allows JOVE users to make full use of the mouse and function keys. JOVE has functions to interpret the mouse and function-key events to make a truly fine screen oriented editor for any workstation supporting XView or SunView.

OPTIONS
Xjove supports all the standard window arguments, including font and icon specifiers.

Xjove has the ability to fork off a separate process to run the window that is created, leaving the shell from which the Xjove command was issued free to accept other commands. This feature is enabled by the -f (for fork) flag and disabled by the -nf (for no fork) flag. The default is set by the xjove.forking resource which can be set to True or False in your .Xdefaults file (default False).

By default, Xjove runs the program jove in the created subwindow. The value of the environment variable JOVETOOL can be used to override this if your version of JOVE is not accessible on your search path by the name jove. In addition, the run command can be set by the pathname following the last occurrence of the -rc flag. This is convenient for using Xjove to run on remote machines.

All other command line arguments not used by the window system are passed as arguments to the program that runs in the Xjove window.

For example:

local% xjove -rc rlogin remote

will create an Xjove window logged in to a machine named remote. Xjove will encode mouse and function keys, and send them to rlogin. If JOVE is run from this shell on the remote machine, it will see the mouse and function keys properly.

USING XJOVE
The following assumes the use of the recommended bindings from the mouse operations to the Jove mouse-commands. Note how, in general, LEFT does things involving the point, whereas MIDDLE does things involving the mark.

Use of mouse buttons

LEFT
    Sets the cursor at the character pointed to. Actually, it is the place you are pointing at when you release the button that counts.

MIDDLE
    Sets the mark at the character pointed to when you press it. You may then move to another point before releasing it, thus delineating the region from where you pressed to where you released. The position of the mark always remains underlined (not easy to see if the cursor is at the same place).

MIDDLE + CTRL
    Sets the region as before, but then does a COPY (copy-region).

MIDDLE + CTRL + SHIFT
    Sets the region as before, but then does a CUT (kill-region).

LEFT + CTRL
    Sets the cursor as before, but then does a PASTE (yank). This can be used in conjunction with the previous two commands so as to copy or move text from one place to another. However, the following two commands do this job better.

MIDDLE + PASTE
    Remembers the current position of the cursor, then does a COPY (copy-region) on the region you select (possibly in another window), and finally PASTEs (yanks) it at the remembered position.

MIDDLE + CUT
    Remembers the current position of the cursor, then does a CUT (kill-region) on the region you select (possibly in another window), and finally PASTEs (yanks) it at the remembered position.

Multiple clicks on MIDDLE
    In all the above usages of MIDDLE, a double click will set the mark at the start of the word pointed into and the point at the end of that word. Likewise, a triple click selects the whole of the current line. This is similar to the effects of multiple clicks in Open-Look windows and Sunview.

Note that the above commands only work if you point within the current window. Except when in conjunction with PASTE or CUT, the first click into a different window simply selects that other window. Click twice if you want to set the cursor or the mark in the other window.

LEFT when in the Modeline
    Assuming the variable scroll-bar is ON, the position of the window within the overall buffer is shown by unhighlighting the corresponding part of the Modeline. Pointing at a place in the Modeline and pressing either of LEFT or MIDDLE causes the text to scroll to that place. You may hold the button down and move the mouse left or right until you see what you want in the window.

RIGHT
    Brings up a menu with pull-right options enabling you to obey any JOVE command, or set any JOVE variable. If the command requires a parameter (or the variable requires a value other than ON/OFF), you still have to type it in as usual.

SHIFT
    Holding SHIFT down at the same time as any other key or mouse operation (except with CTRL — see above) reverts to the normal behaviour of Shelltool(1). Thus you can make selections, and copy and paste them to/from the clipboard using L6, L8 and L10.

OPERATION
JOVE will automatically load the file jove.rc.$TERM. It is therefore necessary that this file understands the code sequences that are produced when function keys are pressed in Xjove (these are not necessarily the same as might normally be produced by that $TERM). These follow, more or less, the practice of Sun Workstations (with the addition, except when SHIFT is down, of some keys such as L-1,6,8,9 and 10 which Shelltool usually reserves for its own purposes, and of the KP-* keys around the outside of the numeric keypad, such as KP_Add and KP_Enter).

In addition, Xjove sets the environment variable IN_JOVETOOL = 't' , so that applications running in an Xjove window can be aware of the fact.

Mouse buttons are encoded as `^Xm[0-9](c x y t)\n'. ^Xm is the JOVE mouse-command prefix, [0-9] indicate which key was pressed, and whether it was a down, up, drag or multi-click event. These are followed by a list indicating the state of CTRL, SHIFT, PASTE and CUT, the character row and column of the point in the window where the mouse cursor is, and the number of pixels in the width of a character. In JOVE, these ^Xm* dispatch to appropriate mouse-command handlers which then read the following list.

BUGS
The normal Sunview "selection" facilities that enable text to be Cut and Pasted between windows (as provided by Shelltool and Cmdtool) only work when SHIFT is pressed.
Because SHIFT and CTRL together have a special meaning, it is not possible under SunView to make a selection "Pending Delete".
Due to a bug in some versions of XView, the underlining of the mark may not occur (but emboldening may be used as an alternative).
Under SunView, the initial terminal settings for the tty window are apparently taken from the controling tty. This can lead to surprises.

ENVIRONMENT VARIABLES
JOVETOOL IN_JOVETOOL TERM
For Xjove, the XView shared library must be visible. It may therefore be necessary to arrange for the Environment Variable LD_LIBRARY_PATH to include $OPENWINHOME/lib, where $OPENWINHOME would usually be /usr/openwin.

SEE ALSO
jove(1)