[comp.windows.x] An example introductory guide to Xwindows for workstation users

long-morrow@YALE.ARPA ("H. Morrow Long") (07/22/87)

	Someone in comp.windows.x asked about a basic manual for an
	ordinary user on how to start X on his workstation (assuming it is
	installed, etc.).  We have written the following guide for beginning 
	X users, it contains details specific to our network, default
	configuration of X windows and is presently hardcoded for the 
	IBM RT setup but I thought that it would provide a good starting
	point for people who are asked for a rough users manual
	(you should troff the X manual pages and append them also).

					H. Morrow Long
					long-morrow@cs.yale.edu

	The latex source and a delatex'ed plain text version are appended:


------x_intro_rt.ltex-----------------------------------------------------
%
% $Header: x_intro_rt.ltex,v 1.1 87/07/21 16:47:52 long Exp $
%
% $Log:	x_intro_rt.ltex,v $
% Revision 1.1  87/07/21  16:47:52  long
% Initial revision
% 
%
\documentstyle{report}
\pagestyle{headings}
\thispagestyle{empty}
\oddsidemargin 0pt      %   Left margin on odd-numbered \evensidemargin 0pt     %   Left margin on even-numbered pages.
\textwidth 480pt
\begin{document}
\begin{center}
\huge An Introduction to X Windows\\
at Yale Computer Science\\
on the IBM PC RT Using ACIS 4.2\\
{\tiny By H. Morrow Long.} \\
{\tiny Form revised \today .} \\
{\tiny $Revision: 1.1 $.} \\
\normalsize
\end{center}
\vspace{.20in}

\section {Prerequisites}
The mouse must be plugged in before bringing up X.
\subsection {Verifying X installation}
If your machine has MIT X windows installed the images/links /usr/new/X and
/usr/new/xinit will exist.
By default X windows on the RT is set up for the IBM 6155 (aka as the IBM APA16
or Extended Monochrome Graphics Display device).

\subsection {Checking/Setting PATH environment variable}
Check your path environment variable to make sure the directories containing
the X programs will be searched.  Type:
\begin{verbatim}
% printenv PATH
/usr/new:/usr/new/bin:/usr/local/bin:/usr/yale/bin:/etc:/usr/ucb:/bin:/usr/bin:.:/usr/ibmtools:/usr/hosts
\end{verbatim}

Your path should include the directories '/usr/new' and '/usr/new/bin', if it
does not you should execute the following and add it to the .login script in
your home directory:

\begin{verbatim}
% set path=( /usr/new /usr/new/bin $path)
\end{verbatim}

\section {Beginning X}
\subsection {Starting X Windows}
To start X type:

\begin{verbatim}
% xinit
\end{verbatim}

An 80x24 VT100 terminal emulation window titled 'login' should appear in the
upper left corner of the monitor screen.  A cross-hair cursor should also
be visible at a position on the screen.  Move the mouse so that the cross-hair
mouse cursor is placed inside the window on the screen.  Inside the window type:

\subsection {Starting the X Ultrix/Unix Window Manager}
\begin{verbatim}
% uwm &
\end{verbatim}

This command will start the Unix Window Manager.   You should hear a beep, at
which time the window manager (uwm) has installed itself.

The window manager is now controlling the interaction of the X windows server
and your input (mouse, keyboard) and output (monitor screen) devices.  It is
also making a number of window managing commands available to you (the user).

\subsection {Changing the Initial Window into an Icon}
Now make sure the cross-hair mouse cursor is still located inside the 'login'
window on the screen and depress the "control" key and the left mouse button.
The 'login' window
should be turned into a half-inch square labled 'login'.   It is important to
protect the initial window because exiting from or terminating it will cause
all of the X windows on the screen to disappear.  The 'login' window can
be turned back into a normal window by moving the mouse to it and depressing
the "control" and left mouse button simultaneously.

The icon can be moved by placing the cursor over the icon and depressing the
left mouse button.  Drag the icon to the desired location and release the
mouse button.
\subsection {Using one of the X menus}
At this point you may depress the "control" and "alt" keys in combination with
both RT mouse buttons (this chord on a 2 button mouse is in lieu of the
middle button on a three button mouse).  Keep 
both RT mouse buttons depressed (you can release the "control" and "alt" keys
safely) and move the mouse down thru the menu to
'Add Big Window' and release all keys and buttons.  The entry in the menu
where the mouse button was released will be selected.  

