New or changed items in this versions are marked with a star '*' in front of the number.
LATEST.OS2
file.
Also some facilities might not be present, such as background images, PEX, XIE, DGA, or other X extensions.
README
and README.OS2
are the most
important for the first time. Also read files that refer to your
video hardware (such as README.S3,
for instance).
Please avoid cross-posting to other groups, this won't speed up answers, and usually annoys people who pay for their news and have broken software which does not recognize crossposts.
Many people who have been using the last version(s) of XFree86/OS2 will also listen in the mentioned newsgroups, and will be helpful.
Please choose a meaningful subject, preferably containing the word "XFree86" or "XFreeOS2" in the line.
error.log
file
xf86log.os2
file
popuplog.os2
file
XConfig
file
CONFIG.SYS
file
CMD.EXE
) the following command:startx 2>error.log
xf86log.os2
file will be *sometimes* produced in the
root directory of your boot partition. In many cases,
it is not present or empty.
popuplog.os2
file resides, if it exists, in the root directory
of the boot partition. If you find one, delete it, and create the
error.log
file again (see above). If there is a new one then, it
is from the current run.
Your mileage on book recommendations may vary, of course, and there is much more stuff in the shelves.
The /XFree86/lib/X11/doc/README file lists supported video hardware.
If you want to work on support for a new server actively, please send a request to
XFree86@XFree86.org. But be warned in advance: the emphasis is on active participation, and the core people there carefully check if this is really the case, and not one of the numerous requests to get access to the source code (which typically remain unanswered).README.OS2
as you were
supposed to. This driver is in /XFree86/lib/xf86sup.sys and needs
to be added as a DEVICE
in CONFIG.SYS
. XFree86/OS2 won't work without
it.
You have probably read my EDM/2 article "32 bit I/O at Warp Speed" and
have installed the FASTIO.SYS
driver. The XF86SUP.SYS
driver is
a superset of this. Remove FASTIO.SYS
from your CONFIG.SYS
; you won't
need it anymore, XF86SUP.SYS
will take over all the functions.
README.OS2
says
you must get and install EMXRT.ZIP
. A suitable EMXRT.ZIP
should be
in the directory where the X33*.zip
files are.
EMX.DLL
still left
in your LIBPATH
. We make it even easy for you as we tell you where it
is: in X:\foo\bar\emx.dll.
Remove this file (read the EMX instructions on
how to do this). If you still get this
error message, now with a different directory, you should seriously
consider to clean up your disk to get rid of the various instances of
outdated code.
CONFIG.SYS
? If so, analyze the error
messages that checkinstall tells you. Usually it is right with its
comments!
XFWARN...
denotes a warning. It is not fatal
but you should be aware that this can point out a problem.
checkinstall
will only
find the worst problems. Check other questions in this file to
isolate the problem.
For Warp 3, fixpack 5 contains some recommended fixes. You might consider to install at least this one.
In the future, you might be forced to install Fixpack 17 or later (or get Warp 4), because this has certain support which becomes mandatory in the future. Attention: it was recently found that FP26 may break XFree86 support. If you have this, you should return to an older fixpack (e.g. FP22).
And yes: fixpacks are cumulative, i.e. a FP with a higher number contains all fixes of the ones with a lower number.
XF86SUP.SYS
driver of 3.2
has a specific addition which is only available with kernels of FP17
and newer (including Warp 4). In normal XFree86/OS2, you don't
need this feature yet. Ignore this message. On the other hand, you
might consider installing a new fixpack some day.
PKUNZIP
? Or did you use the zip function
of Object Desktop (which doesn't work either)?
Or did you unpack onto a FAT partition?
And did you read what the docs say about this?
EMX.DLL
in your system, or that
XF86SUP.SYS
and OS/2 got severely confused. I have seen this twice
since EMX.DLL
was up-to-date; in both cases some other effects brought
me to the conclusion that a reboot would be the best solution.
startx
.
This will display a number of messages for a short time. If something
goes wrong, you will likely see it there. To get a permanent
version of these messages, simply redirect them into a file 'error.log'
by starting the system in the following way:startx 2>error.log
README.OS2
file. It is located at
\XFree86\lib\X11\XConfig.
This file is named XF86Config
on Unix
systems, and may be located in various other places there. It MUST be
in the specified place in XFree86/OS2, in contrast to Unix, though.
This file is a text file, and in some cases you MUST edit things
there (see below elsehere).
CONFIG.SYS
which works with OS/2").
No. There is no free lunch. The cards database lists a few hundred
boards with several options each and there are many monitors as well,
so there are countless combinations of XConfig
files. You must go
through the xf86config
configuration program for yourself - everyone
else had to do this as well; so don't ask for this.
xmodmap
).
In XFree86/OS2-3.2, this works now.
None of the above
and you
will be offered a menu that gives you standard national support. If this
is not sufficient, \XFree86\lib\X11\xkb\* offers the source files
to create a totally private setup. Check the official X11 documentation.
You can still use xmodmap as well.
XConfig
file. For many videocards, the file contains option lines in the
Device
section which are commented out (with a #
symbol) by
default. These options are named no_linear
, nomemaccess
,
noaccel
, or even totally different. Video cards are often different
even when coming from the same manufacturer and having the same brand
name, but they aren't (some manufacturers are notorious for changing
the horses at full speed while the race is going on). You should try
out options that are listed in this section and use the one which
works for you. Also consult the README.yourservername
(e.g. README.S3
)
if it exists for specific hints.
CTRL-ALT-BACKSPACE
keys.
CTRL-ALT-KEYPAD+
and CTRL-ALT-KEYPAD-
. This does
not neccessarily mean that there ARE other resolutions. With 1MB of
video RAM, you cannot have more than 1024x768x8, for instance you
have not enough video RAM for 1280x1024x8. The X server calculates
the allowed resolutions from the available Clocks
, the video RAM,
the monitor limits, and the available mode lines. This means, if you
have a standard-VGA 14" monitor for 640x480 @ 70Hz, the xserver wcould
refuse to offer you 1024x768, because it would result in sync
frequencies beyond the limits of the monitor. The X server is
conservative here, so it might be still possible to tune the
frequencies to the limits of the monitor manually (see Q 2.23).
Modeline
statements in the XConfig
file. By default, the XConfig
file has the standard VESA resolutions.
For a non-standard resolution, you must calculate the 8 numbers in the
modeline manually. Get the file
ftp://set.gmd.de/pub/misc/XFree86OS2/fixes/videomod.zip for a documentation
for this.
xvidtune
which allows
to shift and stretch the X screen. This will produce a new mode line
which you manually have to add to the XConfig
file in the place of the old
misaligned one. BTW: This program usually won't work with a LCD
display (see also Q 2.22).
Clocks
and
VideoRam
lines correctly, and correct them if necessary.
X -probeonly
, please read what the program tells you. Some other
cards, for instance SVGA cards have fixed frequencies, you must run
this. Xf86config
has been changed to call the correct X server, but
this might not work in all cases. In this case, run it from a CMD
window manually by:\XFree86\bin\XF86_yourserver.exe -probeonly | grep "Clocks"
XConfig
file.
Note: this line shows that you need the grep
program (see also
Q 2.28).
xf86config
calls the grep
utility, which you don't
have installed. Get /os2/unix/grep20.zip from hobbes.nmsu.edu (or
elsewhere). Well, this is the last clue that X11 came from Unix; there
are a few other tools you might need. /os2/unix/gnu*.zip should have
most things you'd encounter.
Screen
, subsection Display
of the
XConfig
file, there is the line Modes
which lists all the resolutions that can be switched to with
CTRL-ALT-KEYPAD+
or CTRL-ALT-KEYPAD-
. Reorder this line with a text editor.
Attention: there are many of these sections, for SVGA, Mono, Accel,
AND for your video card AND for different numbers of colors.
-bpp 16
or -bpp 24
. This can
be accomplished by passing this option to the startx command asstartx -- -bpp 16
error.log
file.
FontPath
lines in the XConfig
file. You must disable (with a comment #
at the beginning of the line) all
FontPath
lines for font packages you haven't installed. Xf86config
will now do this by default during install, but if you add fonts
later, you need to edit XConfig
manually.
BTW: it is not sufficient that just the directory is present.
Fixed
is an alias, which is associated with some font in the
fonts.alias
file in the directory /XFree86/lib/X11/fonts/misc
. The
font is then associated with a file in the fonts.dir
file in the
same place.
FontPath
line in the XConfig
file.
fonts.dir
file containing the
mapping between a file name and the 14-part font specifier (see
/XFree86/lib/X11/fonts/*/fonts.dir
for all fonts in \PSFONTS.
Watchcat
(or any program which uses the popup mechanism in OS/2) is invoked,
the current palette is not saved. Screen corruption may also occur.
This will only affect pixel depths where a palette is used (4bpp and
8bpp).
X11ROOT:\XFree86\lib\X11
, where X11ROOT
is an
environment variable which contains the drive letter the directory
tree is located. The common places like /usr/X11
, /usr/X11R6
,
/usr/XFree86
, /etc
which are used for XFree86 in various Unix
flavors, are not supported to avoid the mess they have caused in
the past.
It is also there where you should put your Xconfig
file, the color database (rgb.txt
),
the host authorization files (X0.hosts
), and various other files.
stderr
gets redirected to a file
called xf86os2.log
. You can find the rest of the server messages
there.
TMP
must reside on HPFS. BTW: did you run "checkupdate"?
Warning: process PID=????? is accessing
/dev/fastio$
, right? This is an intentional notification that some
process uses the fastio device to perform access to I/O ports. It is
also intentional that this message cannot be disabled. As long as the
PID is the process ID of the X server, everything is okay. If the PID
belongs to another, unknown process, you should seriously ask the
author of the program what he/she is doing with your hardware.
Part of the problem is that clients started in xinitrc.cmd remain under PM control (i.e. its parent is PM, not xinit, as intended), so when X goes down, it doesn't destroy these clients with it.
Currently the following methods appear to work: pop up the window list
(CTRL-ESC
) and close the xinitrc.cmd process. If this does not help,
close the other remaining X processes in the same way. Alternatively
to the close function of the window list, a process kill program
(killem
, killit
, pmkill
, etc) or Watchcat
should also work.
XF86SUP.SYS
from CONFIG.SYS
, and if you like,
also the environment variables that were set during installation.
Attention: some of them are necessary for proper TCP/IP networking.
\XFree86
.
FontPath
keyword in double
quotes ("
).
xterm
cannot connect
to the server. The real reason is probably hidden somewhere else in
the XConfig
file, or some other setup problem (e.g.
network configuration).
EMXOPT= -rc
in my settings?
-r<driveletter>
does not work with XFree86/OS2.
Use the TVFS.IFS (Toronto Virtual File System, available via FTP)
to workaround the drive letter problem.
EMXOPT=-t
in my config.sys, and XFree86/OS2 does
not work.
-t
option is incompatible with XFree86/OS2. Since
XFree86/OS2 needs a HPFS file system anyway, consider installing the
stuff you need this option for on a HPFS disk as well. Or decide
what you want: old FAT-stuff or XFree86.
The ugly thing with any dynamic IP address is obvious with any software which wants to connect *to* your host. Normally, it is *you* who initiates a connection, e.g. with your WWW browser, and this is no problem. The problem is that remote hosts must be able to find your host (resp. your X server). There is no solution, except to assign the DISPLAY variable as dynamic as the IP address. Needs some tweaking of the startxx.cmd script.
Try to get a static IP address if possible (if necessary, by begging, bribing, or threatening :-)).
"nolinear"
or "nomemaccess"
to the "Device"
section of the XConfig file, or
locate the video memory address (some DOS utility from the
diagnostic/driver disk coming with the video card might show it)
and enter its hex address as "MemBase 0x12345678"
to the
"Device"
section.
xvidtune
won't work with
PMX or Exceed, because it uses a specific XFree86 extension of the
X server.
\TCPIP\DLL
and \TCPIP\BIN
which cause name clashes and obscure crashes
of XFree86 X clients, so to run XFree86 with an installed PMX, you
must have \XFree86\bin
before \TCPIP\BIN
in your PATH,
and
\XFree86\lib
before \TCPIP\DLL
. Read about BEGINLIBPATH
in your
OS/2 command reference manual.
You should run the PMX server on display :0
and the
XFree86 one on display :1
(attention: the startx.cmd
has this coded
to :0
by default).
xhost +remotesystemname
startx.cmd
file, or add it to the X0.hosts
file). You must tell the
remote clients to use the OS/2 X server as a display by starting them
with the standard -display
option, e.g.xterm -display os2systemname:0.0
DISPLAY=os2systemname:0.0
X0.hosts
in \XFree86\lib\X11
. To enable connections
from a certain host, add in a line containing inet:hostname
to the
file. For example, your file may look like this:
inet:foo.edu
inet:friendly.host.edu
..
X0
refers to the zero in the display name
os2systemname:0
, i.e. in the case of Q 3.6 this would become a
X1.hosts
then.
-query xdmcphostname
for this.
xterm
. A symptom may be that they won't work either if you
redirect console I/O to a COM terminal which should be possible.
bash
is such an incompatible shell. See also Q 3.12 and Q 3.13.
Meanwhile, there are special ports of tcsh
and ksh
which
work in an xterm
.
4OS2
has a number of misfeatures, politely spoken, in an xterm
. We
attempt to fix this in the future. For now, don't use it in an an
xterm
. If 4OS2
or another shell is in your OS2_SHELL
or SHELL
variable, please add an environment variable named X11SHELL
to point
to a valid CMD.EXE
path, e.g.SET X11SHELL=D:\OS2\CMD.EXE
CONFIG.SYS
. This will override the OS2_SHELL
or SHELL
setting
which is used otherwise.
Q 3.13. So actually
FTP
does NOT work.
You may try out x3270
, available from the ported software WWW page
(Q 1.15).
X11ROOT:\XFree86\lib\x11\xinit\xinitrc.cmd
.
This is an editable REXX script. Usually you will only modify the
section "start some nice programs". You should use start/min
to
run the command and put all arguments in ''
or ""
, because REXX
may come to the wrong conclusion to interpret certain commands.
The last command before the exit must be started without the
start/min
. If you kill this program, X11 will shutdown. Usually,
this is configured as twm
. So if you select exit on the root menu
of twm
, it will shutdown XFree86/OS2. Please read Q 2.46 about some
gotcha.
You might try out DXPC as an alternative, though.
term
, or kermit
does
not work (just before someone asks). But even with 28,8K it is no
fun without packet compression (see also Q 2.15).
You might check DXPC from the ported software page, ported
by Ron van Iwaarden. This is a public packet compression server/client
which should give some relief.
If you don't have any source code, it won't work. The application
complains that the XFree86 server does not support the OpenGL 3D
extension.
In practice, this support is broken since version 3.2, and never
tested in XFree86/OS2. A future release will offer this and other
combinations again.
XF86Config
file, and if you change the
mouse protocol entry to OSMOUSE
and remove the mouse device
line. Note the config file is named XConfig
in OS/2, not
XF86Config
.
XF86SUP.SYS
driver which you will mainly encounter in the xterm
. The following
functions are available currently:
XF86SUP.SYS
installed. You need
version 1.432 or later. A usable version is always in the file
*BASE.ZIP
in the XFree86 distribution, even if a XF86S*.ZIP
containing the driver source is not available. The XF86SUP.SYS
version
1.420 from 3.1.2D does not have all features.
XF86SUP.SYS
. Will be fixed
sometime in the future. It should not crash, at least.
Emulate3Buttons
and Emulate3Timeout 50
in your XConfig
file. The third button is then activated by
pressing both buttons simultaneously.
xmodmap -e "pointer = 3 2 1"
on a command line or in the xinitrc
file or make an Xmodmap
file
for that purpose.
.Xmodmap
file.
There are sample files in /XFree86/lib/X11/xmodmap/Xmodmap.*
for
various countries. If you write a new one which is not yet in the
distribution, please send it to me (Holger.Veit@gmd.de) for
inclusion into the next release.
Xmodmap
files: they depend on the
X server's idea how to assign keyboard (scan) codes to keys.
Xman
uses the following conventions:
MANPATH
environment variable. This is a semicolon (;
) separated
list of directories of the structure
drive:/dir/.../man1
What you have to specify actually is the directory path except
the last level, such as in
/man2
/man3
...
SET MANPATH=d:/XFree86/man;Q:/EMX/man;F:/other/mans/man
Not all chapters man1-mann need to be existent.
If you have installed
XF32man.zip
, you can see the structure under
\XFree86\man
.
gzip
(.gz extension).
Such preformatted pages are produced from unformatted pages with
tbl file.man | eqn | groff -man | gzip >file.gz
\XFree86\man\man1
this would be 1
, like grep.1
.
groff
utilities
installed (groff
, eqn
, tbl
).
cat
and gzip
.
Both utilities are available from hobbes.nmsu.edu.
start/min/n rsh remotehostname progname -display localhostname:0
e.g.
start/min/n rsh office-unix xterm -display homepc:0
to get an xterm from your workstation at work to your home PC.
Note the thing with ~/.rhosts at your workstation applies! RTF-Unix-M!
gzip
, but with the
compress
program which is not so good?
xinit -- :1
If you use startx.cmd to run the server, replace the :0 with :1 there.
If you start the X server directly, e.g. for xdm, pass the
argument :1 to it as well. Note that most remote xdm servers listen
on :0, though.
-cm
. This will enable the color
ESC sequences. To get color resources used, you also have to add
#ifdef COLOR
*customization: -color
#endif
to the %HOME%/.Xdefaults
file and run
xrdb
with the option -DCOLOR
.
mkfontdir
utility.
Imakefile
. Simply proceed as
if you were under Unix. Run xmkmf -a
to compile. Read the
programming section on special issues.
it is possible not there. Ask whether someone is already porting it, e.g. in the newsgroup comp.os.os2.programmer.porting; if not, then try it yourself. Applications don't appear magically, unless someone really ports them. So why not YOU?
ctwm
,
fvwm
, fvwm95
, afterstep
,
available through the ported software web page (see Q 1.15).
twm
by default. There is more stuff that would be worth becoming
part of the standard, such as xv
, but ...well, it isn't...
The problem then is that I cannot give out the code or put it on an FTP server, not even diffs. I don't have the time nor resources to open a business that sells licenses of the libraries to anyone interested and collect the royalties to the Motif Open Software Consortium. Initially, I thought I would simply make binaries, encrypt them and put them on a FTP server. People or institutions that give me a proof of a valid Motif license would then get the decryption key. I was told, however, that this scheme would be juridically suspicious.
So, this may be a point where companies, for instance, who are already involved in the Motif business could jump in, and offer the missing link. I have neither interest nor time to manage this.
There is also the LessTif project to build a free Motif clone. Look at the ported software page (Q 1.15).
gcc
compiler. There may
be certain restrictions and side effects involved concerning the
GPL and the use of certain libraries. I won't discuss this here,
but I would have no concerns regarding this.
If you aren't concerned either: Yes, commercial applications are allowed and welcome. THIS IS YOUR CHANCE!
312FSLIB.ZIP
.
The libraries have been renamed to *_s.a
to distinguish from the
DLL forwarder libraries.
gcc
is free software, and most stuff written for it is also
freely available. Recompile any singlethreaded libs you want to
link to a X application.
_System
. However, there may be a large number of EMXisms in them
which may prevent running. You need the EMX runtime DLLs anyway.
Imakefile
s also have nice features, particularly that they
expand to Makefile
s that may have several thousand lines. I have
tested numerous make programs: all but GNU make
failed this benchmark
somehow. You are accustomed to XYZmake; let's say, imake
is
accustomed to GNU make
.
Imakefile
and do not try to handcraft or patch a
Makefile
. Things will go wrong!
ProgramTargetName()
and LibraryTargetName()
and use them in the Imakefile
, rather than hacking .exe and .lib
names. The above will work, hacking won't.
-Zmtd
option, the libraries
are multithreaded by intention.
#ifdef OS2Architecture
in an Imakefile
to specify an
OS/2 dependent part.
#ifdef __EMX__
for
OS/2 EMX specific parts. Don't use other symbols, such as
"OS2", "__OS2__", "i386", "__GNUC__", or "__32BIT__".
Use only #ifdef
, #else
, #endif
, not #elif
, as some other compilers
don't support this.
Imakefile
s silently assume they are running under Unix,
and therefore have program and library names hardcoded in.
Use the LibraryTargetName
and ProgramTargetName
macros to wrap
libs and programs, such as in
EXTRA_LIBRARIES = ../Xpmlib/LibraryTargetName(Xpm)
PROGRAMS = ProgramTargetName(xterm) ProgramTargetName(resize)
%X11ROOT%\XFree86\..
. To prepend the X11ROOT
part
to a file path, a special function named __XOS2RedirRoot
exists
which you are supposed to use in these cases rather than an insane
own solution. The prototype of this function is:
const char* __XOS2RedirRoot(const char* pathname);
README.OS2
, rather
than invent yet another variable name for USER
s, HOME
directories,
TMP
directories, etc.
fork()
is involved.
I got fork
running in several situations, but it is no fun.
Try to rewrite this code where possible (well-meant advice).
\emx\lib\binmode.o
. Don't change this, some code relies
on this. Rather rewrite the code to accept \r\n
as a line
delimiter.
Dos*
API functions, as long as they don't conflict
with EMX somehow (e.g. _beginthread
vs. DosCreateThread
). Stay
away from Kbd*
, Mou*
, Vio*
calls - none of those will do what you
expect, but you can severely influence the operation of the X11
system.
#ifdef
clauses.
WINDOWCOMPAT
and EXETYPE OS2
(the only exceptions are the X servers and xinit
).
sh
, so rewrite Unix shell
scripts to REXX cmd files. Don't rely on others to install sh
or other tools just for you.
tar
and gzip
.
Imakefile
(which is common practice with X apps),
set the X11ROOT
variable to another letter than the one where you
have your X11 tree. This makes it easier for you to combine
all necessary files into a distribution.
/usr/local/bin
or similar, or
rely on users to edit CONFIG.SYS
to change the PATH
or LIBPATH
.
/XFree86/src/PACKAGENAME
, e.g.
/XFree86/src/xfoo-0.42
.
Make
is a REXX cmd script which is installed in \XFree86\bin
. This
script sets certain important variables and then calls the x11make.exe
program (which is gnumake 3.71) which is known to work.
You have some other make.cmd
or make.exe
somewhere in the path. If
you do not remove or rename this, you won't be able to compile
X11 code successfully.
Imakefile.
You have not passed the correct options to gcc
.
The most simple Imakefile to compile a client with just one
source file foo.c
looks like this:======snip========================
SimpleProgramTarget(foo)
======snip========================
Note that you still need some secondary literature on special
features of Imakefile rules. A recommended book on
Imakefile
s is available from O'Reilly&Assoc publ
(Using imake). Ask in your bookstore.
rcs
(available from hobbes.nmsu.edu) to make copies of each
file before I modify it the first time. Later I use the modified
files to produce context diff files using rcsdiff
.
When I managed to get some code working, I run make install
, and
make install.man
which will usually install all necessary files in
the right place. When I think the code is working correctly, I do
the following: I change the X11ROOT
variable in a CMD window to
something else, e.g. from X11ROOT=d:
(which it is on my system by
default) to X11ROOT=c:
, and run make install install.man
again.
This will build the tree of files again on C:
where I can easily
pack it with the zip utility after adding README
files and diff files
manually.
For own software to run under XFree86, this won't apply, of course.
The MIT copyright under which XFree86 is distributed is less restrictive anyway.
Thanks to all people who responded and now recognize their system mentioned here.
Another source of problems are files which contain CR-LF as a
line delimiter. We have to fix this the hard way unfortunately;
for well-defined reasons programs are linked with \emx\lib\binmode.o.
You might try to convert offending files to the Unix convention
with the program \XFree86\lib\X11\etc\fixcrlf.exe
.
fixcrlf filename
This will convert the file in place. Never apply this program to
executables, fontfiles or other binaries.
We need a bug report for the program anyway.
os2.rules
or os2Lib.rules
)
report it as a bug. It remains your problem (you should contact and
flame the author for dirty hacks), if some Imakefile
contains
Unixisms, such as sh
command sequences.
commandname
is CMD.EXE
, it works, but if it is for instance ls
only a window is opened, but no output is generated.