diff options
23 files changed, 379 insertions, 5 deletions
diff --git a/XpConfig/C/Makefile.am b/XpConfig/C/Makefile.am new file mode 100644 index 000000000..0390ed2d4 --- /dev/null +++ b/XpConfig/C/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = print diff --git a/XpConfig/C/print/Makefile.am b/XpConfig/C/print/Makefile.am new file mode 100644 index 000000000..32abac8a4 --- /dev/null +++ b/XpConfig/C/print/Makefile.am @@ -0,0 +1,5 @@ +SUBDIRS = attributes ddx-config models + +EXTRA_DIST = Xprinters ## FIXME + + diff --git a/XpConfig/C/print/attributes/Makefile.am b/XpConfig/C/print/attributes/Makefile.am new file mode 100644 index 000000000..9dfe6e047 --- /dev/null +++ b/XpConfig/C/print/attributes/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST = document job printer ## FIXME + + + diff --git a/XpConfig/C/print/ddx-config/Makefile.am b/XpConfig/C/print/ddx-config/Makefile.am new file mode 100644 index 000000000..907edca75 --- /dev/null +++ b/XpConfig/C/print/ddx-config/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = raster diff --git a/XpConfig/C/print/ddx-config/raster/Makefile.am b/XpConfig/C/print/ddx-config/raster/Makefile.am new file mode 100644 index 000000000..007481a6d --- /dev/null +++ b/XpConfig/C/print/ddx-config/raster/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = pcl postscript ## FIXME + diff --git a/XpConfig/C/print/models/CANONBJ10E-GS/Makefile.am b/XpConfig/C/print/models/CANONBJ10E-GS/Makefile.am new file mode 100644 index 000000000..927e5ab99 --- /dev/null +++ b/XpConfig/C/print/models/CANONBJ10E-GS/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = Makefile.am model-config ## FIXME diff --git a/XpConfig/C/print/models/CANONC3200-PS/Makefile.am b/XpConfig/C/print/models/CANONC3200-PS/Makefile.am new file mode 100644 index 000000000..650e96fb6 --- /dev/null +++ b/XpConfig/C/print/models/CANONC3200-PS/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = model-config ## FIXME diff --git a/XpConfig/C/print/models/GSdefault/Makefile.am b/XpConfig/C/print/models/GSdefault/Makefile.am new file mode 100644 index 000000000..650e96fb6 --- /dev/null +++ b/XpConfig/C/print/models/GSdefault/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = model-config ## FIXME diff --git a/XpConfig/C/print/models/HPDJ1600C/Makefile.am b/XpConfig/C/print/models/HPDJ1600C/Makefile.am new file mode 100644 index 000000000..c20743ee7 --- /dev/null +++ b/XpConfig/C/print/models/HPDJ1600C/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = fonts model-config ## FIXME diff --git a/XpConfig/C/print/models/HPLJ4050-PS/Makefile.am b/XpConfig/C/print/models/HPLJ4050-PS/Makefile.am new file mode 100644 index 000000000..650e96fb6 --- /dev/null +++ b/XpConfig/C/print/models/HPLJ4050-PS/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = model-config ## FIXME diff --git a/XpConfig/C/print/models/HPLJ4family/Makefile.am b/XpConfig/C/print/models/HPLJ4family/Makefile.am new file mode 100644 index 000000000..c20743ee7 --- /dev/null +++ b/XpConfig/C/print/models/HPLJ4family/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = fonts model-config ## FIXME diff --git a/XpConfig/C/print/models/HPLJ4family/fonts/Makefile.am b/XpConfig/C/print/models/HPLJ4family/fonts/Makefile.am new file mode 100644 index 000000000..3891a519b --- /dev/null +++ b/XpConfig/C/print/models/HPLJ4family/fonts/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = 9nb00051.pmf 9nb00052.pmf 9nb00053.pmf 9nb00054.pmf 9nb00055.pmf 9nb00056.pmf 9nb00057.pmf 9nb00058.pmf 9nb00059.pmf 9nb00060.pmf 9nb00061.pmf 9nb00062.pmf 9nb00063.pmf 9nb00064.pmf 9nb00065.pmf 9nb00066.pmf 9nb00067.pmf 9nb00068.pmf 9nb00069.pmf 9nb00070.pmf 9nb00071.pmf 9nb00072.pmf 9nb00073.pmf 9nb00074.pmf 9nb00075.pmf 9nb00076.pmf 9nb00077.pmf 9nb00079.pmf 9nb00080.pmf 9nb00081.pmf 9nb00082.pmf 9nb00083.pmf 9nb00084.pmf 9nb00085.pmf 9nb00086.pmf 9nb00087.pmf 9nb00088.pmf 9nb00089.pmf 9nb00090.pmf 9nb00091.pmf 9nb00092.pmf 9nb00093.pmf 9nb00094.pmf fonts.alias fonts.dir lpr0ye1a.pmf Makefile.am README ## FIXME diff --git a/XpConfig/C/print/models/Makefile.am b/XpConfig/C/print/models/Makefile.am new file mode 100644 index 000000000..e2fa1bd9d --- /dev/null +++ b/XpConfig/C/print/models/Makefile.am @@ -0,0 +1,12 @@ +SUBDIRS = \ + CANONBJ10E-GS \ + CANONC3200-PS \ + GSdefault \ + HPDJ1600C \ + HPLJ4050-PS \ + HPLJ4family \ + Makefile.am \ + PS2PDFspooldir-GS \ + PSdefault \ + PSspooldir \ + SPSPARC2 diff --git a/XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am b/XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am new file mode 100644 index 000000000..e5f57d5b0 --- /dev/null +++ b/XpConfig/C/print/models/PS2PDFspooldir-GS/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = model-config ps2pdf_spooltodir.sh ## FIXME diff --git a/XpConfig/C/print/models/PSdefault/Makefile.am b/XpConfig/C/print/models/PSdefault/Makefile.am new file mode 100644 index 000000000..2af468da0 --- /dev/null +++ b/XpConfig/C/print/models/PSdefault/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS = fonts + +EXTRA_DIST = fonts model-config ## FIXME diff --git a/XpConfig/C/print/models/PSdefault/fonts/Makefile.am b/XpConfig/C/print/models/PSdefault/fonts/Makefile.am new file mode 100644 index 000000000..99156b650 --- /dev/null +++ b/XpConfig/C/print/models/PSdefault/fonts/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = AvantGarde-BookOblique.pmf AvantGarde-Book.pmf AvantGarde-DemiOblique.pmf AvantGarde-Demi.pmf Courier-BoldOblique.pmf Courier-Bold.pmf Courier-Oblique.pmf Courier.pmf Helvetica-BoldOblique.pmf Helvetica-Bold.pmf Helvetica-Oblique.pmf Helvetica.pmf LubalinGraph-BookOblique.pmf LubalinGraph-Book.pmf LubalinGraph-DemiOblique.pmf LubalinGraph-Demi.pmf NewCenturySchlbk-BoldItalic.pmf NewCenturySchlbk-Bold.pmf NewCenturySchlbk-Italic.pmf NewCenturySchlbk-Roman.pmf Souvenir-DemiItalic.pmf Souvenir-Demi.pmf Souvenir-LightItalic.pmf Souvenir-Light.pmf Symbol.pmf Times-BoldItalic.pmf Times-Bold.pmf Times-Italic.pmf Times-Roman.pmf ZapfDingbats.pmf ## FIXME diff --git a/XpConfig/C/print/models/PSspooldir/Makefile.am b/XpConfig/C/print/models/PSspooldir/Makefile.am new file mode 100644 index 000000000..650e96fb6 --- /dev/null +++ b/XpConfig/C/print/models/PSspooldir/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = model-config ## FIXME diff --git a/XpConfig/C/print/models/SPSPARC2/Makefile.am b/XpConfig/C/print/models/SPSPARC2/Makefile.am new file mode 100644 index 000000000..f0cef734e --- /dev/null +++ b/XpConfig/C/print/models/SPSPARC2/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = model-config diff --git a/XpConfig/Makefile.am b/XpConfig/Makefile.am index 84c89e2eb..9cefeda4b 100644 --- a/XpConfig/Makefile.am +++ b/XpConfig/Makefile.am @@ -5,6 +5,8 @@ # List of locales which should be linked to the "C" locale +SUBDIRS = C en_US + xpconfigdir = $(libdir)/X11/xserver C_LOCALES= \ @@ -681,16 +683,28 @@ US_LOCALES= \ yi_US \ yi_US.cp1255 -dist_xpconfig_DATA = README - install-data-local: + mkdir -p $(xpconfigdir) ; \ + mkdir -p $(xpconfigdir)/C \ + mkdir -p $(xpconfigdir)/en_US \ + \ cd $(xpconfigdir) ; \ + \ for dir in $(US_LOCALES) ; do \ rm -f $${dir} ; \ done ; \ \ for dir in $(US_LOCALES) ; do \ ln -s en_US $${dir} ; \ - echo $(xpconfigdir) ; \ - echo $${dir} ; \ - done + done ; \ + \ + for dir in $(C_LOCALES) ; do \ + rm -f $${dir} ; \ + done ; \ + \ + for dir in $(C_LOCALES) ; do \ + ln -s en_US $${dir} ; \ + done ; + + +EXTRA_DIST = README diff --git a/XpConfig/README b/XpConfig/README new file mode 100644 index 000000000..d7447815d --- /dev/null +++ b/XpConfig/README @@ -0,0 +1,318 @@ + + -------------------------------------- + The X Print Service - The Basics + -------------------------------------- + +Index + - 1.0 X Print Service Overview + + - 2.0 How the X Print Service Works + + - 3.0 Using the X Print Service + - 3.1 X Print Server Configuration + - 3.2 Starting the X Print Service + - 3.3 Configuring the environment + - 3.4 General End-User Sequence + + +1.0 X Print Service Overview +============================= + +The "X Print Service" technology allows X rendering to devices such as +printers and fax. Most of the service is available in the X11 +technology stack as Xp, with the remainder in the CDE technology stack +as DtPrint. Modifications have also been made to the Motif technology +stack to support Xp and DtPrint. + +The Xp portion consists of: + * Xp Extension for the X-Server (included in the X-Server Xprt) + * Xp Extension API for the client side (libXp) + * PCL ddx driver that converts core X to native PCL + * Postscript ddx driver that converts core X to native Postscript + * Raster ddx driver that generates xwd rasters which can be + converted to PCL or Postscript rasters + +The DtPrint portion consists of: + * A collection of print GUIs (libDtPrint) + * A Print Dialog Manager that can assist a client in + setting printing options (dtpdm, dtpdmd) + +From an X clients perspective, it can attach to one of two nearly +identical X-Servers, a "Video" X-Server, and a "Print" X-Server +which has the additional Xp capability but otherwise looks and +behaves the same. + + + +2.0 How the X Print Service Works +================================== + +The X Print Service expands on the traditional X-Server and Xlib world +in four ways. + +1. Most obvious is the use of "print ddx drivers" instead of + "video ddx drivers". While a video ddx driver modifies pixels + in a video frame buffer, a print ddx driver generates "page + description language (PDL)" output such as PCL or Postscript. + + Once a print ddx driver generates PDL output, it can be sent to + a spooler such as lp(1) or retrieved by the client. + + Though not currently done, a single X-Server can support both + print and video ddx drivers. + +2. Since printers support "paged" output, unlike video, a portion + of the Xp Extension supports APIs to delineate printed output. + For example, XpStartPage and XpEndPage tell the X-Server where + a physical page starts and ends in an otherwise continuous + stream of X rendering primitives. Likewise, XpStartJob and + XpEndJob determine when a collection of pages starts and ends. + XpEndJob typically causes the generated PDL to be submitted to + a spooler, such as lp(1). + +3. Since printers have extensive capabilities, another portion of + the Xp Extension supports APIs to manipulate "print contexts". + + Once a printer is selected using the Xp Extension API, a print + context to represent it can be created. A print context + embodies the printer selected - it contains the printer's + default capabilities, selectable range of capabilities, + printer state, and generated output. Some "attributes" within + the print context can be modified by the user, and the + X-Server and print ddx driver will react accordingly. For + example, the attribute "content-orientation" can be set to + "landscape" or "portrait". + +4. Since printers can have "built in" fonts, the Xp Extension in + the X-Server works with the print ddx drivers to make + available (for printing only) additional fonts on a per print + context basis. + + When a print context is created and set for a given printer, + the X font calls may be able to access additional printer + fonts. To do this (typically), the X-Server must have access + to "printer metric files" (.pmf) that describe at minimum the + metrics of the built in fonts. + + + +3.0 Using the X Print Service +============================== + +There are three tasks to start the X Print Service: 1) configuring the +X Print Server, 2) starting the X Print Service, 3) configuring the user +session so that clients can find the running X Print Service. + +The tasks are described in detail below. + + +3.1 X Print Server Configuration +--------------------------------- + +The X Print Server (Xprt) can read a number of configuration files which +control its behavior and support for printers. Each vendor platform has +a default location for this information. Xprt can also read the +environment variable XPCONFIGDIR to locate alternate configuration +directories. Common settings include: + + * export XPCONFIGDIR=/X11/lib/X11/XpConfig/ + + * export XPCONFIGDIR=/proj/x11/xc/programs/Xserver/XpConfig/ + +Xprt has many built-in defaults, and lacking any configuration files, +will immediately try to support all printers visible via lpstat(1). + +In order of importance for configuration by a system administrator, the +configuration files for a "C" locale are as follows. + + ${XPCONFIGDIR}/C/print/Xprinters + + `Xprinters' is the top most configuration file. It tells + Xprt which specific printer names (e.g. mylaser) should + be supported, and whether lpstat(1) or other commands + should be used to automatically supplement the list of + printers. + + ${XPCONFIGDIR}/C/print/attributes/printer + + The `printer' file maps printer names to model + configurations (see `model-config' below). For example, + "mylaser" could be mapped to a "HPDJ1600C", and all other + arbitrary printers could be mapped to a default, such as + "HPLJ4SI". When depending on lpstat(1) in the Xprinters + file, setting up defaults in `printer' becomes all the + more important. + + ${XPCONFIGDIR}/C/print/attributes/document + + The `document' file specifies the initial document values + for any print jobs. For example, which paper tray to + use, what default resolution, etc. + + ${XPCONFIGDIR}/C/print/attributes/job + + The `job' file specifies the initial job values for any + print jobs. For example, "notification-profile" can be + set so that when a print job is successfully sent to a + printer, e-mail is sent to the user. + + ${XPCONFIGDIR}/C/print/models/HPDJ1600C/model-config + ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/fonts.dir + ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/9nb00051.pmf + ${XPCONFIGDIR}/C/print/models/HPDJ1600C/fonts/9nb00093.pmf + + The `model-config' file has attributes that describe the + printer model's capabilities and default settings. + Printer model fonts may also be present. The model-config + file also identifies the print ddx driver to be used. + + For each printer model supported, a complete hierarchy of + files should exist. In most cases, these files do not + need to be modified. + + ${XPCONFIGDIR}/C/print/ddx-config/raster/pcl + ${XPCONFIGDIR}/C/print/ddx-config/raster/postscript + + The print ddx drivers can have highly specific + configuration files to control their behavior. In most + cases, these files do not need to be modified. + + +3.2 Starting the X Print Service +--------------------------------- + +The summary checklist for starting the X Print Service is as follows: + +1. Choose an execution model for the X Print Service. The X + Print Service can be run on a per-user session basis, per + machine basis, or can be run on a few machines globally + available to a number of users. + +2. If print jobs are to be submitted to a spooler (almost always + the case), make sure all needed printers are available to the + spooler subsystem (most often lp(1)) on the same machine + running the X Print Service. + +3. Configure the X Print Server. See ``X Print Server + Configuration''. + +4. Depending on #1, start the X Print Server process "Xprt", and + then the Print Dialog Manager Daemon process "dtpdmd" at the + appropriate times. + +The details are described below. + +Because the X Print Service is based on X, it can be easily distributed. +The most significant factors in which execution model to choose will be +driven by: + + * how many printers will be accessable through the printer + subsystem on any given machine. A system administrator may + choose to cluster printers on a few given machines, or + scatter them across an organization and possibly make + extensive use of remote spoolers to make them globally + available. + + * how many machines will need a copy of the X Print Server + configuration files. The files have been architected so + that one super-set version of them can be maintained and + distributed (e.g. via NFS), and a per-machine or per-user + version of the `Xprinters' is all that is needed to have the + appropriate information in them utilized or ignored. + + * how many users can demand services from a given X Print + Service. + +With the above in mind, some obvious execution models include: + + * Global - in this model, the system administrator is choosing + to run the X Print Service on a *few* select machines with + appropriate printers configured, and allow clients access to + the global resource. This can centralize the administration + of printers and configuration files, but may have to be + monitored for performance loading. + + Startup would likely be done by boot-up scripts. + + * Per-machine - every machine with potential X Print Service + users would run the service. Printer and configuration file + administration is decentralized, and usage would be limited + to the users on the machine. + + Startup would likely be done by boot-up scripts. + + * Per-user session - every user would run an entire X Print + Service for themselves. In the future, the Video X Server + normally started may contain Print X Server capability, so + this model becomes very natural. + + Startup would likely be done at session login or by + launching actions or processes manually once the user + logs in. Note: the dtpdmd must be started after Xprt. + +Starting of the processes is straight forward. In strict order: + + [machineA] % Xprt [-XpFile <Xprinters file>] [:dispNum] & + + Note that Xprt will look for configuration files in either + a default location or where XPCONFIGDIR points. + + -XpFile specifies an alternate `Xprinters' file, rather + than the default one or `${XPCONFIGDIR}/C/print/Xprinters'. + + [machineA] % dtpdmd -d machineA[:dispNum] [-l /tmp/dtpdmd.log] & + + The dtpdmd will maintain an X-Selection on the X-Server, + and will start dtpdm's as required to service requests. + +In all but the per-user session model, the machine running the dtpdmd +(thus dtpdm's) will need display authorization to the users video +display. + + + +3.3 Configuring the environment +-------------------------------- + +Once a X Print Server and dtpdmd have been started -- many of them +in some cases -- clients will need to find and use them. There are +two mechanisms that allow clients to discover X Print Servers and +printers. + + * "X Print Specifier" - assuming usage of the DtPrint print + dialogs, the following notation is understood: + + printer_name@machine[:dispNum] + + For example: + + colorlj7@printhub:2 + + In the above example, the X Print Server running at `printhub:2' + is assumed to support the printer named `colorlj7'. + + * "XPSERVERLIST" - assuming usage of the DtPrint print dialogs, + the environment variable "XPSERVERLIST" can contain a list + of X Print Servers. For example: + + XPSERVERLIST="printhub:2 printhub:3 otherdept:0" + + Then in the dialogs, only a printer name needs to be entered. + The dialog will then search the X Print Servers in XPSERVERLIST + for a server than supports the printer, and then establish + contact. + +3.4 General End-User Sequence +------------------------------ + +From most CDEnext applications, printing is accomplished by bringing +down the <File> menu and selecting <Print...>. This will result in +the DtPrintSetupBox dialog, which will request the name of a printer, +and offer limited capability to configure print options (e.g. number +of copies). If the user wishes, they can select <Setup...>, which +will start a dtpdm capable of modifying additional print options. +Finally, the user should select <Print>. + + + +$Xorg: README,v 1.3 2000/08/17 19:48:02 cpqbld Exp $ diff --git a/XpConfig/en_US/Makefile.am b/XpConfig/en_US/Makefile.am new file mode 100644 index 000000000..0390ed2d4 --- /dev/null +++ b/XpConfig/en_US/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = print diff --git a/XpConfig/en_US/print/Makefile.am b/XpConfig/en_US/print/Makefile.am new file mode 100644 index 000000000..025003339 --- /dev/null +++ b/XpConfig/en_US/print/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = attributes diff --git a/XpConfig/en_US/print/attributes/Makefile.am b/XpConfig/en_US/print/attributes/Makefile.am new file mode 100644 index 000000000..adffc4854 --- /dev/null +++ b/XpConfig/en_US/print/attributes/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = documents ## FIXME |