\subsection {Placing a window}
In this example we are asking for an 80x24 column DEC VT100 emulation window
to be set up with our default shell (/bin/csh) running inside it on our local
machine.
Many parameters have been set by default (for advanced users: the font chosen
is 9x15 pixels and can be overridden by creating a personal .Xdefaults file in
your home directory ).

A small block bar should appear in the top left corner of the screen with
'Terminal Emulator: ' in it.  You should also notice the frame of a
small invisible box following the mouse cursor around the screen.  These are
the general signs of an X application politely making its intended presence
known and signaling the X user to place the window wherever desired on the
screen.

\subsection {Xterm windows}
Xterm windows should usually be placed in the middle of the screen (move the
mouse cursor to a point above and to the left of the screen center point and
depress the left button) and then moved (using the mouse with left button held)
to a desired location.  If the window is placed too near the edges of the screen
then the portion of the xterm window that is not located within the screen
boundaries will be clipped out.  Two big or four tiny windows can be placed
on the screen without overlapping (in this case using the mouse with the right
mouse button held can be used to resize the window to 80x24, 132x25, etc.).

A window to a remote login session on another Yale CS host may be obtained
by depressing the "control" and "alt" keys in combination with the left
mouse button and selecting one of the 'Connect to ...' menu entries.
Selection is achieved by releasing the mouse button over the desired entry.
The terminal type should be set to 'vt100' (or 'xterm') on the remote computer,
if the window is resized to 132 columns the terminal type 'vt132' can be used.

Many options are available in menus inside xterm itself (tektronix mode,
scrollbars and transcript logging, etc.).  The xterm main menu
can be obtained by clicking "shift" left button on the xterm window title bar,
the 'modes' menu is available using the "shift" both (middle) button(s) in the
same manner (but if you click on the label word in the middle of the title
bar you will iconify the window instead).

The xterm window will only take input from the keyboard when the mouse cursor
is positioned within the xterm window borders, it can continue to display
program output when the cursor is moved to another window (even when the window
is obscured or iconed).

Xterm windows will cease to exist once the shell (/bin/csh) or other program
(rlogin, telnet, etc.) running inside the xterm window is exited.

\subsection {Default Keyboard and Mouse Button Mapping to Function}
The window system manager defaults (in {\sf /usr/new/lib/X/uwmrc/system.uwmrc})
have been set up to provide common window management
functions and three quick pop-up menus (for advanced users: this file can be
overridden with a .uwmrc file in your home directory).
These key \& mouse button clicks to function bindings are:

\vspace{.20in}
\begin{tabular}{||l|l||}					\hline \hline
\multicolumn{2}{c}{\sc Default Keyboard and Mouse Button Mapping to Function} \\ \hline
{\em Keyboard \& Mouse Action}		& {\em X Window Behaviour}     \\ \hline
LEFTMOUSEBUTTON				& Raise Window to Top of Stack \\ \hline
LEFTMOUSEBUTTON \& MouseMovement	& Move Window On Screen        \\ \hline
RIGHTMOUSEBUTTON \& Mouse Movement	& Resize Window                \\ \hline
CTRL \& LEFTMOUSEBUTTON			& Toggle Window Into Icon      \\ \hline
CTRL \& ALT \& LEFTMOUSEBUTTON		& Hosts Menu                   \\ \hline
CTRL \& ALT \& BOTHMOUSEBUTTONS		& Window Operations Menu       \\ \hline
CTRL \& ALT \& RIGHTMOUSEBUTTON		& Preferences Menu             \\ \hline
\hline
\end{tabular}

\newpage

\subsection {Default 3 X Menus Provided}
\begin{description}
\item [Hosts Menu] Provides windows to rlogin/telnet to major 
Yale Computer Science general-purpose and research machines.

\vspace{.20in}
\begin{tabular}{||l||}					\hline \hline
{\sc Hosts} \\ \hline
Connect to Athena \\ \hline
Connect to Bulldog \\ \hline
Connect to Casper \\ \hline
Connect to Celray \\ \hline
Connect to Connection Machine \\ \hline
Connect to Eli \\ \hline
Connect to HP Crown \\ \hline
Connect to Ice \\ \hline
Connect to Max \\ \hline
Connect to Multiflow \\ \hline
Connect to Montana \\ \hline
Connect to Ring \\ \hline
Connect to Rubiks \\ \hline
Connect to Sunny \\ \hline
Connect to Venus \\ \hline
Connect to Zoo \\ \hline
\end{tabular}
\vspace{.10in}

\item [Window Operations Menu] Obtain two sizes of VT100 terminal emulation
windows, operate on windows, invoke clock program, other miscellany.

\vspace{.10in}
\begin{tabular}{||l||}					\hline \hline
{\sc Window Ops} \\ \hline
Add Big Window \\ \hline
Add TinyWindow \\ \hline
AutoIconify \\ \hline
CircUp \\ \hline
CircDown \\ \hline
Focus \\ \hline
Freeze \\ \hline
Lower \\ \hline
Move \\ \hline
NewIconify \\ \hline
Raise \\ \hline
Refresh \\ \hline
Repaint \\ \hline
Resize \\ \hline
Restart uwm \\ \hline
UnFreeze \\ \hline
Xclock \\ \hline
Xload \\ \hline
\end{tabular}

\newpage
\item [Preferences Menu] You can disable key clicking here.

\vspace{.10in}
\begin{tabular}{||l||}					\hline \hline
{\sc Preferences} \\ \hline
Bell Loud \\ \hline
Bell Normal \\ \hline
Bell Off \\ \hline
Click Loud \\ \hline
Click Soft \\ \hline
Click Off \\ \hline
Lock On \\ \hline
Lock Off \\ \hline
Mouse Fast \\ \hline
Mouse Normal \\ \hline
Mouse Slow \\ \hline
\end{tabular}

\end{description}
\section {Intermediate X}
\subsection {Cutting and Pasting}
X windows has several internal buffers for the purpose of allowing
window applications to exchange data.  To demonstrate copying text between
two X windows perform the following:
\begin{enumerate}
\item Set up two windows (local or remote of any size).
\item Start up your favorite text editor in each window (move the cursor to each
window and invoke the program by name).
\item Move the mouse cursor to the desired position to copy text in the 
source window and depress the "shift" and both buttons (middle) to 'mark' the
beginning point in the text.
\item Keep pressing the keys and move the mouse cursor to the right
(and down for multiple lines) to the end of the text to be copied.
\item Lift the mouse button(s).
\item Move the mouse cursor to the destination window.
\item Move the xterm cursor (by editor commands, keystrokes) to the point in the
window where the copied text is to be inserted.
\item Enter insert mode if necessary in the destination window editor (necessary
in vi, not in emacs and win).
\item Depress the "shift" and right button.  The text should be inserted at the
editor's cursor (not related to the X mouse cursor).
\end{enumerate}

Only a few lines may be transferred in this manner using remote xterm windows
because the remote Unix process is usually too slow and its buffer too small to
capture a large number of characters blasted at it in real time in character
at a time mode.  Local xterms perform much better.

Clicking the "shift" key and left button on a line in a window will cause the
text in the line from the X mouse cursor to the end of line to be inserted (as
if typed) at the current xterm cursor position (for example: at the bottom of
the screen if you are running the regular shell).

Using either of these methods the saved text remains in the copy buffer for
repeated pasting until it is overwritten.
\subsection {X Applications}

The following X programs should be available on the RTs, Suns and Celerity.
Man pages for the following are available on the Celerity, RT servers (alabama,
kentucky and northcar) and the Suns for
more information (more manual pages, etc. should be available on the RT clients
after NFS is available).  The following applications reside in the directories
/usr/new and /usr/new/lib/X/demos (where available).

\vspace{.10in}
\begin{tabular}{r|l}
biff	& be notified if mail arrives and who it is from	\\ \hline
bitmap	& bitmap editor for X window system 	\\ \hline
bounce	& neat hack to bounce X windows around screen	\\ \hline
keycomp	& X window system keyboard mapping file compiler	\\ \hline
pikapix	& recolor an X window snapshot	\\ \hline
resize	& reset TERMCAP with current size of a window	\\ \hline
uwm	& Window Manager Client Application of X	\\ \hline
xclock	& X Window System, analog / digital clock	\\ \hline
xcolors	& X window system color database display	\\ \hline
xdemo	& demonstration program for X window system	\\ \hline
xdpr	& dump an X window directly to the printer	\\ \hline
xdvi	& DVI Previewer for the X Window System	\\ \hline
xfax	& display a FAX file in an X window	\\ \hline
xfd	& X window system font displayer	\\ \hline
xfish	& X window system mildly annoying game	\\ \hline
xhost	& X window system access control program	\\ \hline
ximpv	& Imprint (Impress) Previewer for the X Window System	\\ \hline
xinit	& X window system initializer	\\ \hline
xload	& X window system load average display	\\ \hline
xnwm	& X window system manager process	\\ \hline
xperfmon	& X window system Unix performance monitoring tool	\\ \hline
xpr	& print X window dump	\\ \hline
xrefresh	& refresh all windows on the screen.	\\ \hline
xset	& X window system user setup program	\\ \hline
xshell	& X Window System, key/button command exec	\\ \hline
xterm	& X window system terminal emulator	\\ \hline
xtrek	& Multiplayer startrek game for X window system	\\ \hline
xwd	& X Window System, window image dumper.	\\ \hline
xwininfo	& X Window System, window information summarizer.	\\ \hline
xwm	& X Window System, window manager process	\\ \hline
xwud	& X Window System, window image undumper	\\ \hline
\end{tabular}

\section {Advanced X}
This section under development.  Envisioned subsections include:
\begin{itemize}
\item Setting Up and Utilizing Odd Shaped Xterm Windows
\item Running Remote X applications
\item Using GNUemacs under X - remotely and locally, keybindings, etc.
\item Modifying the ~/.Xdefaults file
\item Creating a ~/.uwmrc file
\item Developing X applications
\end{itemize}

\end{document}

------x_intro_rt.lpr------------------------------------------------------
  
		  	An Introduction to X Windows 
			at Yale Computer Science 
			on the IBM PC RT Using ACIS 4.2 


			By H. Morrow Long.   

   			Form revised Tue Jul 21 16:24:31 PDT 1987
 
			Revision : 1.1


   Prerequisites 

The mouse must be plugged in before bringing up X.

   Verifying X installation 

If your machine has MIT X windows installed the images/links /usr/new/X
and /usr/new/xinit will exist.  By default X windows on the RT is set
up for the IBM 6155 (aka as the IBM APA16 or Extended Monochrome
Graphics Display device).

   Checking/Setting PATH environment variable 

Check your path environment variable to make sure the directories containing
the X programs will be searched.  Type:
  
% printenv PATH
/usr/new:/usr/new/bin:/usr/local/bin:/usr/yale/bin:/etc:/usr/ucb:/bin:/usr/bin:.:/usr/ibmtools:/usr/hosts

Your path should include the directories '/usr/new' and '/usr/new/bin',
if it does not you should execute the following and add it to the
.login script in your home directory:


   Beginning X - Starting X Windows 

To start X type:

% xinit

An 80x24 VT100 terminal emulation window titled 'login' should appear
in the upper left corner of the monitor screen.  A cross-hair cursor
should also be visible at a position on the screen.  Move the mouse so
that the cross-hair mouse cursor is placed inside the window on the
screen.  Inside the window type:

   Starting the X Ultrix/Unix Window Manager 
  
% uwm &

This command will start the Unix Window Manager.   You should hear a
beep, at which time the window manager (uwm) has installed itself.

The window manager is now controlling the interaction of the X windows
server and your input (mouse, keyboard) and output (monitor screen)
devices.  It is also making a number of window managing commands
available to you (the user).

   Changing the Initial Window into an Icon 

Now make sure the cross-hair mouse cursor is still located inside the
'login' window on the screen and depress the "control" key and the left
mouse button.  The 'login' window should be turned into a half-inch
square labled 'login'.   It is important to protect the initial window
because exiting from or terminating it will cause all of the X windows
on the screen to disappear.  The 'login' window can be turned back into
a normal window by moving the mouse to it and depressing the "control"
and left mouse button simultaneously.

The icon can be moved by placing the cursor over the icon and
depressing the left mouse button.  Drag the icon to the desired
location and release the mouse button.

   Using one of the X menus 

At this point you may depress the "control" and "alt" keys in
combination with both RT mouse buttons (this chord on a 2 button mouse
is in lieu of the middle button on a three button mouse).  Keep both RT
mouse buttons depressed (you can release the "control" and "alt" keys
safely) and move the mouse down thru the menu to 'Add Big Window' and
release all keys and buttons.  The entry in the menu where the mouse
button was released will be selected.

   Placing a window 

In this example we are asking for an 80x24 column DEC VT100 emulation
window to be set up with our default shell (/bin/csh) running inside it
on our local machine.  Many parameters have been set by default (for
advanced users: the font chosen is 9x15 pixels and can be overridden by
creating a personal .Xdefaults file in your home directory ).

A small block bar should appear in the top left corner of the screen
with 'Terminal Emulator: ' in it.  You should also notice the frame of
a small invisible box following the mouse cursor around the screen.
These are the general signs of an X application politely making its
intended presence known and signaling the X user to place the window
wherever desired on the screen.

   Xterm windows 

Xterm windows should usually be placed in the middle of the screen
(move the mouse cursor to a point above and to the left of the screen
center point and depress the left button) and then moved (using the
mouse with left button held) to a desired location.  If the window is
placed too near the edges of the screen then the portion of the xterm
window that is not located within the screen boundaries will be clipped
out.  Two big or four tiny windows can be placed on the screen without
overlapping (in this case using the mouse with the right mouse button
held can be used to resize the window to 80x24, 132x25, etc.).

A window to a remote login session on another Yale CS host may be
obtained by depressing the "control" and "alt" keys in combination with
the left mouse button and selecting one of the 'Connect to ...' menu
entries.  Selection is achieved by releasing the mouse button over the
desired entry.  The terminal type should be set to 'vt100' (or 'xterm')
on the remote computer, if the window is resized to 132 columns the
terminal type 'vt132' can be used.

Many options are available in menus inside xterm itself (tektronix
mode, scrollbars and transcript logging, etc.).  The xterm main menu
can be obtained by clicking "shift" left button on the xterm window
title bar, the 'modes' menu is available using the "shift" both
(middle) button(s) in the same manner (but if you click on the label
word in the middle of the title bar you will iconify the window
instead).

The xterm window will only take input from the keyboard when the mouse
cursor is positioned within the xterm window borders, it can continue
to display program output when the cursor is moved to another window
(even when the window is obscured or iconed).

Xterm windows will cease to exist once the shell (/bin/csh) or other
program (rlogin, telnet, etc.) running inside the xterm window is
exited.

   Default Keyboard and Mouse Button Mapping to Function 

The window system manager defaults (in
/usr/new/lib/X/uwmrc/system.uwmrc ) have been set up to provide common
window management functions and three quick pop-up menus (for advanced
users: this file can be overridden with a .uwmrc file in your home
directory).  These key   mouse button clicks to function bindings are:

Default Keyboard and Mouse Button Mapping to Function     

Keyboard  + 	Mouse Action		X Window Behaviour         
-------------------------		-----------------
LEFTMOUSEBUTTON				  Raise Window to Top of Stack    
LEFTMOUSEBUTTON   MouseMovement		  Move Window On Screen           
RIGHTMOUSEBUTTON   Mouse Movement	  Resize Window                   
CTRL   LEFTMOUSEBUTTON			  Toggle Window Into Icon         
CTRL   ALT   LEFTMOUSEBUTTON		  Hosts Menu                      
CTRL   ALT   BOTHMOUSEBUTTONS		  Window Operations Menu          
CTRL   ALT   RIGHTMOUSEBUTTON		  Preferences Menu                
 

   Default 3 X Menus Provided 
  
  [Hosts Menu] Provides windows to rlogin/telnet to major 
Yale Computer Science general-purpose and research machines.

   Hosts     
------------------
Connect to Athena    
Connect to Bulldog    
Connect to Casper    
Connect to Celray    
Connect to Connection Machine    
Connect to Eli    
Connect to HP Crown    
Connect to Ice    
Connect to Max    
Connect to Flo    
Connect to Montana    
Connect to Ring    
Connect to Rubiks    
Connect to Sunny    
Connect to Venus    
Connect to Zoo    

  [Window Operations Menu] Obtain two sizes of VT100 terminal emulation
windows, operate on windows, invoke clock program, other miscellany.

   Window Ops     
----------------
Add Big Window    
Add TinyWindow    
AutoIconify    
CircUp    
CircDown    
Focus    
Freeze    
Lower    
Move    
NewIconify    
Raise    
Refresh    
Repaint    
Resize    
Restart uwm    
UnFreeze    
Xclock    
Xload    

 
  [Preferences Menu] You can disable key clicking here.

   Preferences     
-----------------
Bell Loud    
Bell Normal    
Bell Off    
Click Loud    
Click Soft    
Click Off    
Lock On    
Lock Off    
Mouse Fast    
Mouse Normal    
Mouse Slow    

   Intermediate X 

   Cutting and Pasting 

X windows has several internal buffers for the purpose of allowing
window applications to exchange data.  To demonstrate copying text
between two X windows perform the following:
  
  Set up two windows (local or remote of any size).

  Start up your favorite text editor in each window (move the cursor to each
window and invoke the program by name).

  Move the mouse cursor to the desired position to copy text in the 
source window and depress the "shift" and both buttons (middle) to 'mark' the
beginning point in the text.

  Keep pressing the keys and move the mouse cursor to the right
(and down for multiple lines) to the end of the text to be copied.

  Lift the mouse button(s).

  Move the mouse cursor to the destination window.

  Move the xterm cursor (by editor commands, keystrokes) to the point in the
window where the copied text is to be inserted.

  Enter insert mode if necessary in the destination window editor (necessary
in vi, not in emacs and win).

  Depress the "shift" and right button.  The text should be inserted at the
editor's cursor (not related to the X mouse cursor).

Only a few lines may be transferred in this manner using remote xterm
windows because the remote Unix process is usually too slow and its
buffer too small to capture a large number of characters blasted at it
in real time in character at a time mode.  Local xterms perform much
better.

Clicking the "shift" key and left button on a line in a window will
cause the text in the line from the X mouse cursor to the end of line
to be inserted (as if typed) at the current xterm cursor position (for
example: at the bottom of the screen if you are running the regular
shell).

Using either of these methods the saved text remains in the copy buffer
for repeated pasting until it is overwritten.

   X Applications 

The following X programs should be available on the RTs, Suns and
Celerity.  Man pages for the following are available on the Celerity,
RT servers (alabama, kentucky and northcar) and the Suns for more
information (more manual pages, etc. should be available on the RT
clients after NFS is available).  The following applications reside in
the directories /usr/new and /usr/new/lib/X/demos (where available).

biff	  be notified if mail arrives and who it is from	   
bitmap	  bitmap editor for X window system 	   
bounce	  neat hack to bounce X windows around screen	   
keycomp	  X window system keyboard mapping file compiler	   
pikapix	  recolor an X window snapshot	   
resize	  reset TERMCAP with current size of a window	   
uwm	  Window Manager Client Application of X	   
xclock	  X Window System, analog / digital clock	   
xcolors	  X window system color database display	   
xdemo	  demonstration program for X window system	   
xdpr	  dump an X window directly to the printer	   
xdvi	  DVI Previewer for the X Window System	   
xfax	  display a FAX file in an X window	   
xfd	  X window system font displayer	   
xfish	  X window system mildly annoying game	   
xhost	  X window system access control program	   
ximpv	  Imprint (Impress) Previewer for the X Window System	   
xinit	  X window system initializer	   
xload	  X window system load average display	   
xnwm	  X window system manager process	   
xperfmon	  X window system Unix performance monitoring tool	   
xpr	  print X window dump	   
xrefresh	  refresh all windows on the screen.	   
xset	  X window system user setup program	   
xshell	  X Window System, key/button command exec	   
xterm	  X window system terminal emulator	   
xtrek	  Multiplayer startrek game for X window system	   
xwd	  X Window System, window image dumper.	   
xwininfo	  X Window System, window information summarizer.	   
xwm	  X Window System, window manager process	   
xwud	  X Window System, window image undumper	   

   Advanced X 

This section under development.  Envisioned subsections include:
  
  Setting Up and Utilizing Odd Shaped Xterm Windows
  Running Remote X applications
  Using GNUemacs under X - remotely and locally, keybindings, etc.
  Modifying the ~/.Xdefaults file
  Creating a ~/.uwmrc file
  Developing X applications