ch01.sgm 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. <!-- $XConsortium: ch01.sgm /main/13 1996/10/30 14:58:57 rws $ -->
  2. <!-- (c) Copyright 1995 Digital Equipment Corporation. -->
  3. <!-- (c) Copyright 1995 Hewlett-Packard Company. -->
  4. <!-- (c) Copyright 1995 International Business Machines Corp. -->
  5. <!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
  6. <!-- (c) Copyright 1995 Novell, Inc. -->
  7. <!-- (c) Copyright 1995 FUJITSU LIMITED. -->
  8. <!-- (c) Copyright 1995 Hitachi. -->
  9. <chapter id="RDMAP.archo.div.1">
  10. <title id="RDMAP.archo.mkr.1">Architectural Overview</title>
  11. <para>This chapter presents a high-level architectural view of the Common
  12. Desktop Environment. For details regarding the desktop run-time environment,
  13. consult the run-time documentation set and the online help volumes. For details
  14. regarding the desktop development environment components, see
  15. <!--Original
  16. XRef content: 'Chapter&numsp;6, &xd2;Recommended Integration'--><xref role="ChapNumAndTitle"
  17. linkend="RDMAP.recin.mkr.1">, <!--Original XRef content: 'Chapter&numsp;7,
  18. &xd2;Optional Integration'--><xref role="ChapNumAndTitle" linkend="RDMAP.optin.mkr.1">,
  19. the development environment documentation set, and the online man pages.
  20. </para>
  21. <informaltable id="RDMAP.archo.itbl.1" frame="All">
  22. <tgroup cols="1">
  23. <colspec colname="1" colwidth="4.0 in">
  24. <tbody>
  25. <row rowsep="1">
  26. <entry><para><!--Original XRef content: 'Conceptual Overview3'--><xref role="JumpText"
  27. linkend="RDMAP.archo.mkr.2"></para></entry></row>
  28. <row rowsep="1">
  29. <entry><para><!--Original XRef content: 'Data Interaction GUIs5'--><xref role="JumpText"
  30. linkend="RDMAP.archo.mkr.3"></para></entry></row>
  31. <row rowsep="1">
  32. <entry><para><!--Original XRef content: 'Multiuser Collaboration6'--><xref
  33. role="JumpText" linkend="RDMAP.archo.mkr.4"></para></entry></row>
  34. <row rowsep="1">
  35. <entry><para><!--Original XRef content: 'Desktop Management7'--><xref role="JumpText"
  36. linkend="RDMAP.archo.mkr.5"></para></entry></row>
  37. <row rowsep="1">
  38. <entry><para><!--Original XRef content: 'Motif GUI Engine12'--><xref role="JumpText"
  39. linkend="RDMAP.archo.mkr.7"></para></entry></row>
  40. <row rowsep="1">
  41. <entry><para><!--Original XRef content: 'Integration Technologies15'--><xref
  42. role="JumpText" linkend="RDMAP.archo.mkr.8"></para></entry></row>
  43. <row rowsep="1">
  44. <entry><para>Information Technologies ??
  45. </para></entry></row>
  46. </tbody>
  47. </tgroup></informaltable>
  48. <sect1 id="RDMAP.archo.div.2">
  49. <title id="RDMAP.archo.mkr.2">Conceptual Overview</title>
  50. <para>The Common Desktop Environment<indexterm><primary>architecture, Common
  51. Desktop Environment</primary></indexterm> architecture has many cross-process
  52. relationships. The three-process relationship of an X client, a window manager,
  53. and the X Window System&trade; server seems simple by comparison. The area
  54. covered by the Common Desktop Environment is broad, but the layering in the
  55. system is not as rigorous as that of<indexterm><primary>Motif</primary>
  56. </indexterm> Motif, Xt, and Xlib. The relationships between high-level system
  57. components are diverse and extensible. This chapter groups the technologies
  58. to illustrate that each desktop component fits into an overall whole. The
  59. Common Desktop Environment can be divided into:</para>
  60. <figure>
  61. <title>Conceptual overview of Common Desktop Environment</title>
  62. <graphic id="rdmap.archo.igrph.1" entityref="RDMAP.archo.fig.1"></graphic>
  63. </figure>
  64. <itemizedlist remap="Bullet1"><listitem><para>Data interaction graphical user
  65. interfaces (GUIs)&mdash;Application-level components that are available for
  66. user interaction, invocable by other applications. Think of these as programming
  67. components at a larger granularity than widgets.<indexterm><primary>data
  68. interaction graphical user interfaces</primary></indexterm></para>
  69. </listitem><listitem><para>Multiuser collaboration&mdash;Defines and uses
  70. application program interfaces (APIs) that enable collaboration between users
  71. on the network, particularly in the areas of calendar management, network
  72. resource naming, and network file sharing.<indexterm><primary>multiuser collaboration</primary></indexterm></para>
  73. </listitem><listitem><para>Desktop management&mdash;Provides components that
  74. negotiate the visual relationships between entities on the desktop. These
  75. include the following: Window Manager, Workspace Manager, Session Manager,
  76. Application Manager, File Manager, Style Manager, and the Front Panel.<indexterm>
  77. <primary>desktop management</primary></indexterm></para>
  78. </listitem><listitem><para>Motif GUI engine&mdash;Includes those components
  79. that implement the controls available to the user and includes the Common
  80. Desktop Environment Motif toolkit, additional widgets, a GUI shell (Desktop
  81. KornShell), and a GUI construction tool (Application Builder).<indexterm>
  82. <primary>graphical user interface engine</primary></indexterm></para>
  83. </listitem><listitem><para>Integration technologies&mdash;Represent technologies
  84. that do not generate GUIs, but are used as infrastructure by the rest of
  85. the desktop. These technologies include process execution control, application
  86. messaging (mechanism and protocols), data typing, and method invocation.<indexterm>
  87. <primary>integration technologies</primary></indexterm></para>
  88. </listitem></itemizedlist>
  89. </sect1>
  90. <sect1 id="RDMAP.archo.div.3">
  91. <title id="RDMAP.archo.mkr.3">Data Interaction GUIs<indexterm><primary>data
  92. interaction graphical user interfaces &lt;$startrange></primary></indexterm></title>
  93. <para>The Common Desktop Environment supplies a registration service, the
  94. ToolTalk Messaging Service, that enables an application to find an available
  95. service provider. ToolTalk provides the low-level messaging infrastructure.
  96. A companion mechanism, called the actions system, provides a consistent
  97. abstraction layer on top of both the traditional<indexterm><primary>UNIX</primary></indexterm> UNIX&trade; command-line interface to applications
  98. and the Common Desktop Environment-recommended ToolTalk interface to applications.
  99. Actions, as semantic entities, are exposed to the end user through higher
  100. levels of software. Both actions and ToolTalk are discussed in more detail
  101. in <!--Original XRef content: '&xd2;Integration Technologies&xd3; on page&numsp;15'--><xref
  102. role="SecTitleAndPageNum" linkend="RDMAP.archo.mkr.8">.</para>
  103. <para>The desktop contains components that are available through<indexterm>
  104. <primary>actions</primary></indexterm> action and ToolTalk APIs. Examples
  105. include GUIs to show a view of a directory, submit a print job, view the
  106. contents of the Trash Can, edit some text, show help information, compose
  107. a calendar appointment, and compose a mail message.</para>
  108. <para>You can also incorporate actions and<indexterm><primary>ToolTalk Messaging
  109. Service</primary></indexterm> ToolTalk message support into your application
  110. so that the application-specific services they supply are available to the
  111. desktop and other applications. Particularly, applications should provide
  112. the composition, viewing, editing, and printing services for both proprietary
  113. and standard format data. This way, applications that are coded to accept
  114. an extensible set of data types automatically gain more capabilities as more <emphasis>media</emphasis> handlers are added to the system. The Common Desktop Environment<indexterm><primary>File Manager</primary></indexterm>
  115. File Manager,<indexterm>
  116. <primary>Front Panel</primary></indexterm> Front Panel, and<indexterm><primary>Mailer</primary></indexterm> Mailer attachment GUI are examples of such applications.
  117. </para>
  118. <para>Media is used as a generic term for anything that can be presented to
  119. the user to convey information. The desktop provides media handlers for
  120. appointments, mail messages, mail folders, text, icons, and help data. Vendors
  121. have extended the desktop with additional media handlers, including PostScript&trade;,
  122. many kinds of image file formats, and audio <literal><indexterm><primary>data interaction graphical user interfaces &lt;$endrange></primary></indexterm></literal>data.</para>
  123. </sect1>
  124. <sect1 id="RDMAP.archo.div.4">
  125. <title id="RDMAP.archo.mkr.4">Multiuser Collaboration<indexterm><primary>multiuser collaboration &lt;$startrange></primary></indexterm></title>
  126. <para>While the ToolTalk and action mechanisms encourage cooperation between
  127. applications, the desktop also defines cross-user collaboration technologies.
  128. This means distributed access to shared user data. The desktop has defined
  129. some basic sharing mechanisms and has also built on top of existing mechanisms.
  130. </para>
  131. <para>An example of building on an existing mechanism is the<indexterm>
  132. <primary>remote procedure call (RPC)</primary></indexterm> remote procedure
  133. call (RPC) client/service implementation of calendar management. The desktop
  134. provides a client-side library and API, RPC protocol, and daemon/service
  135. that enables users to share appointment information. (The API is being standardized
  136. through<indexterm><primary>X.400 API Association (XAPIA)</primary></indexterm> X.400
  137. Application Programming Interface Association (XAPIA) to enable a cross-UNIX,
  138. PC, and palmtop calendar standard.) The RPC protocol enables a user to browse
  139. and directly edit another user's calendar. Access is controlled by a user-specific
  140. access control mechanism. Calendars are tied to hosts, and a calendar's data
  141. is maintained by a host- specific daemon. The desktop names calendars through
  142. a <computeroutput>user@host</computeroutput> format.</para>
  143. <para>The Common Desktop Environment uses conventional distributed file systems
  144. to name files that are sharable on the network. To provide an interface that
  145. is independent of the distributed file system, the desktop provides an API
  146. to translate host-relative file names into locally expressible file names.
  147. Although the desktop is based on the NFS&reg; system, it can be ported to
  148. run on top of other distributed file systems. Using the desktop file-name
  149. mapping API, an opaque file name object can be constructed and passed between
  150. desktop clients across the network and resolved in a host-specific way. Also,
  151. to simplify the programming task and end user metaphor, Common Desktop Environment
  152. applications should present remote file references as local file paths.</para>
  153. <para>One of the fundamentals of building multiuser collaboration applications
  154. is the ability to share files. The conventions for naming network files,
  155. in conjunction with a ToolTalk file-sharing mechanism called <emphasis><indexterm>
  156. <primary>file scoping</primary></indexterm>file scoping</emphasis>, enable
  157. multiuser collaboration through file sharing. File scoping is more than a
  158. mechanism for simple, exclusive access control. Cooperating clients can use
  159. file-scope access to negotiate for access to files. For example, an application
  160. that has exclusive access to a file could ask whether the user was done with
  161. the file when another application wanted to gain exclusive access to the file.<literal><indexterm>
  162. <primary>multiuser collaboration &lt;$endrange></primary></indexterm></literal></para>
  163. </sect1>
  164. <sect1 id="RDMAP.archo.div.5">
  165. <title id="RDMAP.archo.mkr.5">Desktop Management</title>
  166. <para>The physical metaphor associated with the Common Desktop Environment
  167. is loosely one of a user sitting in a chair surrounded by a bank of desks
  168. (workspaces). As the user swivels the chair (by clicking a push button on
  169. the Front Panel), another desk becomes accessible. On each desk, the following
  170. is available:</para>
  171. <itemizedlist remap="Bullet1"><listitem><para>A collection of drawers (<indexterm>
  172. <primary>File Manager</primary></indexterm> File Manager views) in which folders
  173. (directories) and reports (files) are organized.</para>
  174. </listitem><listitem><para>A collection of papers in use on the desktop (windows).
  175. Some papers are pushed out of the way (as icons), but are within easy reach.
  176. </para>
  177. </listitem><listitem><para>Continuous display (through<indexterm><primary>Front Panel</primary></indexterm> Front Panel icons) of a clock, the date,
  178. an indication of new mail, and an indication of something in the trash can.
  179. </para>
  180. </listitem><listitem><para>Direct access (through Front Panel buttons) to
  181. an appointment book (<indexterm><primary>Calendar</primary></indexterm>Calendar),
  182. a pad of paper (<indexterm><primary>Text Editor</primary></indexterm>Text
  183. Editor), a terminal (emulator), a mail box (<indexterm><primary>Mailer</primary>
  184. </indexterm>Mailer), a printer (<indexterm><primary>Print Manager</primary>
  185. </indexterm>Print Manager), office lighting controls (<indexterm><primary>Style Manager</primary></indexterm>Style Manager), a list of electronic agents
  186. (<indexterm><primary>Application Manager</primary></indexterm>Application
  187. Manager and Front Panel personal tool box), a guide book (<indexterm>
  188. <primary>Help system</primary></indexterm>Help), and a library (Information
  189. Manager).</para>
  190. </listitem></itemizedlist>
  191. <para>The user drags and drops objects to change their location and make copies
  192. of them. By dropping objects on services, the user gains assistance with
  193. appointment scheduling, editing, mail composition, printing, and other tasks.</para>
  194. <sect2 id="RDMAP.archo.div.6">
  195. <title>Session Management<indexterm><primary>desktop management</primary>
  196. <secondary>session management &lt;$startrange></secondary></indexterm><indexterm><primary>Session Manager &lt;$startrange></primary></indexterm></title>
  197. <para>The state of the desktop can be remembered. At a later time, and perhaps
  198. at a different X display station, the state of the desktop can be re-created.
  199. A session is a snapshot of the state of a user's desktop at a point in time.
  200. The Common Desktop Environment supports the following sessions from which the user
  201. can choose at login:</para>
  202. <itemizedlist remap="Bullet1"><listitem><para>Home session&mdash;A snapshot
  203. of the desktop state that reassembles in the same way each time it is started.
  204. </para>
  205. </listitem><listitem><para>Current session&mdash;The state of a desktop saved
  206. at logout time.</para>
  207. </listitem>
  208. <listitem>
  209. <para>Display-specific Home session&mdash;A Home session created by the user for a specific display;
  210. if it exists, it takes precedence over the generic Home session.
  211. </para>
  212. </listitem>
  213. <listitem>
  214. <para>Display-specific Current session&mdash;A Current session created by the user for a specific
  215. display; if it exists, it takes precedence over the generic Current session.
  216. </para>
  217. </listitem>
  218. <listitem>
  219. <para>Failsafe session&mdash;A minimal session that can be used to access the system if the normal
  220. <command>login</command> fails.
  221. </para>
  222. </listitem>
  223. </itemizedlist>
  224. <para>The Common Desktop Environment Session Manager coordinates these activities,
  225. but applications are responsible for saving their own state.</para>
  226. <para>The desktop supports the X11R6 X Session Management Protocol and
  227. the X11R5 Interclient Communication Conventions style
  228. of session management. This consists mostly of conventions for setting properties
  229. on top-level windows. The desktop extends this by providing a facility that
  230. allocates specific files into which applications can store their state. A
  231. command-line flag then points to this file when the application is restarted.
  232. Applications that maintain multiple top-level windows must save the state
  233. of each of them.</para>
  234. <para>A session is associated with a particular user. In the Common Desktop
  235. Environment, the Login Manager is responsible for initial user login. The<indexterm><primary>Login Manager</primary></indexterm>
  236. Login Manager is
  237. an alternative GUI for the<indexterm><primary>UNIX</primary></indexterm> UNIX
  238. login program. Normally, it checks the entered password with the user's registered
  239. password. However, vendors can provide authentication schemes tuned to their
  240. platform.</para>
  241. <para>The Login Manager is network-aware. When faced with an X display that
  242. is normally served by host A, the user can log into the user's desktop by
  243. running a session from host B that has full access to the user's normal set
  244. of files and services on host B. This is possible by Login Manager acting
  245. as the desktop's<indexterm><primary>X11 Display Manager (XDM)</primary>
  246. </indexterm> X11 Display Manager (XDM). The XDM Control Protocol (XDMCP) is
  247. used between X11 window servers and XDMs on the network. The Login Manager
  248. displays its login window or host chooser window on any X11 server requesting
  249. either XDM service. This makes the Common Desktop Environment a good match
  250. for use with XDMCP-aware X terminals.</para>
  251. <para>For connections to the X server, the desktop uses the X magic cookie
  252. scheme to control access. If a user on some host machine can read a certain
  253. file within a session owner's home directory, then access to the X server
  254. is granted. An alternative to this per-user authorization is per-host authorization.
  255. This is useful for installations supporting pre-X11R4 clients, which will
  256. be unable to connect to X servers using the<indexterm><primary>X magic
  257. cookie scheme</primary></indexterm> X magic cookie scheme.</para>
  258. <para>X resource files are handled in the context of Common Desktop Environment
  259. sessions as follows: a set of Common Desktop Environment default resources
  260. is merged with a host version of this file, followed by the user's <filename>$HOME/.Xdefaults</filename> file, followed by a session-specific file of resources
  261. that have changed through user interaction with the Style Manager. The result
  262. is stored in the <filename>RESOURCE_MANAGER</filename> property of the root
  263. window. To enable fine- grain customization, the C preprocessor is run on
  264. resource files.<literal><indexterm><primary>desktop management</primary><secondary>session management &lt;$endrange></secondary></indexterm><indexterm><primary>Session Manager &lt;$endrange></primary></indexterm></literal>
  265. </para>
  266. </sect2>
  267. <sect2 id="RDMAP.archo.div.7">
  268. <title>Application Management<indexterm><primary>desktop management</primary>
  269. <secondary>application management &lt;$startrange></secondary></indexterm></title>
  270. <para>One of the obstacles preventing end users from taking full advantage
  271. of the network environment is the difficulty of accessing remote applications.
  272. The Common Desktop Environment provides conventions for:</para>
  273. <itemizedlist remap="Bullet1"><listitem><para>Installation of applications
  274. so that they can be run remotely</para>
  275. </listitem><listitem><para>User navigation of available applications</para>
  276. </listitem><listitem><para>Execution of remote applications</para>
  277. </listitem></itemizedlist>
  278. <para>The user can browse the collection of available applications with a
  279. GUI tool called Application Manager. Applications can be dragged onto the
  280. desktop for easier access. Even remote applications are started by a simple
  281. double-click, hiding the network location of a running application. The user
  282. is not aware of any distinction between local and remote applications.</para>
  283. <para>This network transparency is accomplished by installing applications
  284. on network hosts designated as <emphasis><indexterm><primary>application
  285. servers</primary></indexterm>application servers</emphasis>. The parts of
  286. the installation relevant to the desktop require placing certain files in
  287. conventional places in the application's installation hierarchy. The application
  288. server maintains a list of applications that it is serving. Each host on
  289. the network maintains a list of the application servers on the network that
  290. it queries when a user logs into the desktop. This process is referred to
  291. as <emphasis>application gathering</emphasis>. It results in a dynamically-generated
  292. file hierarchy of actions arranged in folders. (Actions represent operations
  293. that end users can invoke, including starting applications.<indexterm><primary>actions</primary></indexterm>)</para>
  294. <para>The Common Desktop Environment<indexterm><primary>Application Manager</primary></indexterm> Application Manager provides a specialized view of
  295. the file system for the end user. Applications are arranged into groups and
  296. groups can be nested (such as in a directory hierarchy). Your application's
  297. installation script associates the application to a group. This association
  298. can be overridden by the system administrator as part of application server
  299. configuration. The set and arrangement of the actions shown through the Application
  300. Manager is a system resource that is typically shared between multiple users.
  301. Users cannot modify this view.</para>
  302. <para>The user can drag an icon from the<indexterm><primary>Application
  303. Manager</primary></indexterm> Application Manager onto the desktop, File Manager,
  304. Front Panel, and so on. The associated action remains valid as long as the
  305. gathered application that it refers to remains valid. Because actions represent
  306. a form of abstraction and indirection, the actual location of the application
  307. can change over time. This change remains transparent to the end user (this
  308. is explained further in <!--Original XRef content: '&xd2;Method Invocation&xd3;
  309. on page&numsp;18'--><xref role="SecTitleAndPageNum" linkend="RDMAP.archo.mkr.9">).
  310. The user double-clicks on an action icon to invoke it.<indexterm>
  311. <primary>desktop management</primary><secondary>application management &lt;$endrange></secondary></indexterm></para>
  312. </sect2>
  313. <sect2 id="RDMAP.archo.div.8">
  314. <title>Object Management</title>
  315. <para>T<literal><indexterm><primary>desktop management</primary><secondary>object management</secondary></indexterm><indexterm><primary>object management</primary></indexterm></literal>he Common Desktop Environment captures some
  316. object-oriented system attributes without being dependent upon a completely
  317. object-oriented infrastructure. The desktop provides graphic onscreen images
  318. that the user can pick up and move about, dropping them anywhere it makes
  319. semantic sense. These are viewed as <symbol role="Variable">objects</symbol>
  320. by the user. The<indexterm><primary>File Manager</primary></indexterm> File
  321. Manager promotes the object abstraction by providing a graphical way to browse
  322. and modify file and directory objects within the file system. It also provides
  323. a GUI to invoke actions. When the user selects a file, the actions that are
  324. defined for the selected type of file are presented to the user.</para>
  325. <para>Objects managed by desktop-based applications do not have to be file-based;
  326. in-memory buffers can represent desktop objects, too. The Common Desktop
  327. Environment Mailer handles<indexterm><primary>Multipurpose Internet Mail
  328. Extensions (MIME)</primary></indexterm> Multipurpose Internet Mail Extensions
  329. (MIME) messages by displaying attachments to a message as icons in a scrollable
  330. panel. These are objects that behave just like file-based objects during
  331. activities such as drag and drop. The user can drag between the File Manager
  332. and the<indexterm><primary>Mailer</primary></indexterm> Mailer. Applications
  333. that use drag and drop should maintain this important user model by supporting
  334. both file-based and buffer-based objects. The desktop drag-and-drop API and
  335. protocol make this straightforward.</para>
  336. </sect2>
  337. <sect2 id="RDMAP.archo.div.9">
  338. <title>Window Management</title>
  339. <para>The <literal><indexterm><primary>desktop management</primary><secondary>window management</secondary></indexterm><indexterm><primary>Window Manager &lt;$startrange></primary></indexterm></literal>Window
  340. Manager is essentially the Motif window manager with extensions to provide
  341. the<indexterm><primary>Front Panel</primary></indexterm> Front Panel GUI
  342. and workspace abstraction.</para>
  343. <para>The Front Panel can be thought of as a graphic version of the root window
  344. menu supported by many window managers. It can also be thought of as a tuned
  345. object manager in which common objects are readily available to the user.
  346. The Front Panel can show dynamic system information, and it enables the user
  347. to invoke actions and system functions. The user dynamically customizes the
  348. Front Panel by dragging and dropping action icons from the<indexterm><primary>Application Manager</primary></indexterm> Application Manager and<indexterm>
  349. <primary>File Manager</primary></indexterm> File Manager onto subpanels. Applications
  350. can come equipped with special configuration files that extend the Front
  351. Panel, possibly defining drop behavior, drop zone animation feedback, and
  352. so on. The user can optionally install these configuration files depending
  353. on customization preferences. <!--Original XRef content: 'Figure&numsp;1&hyphen;2'--><xref
  354. role="CodeOrFigureOrTable" linkend="RDMAP.archo.mkr.6"> displays a typical
  355. desktop Front Panel.</para>
  356. <figure>
  357. <title id="RDMAP.archo.mkr.6">Typical Front Panel</title>
  358. <graphic id="RDMAP.archo.grph.1" entityref="RDMAP.archo.fig.2"></graphic>
  359. </figure>
  360. <para>Workspaces are abstractions supported by the Window Manager that can
  361. be thought of as virtual desktops. Application windows exist within one,
  362. some, or all available workspaces. The user usually determines which workspaces
  363. an application window exists in as part of the user's customization. You
  364. should rarely use the workspace API other than to explicitly designate in
  365. which workspace your application appears on session restart. In general,
  366. do not place your application within multiple workspaces, because this overrides
  367. the user's prerogative.<indexterm><primary>desktop management</primary><secondary>window management</secondary></indexterm><indexterm>
  368. <primary>Window Manager &lt;$endrange></primary></indexterm></para>
  369. </sect2>
  370. <sect2 id="RDMAP.archo.div.10">
  371. <title>Style Management</title>
  372. <para>The <literal><indexterm><primary>desktop management</primary><secondary>style management</secondary></indexterm><indexterm><primary>Style Manager &lt;$startrange></primary></indexterm></literal>Style
  373. Manager enables users to customize their desktop using a GUI. Users are shielded
  374. from advanced concepts, such as X resources, for most common customization
  375. options. Style Manager provides controls for desktop-wide properties that
  376. adjust backdrops, keyboard settings, mouse settings, screen saver options,
  377. window management, and session management. These properties either do not
  378. affect applications directly or indirectly affect them through the X server
  379. or window manager.</para>
  380. <para>You, as an application developer, are more directly influenced by font
  381. choices, color choices, and input device mappings. The Motif toolkit and
  382. the Common Desktop Environment handle many of these settings transparently
  383. for widgets. However, your application will appear more integrated with the
  384. rest of the desktop if it responds to user font and color preferences. Applications
  385. that directly interact with the mouse will feel more integrated with the
  386. rest of the desktop if they are consistent with other applications; for example,
  387. by using the same mouse button double-click minimum interval value ( <command>multiClickTime</command> resource).</para>
  388. <para>To accommodate differences between platform vendor's display technology
  389. and available font sets, the Common Desktop Environment defines font aliases
  390. that are indirect names to actual font names. Use these aliases in the same
  391. way as the rest of desktop uses them.</para>
  392. <para>The Style Manager provides the user with color selection options to
  393. adjust the desktop color scheme. This color information is private to the
  394. Common Desktop Environment. Applications doing widget subclassing can indirectly
  395. access some of the color scheme by looking at inherited background pixel
  396. values. A call to <computeroutput>XmGetColors()</computeroutput> generates
  397. 3-D shadow colors.</para>
  398. <para>The Common Desktop Environment does not dictate color usage for static
  399. colors, such as those used within icons. For these situations, however, your
  400. application should attempt to use the colors offered by the Common Desktop
  401. Environment Icon Editor, to enhance color sharing.<indexterm>
  402. <primary>desktop management</primary><secondary>style management</secondary>
  403. </indexterm><indexterm><primary>Style Manager &lt;$endrange></primary></indexterm></para>
  404. </sect2>
  405. </sect1>
  406. <sect1 id="RDMAP.archo.div.11">
  407. <title id="RDMAP.archo.mkr.7">Motif GUI Engine</title>
  408. <para>Think of the Motif toolkit as the GUI engine of the desktop. This section
  409. discusses Common Desktop Environment Motif, Common Desktop Environment widgets,
  410. and alternative modes of Motif programming.</para>
  411. <sect2 id="RDMAP.archo.div.12">
  412. <title>Common Desktop Environment Motif Toolkit</title>
  413. <para>The<indexterm><primary>graphical user interface engine</primary><secondary>Common Desktop Environment Motif Toolkit</secondary></indexterm><indexterm>
  414. <primary>Common Desktop Environment Motif &lt;$startrange></primary></indexterm> Common Desktop Environment Motif
  415. toolkit is Motif 1.2.3 with bug fixes, enhancements, and some new features.
  416. You must explicitly set resources to enable the new features. Functional
  417. additions include file selection box GUI modifications, different default
  418. settings of existing resources (primarily to lighten up the default border
  419. widths), color management enhancements, internationalization of error messages,
  420. and minor usability fixes (some of which have the effect of easing migration
  421. of<indexterm><primary>OPEN LOOK</primary></indexterm> OPEN LOOK users to
  422. the Common Desktop Environment).</para>
  423. <para>Common Desktop Environment Motif and<indexterm><primary>Motif 2.0</primary></indexterm> Motif 2.0 are also highly compatible. Most functions
  424. put into Common Desktop Environment Motif have been introduced into Motif
  425. 2.0. As a result, developers have compiled their applications with Common
  426. Desktop Environment Motif, relinked to Motif 2.0, and ran the applications
  427. successfully. Widget subclassing that has not followed Motif 1.2 subclassing
  428. guidelines designed to shield programs from widget size changes are likely
  429. to fail.</para>
  430. <para>A drag-and-drop convenience layer has been added on top of the Motif
  431. 1.2 drag-and-drop API. In addition, the Common Desktop Environment uses the
  432. Motif 1.2 preregister drag feedback protocol. A drop site drag manager process
  433. keeps track of visible drop zones on the desktop. This data is used by a
  434. drag source client process to manage drag feedback interaction. Limited drag
  435. time validation of drop zones is followed by full validation at drop time,
  436. with <emphasis>snap- back-to-source</emphasis> animation if the drop fails.
  437. </para>
  438. <para>Common Desktop Environment Motif includes a GUI style guide and certification
  439. checklist that has substantially expanded on the Motif 1.2 style guide. Additions
  440. affect the input models, window management, and GUI design principles.<indexterm>
  441. <primary>graphical user interface engine</primary><secondary>Common Desktop
  442. Environment Motif Toolkit</secondary></indexterm><indexterm><primary>Common
  443. Desktop Environment Motif &lt;$endrange></primary></indexterm></para>
  444. </sect2>
  445. <sect2 id="RDMAP.archo.div.13">
  446. <title>Common Desktop Environment Motif Widgets</title>
  447. <para><indexterm><primary>graphical user interface engine</primary><secondary>Common Desktop Environment Motif widgets</secondary></indexterm><indexterm>
  448. <primary>Common Desktop Environment widgets</primary></indexterm>Common Desktop
  449. Environment Motif provides two types of widgets that are not available in
  450. Motif 1.2.3:</para>
  451. <itemizedlist remap="Bullet1"><listitem><para>Low-level control widgets:
  452. </para>
  453. <itemizedlist remap="Bullet2"><listitem><para>SpinBox&mdash;A text field and
  454. arrow button widget</para>
  455. </listitem><listitem><para>ComboBox&mdash;A text field and list box widget
  456. </para>
  457. </listitem><listitem><para>MenuButton&mdash;A menu that doesn't need to be
  458. in a row column widget</para>
  459. </listitem></itemizedlist>
  460. <para>These were added primarily to help you port applications from a Microsoft&reg;
  461. Windows or OPEN LOOK environment. The SpinBox and ComboBox widgets have equivalents
  462. in Motif 2.0.</para>
  463. </listitem><listitem><para>Rich and full-featured widgets:</para>
  464. <itemizedlist remap="Bullet2"><listitem><para>Terminal Emulator widget&mdash;Useful
  465. for applications designed to mix the best of a command-line user interface
  466. with a GUI</para>
  467. </listitem><listitem><para>Editor widget&mdash;Available for embedding a more
  468. full-featured plain text editor than that available from the Motif Text widget
  469. </para>
  470. </listitem><listitem><para>Help widgets&mdash;Handle navigation and interaction
  471. with application help volumes</para>
  472. <para>Help is delivered with an application in the form of<indexterm><primary>Semantic Description Language (SDL)</primary></indexterm> Semantic Description
  473. Language (SDL) files that have been compiled from <emphasis><indexterm><primary>HelpTag</primary></indexterm>HelpTag</emphasis>, a form of<indexterm><primary>Standard Generalized Markup Language (SGML)</primary></indexterm> Standard
  474. Generalized Markup Language (SGML) files. The Help system features mixed
  475. text and graphics, hyper links, dynamic reformatting of text, and structured
  476. navigation capabilities.</para>
  477. </listitem></itemizedlist>
  478. </listitem></itemizedlist>
  479. </sect2>
  480. <sect2 id="RDMAP.archo.div.14">
  481. <title>GUI Shell</title>
  482. <para>The<indexterm><primary>graphical user interface engine</primary><secondary>Desktop KornShell</secondary></indexterm><indexterm><primary>Desktop KornShell
  483. (dtksh) &lt;$startrange></primary>
  484. </indexterm> Common Desktop Environment includes Desktop KornShell, an interpreted
  485. scripting language alternative to C programming of the Motif toolkit. Desktop
  486. KornShell includes selected frequently-used Common Desktop Environment, Xt,
  487. and Xlib APIs. You must use a compiled language to access the full power
  488. of the environment. However, you can write Desktop KornShell scripts that
  489. participate in desktop integration activities such as drag and drop, session
  490. management, and ToolTalk messaging.</para>
  491. <para>If you are comfortable with shell programming, you may prefer to use
  492. Desktop KornShell for modest programming tasks because it is:</para>
  493. <itemizedlist remap="Bullet1"><listitem><para>Well suited to system-administration-type
  494. applications because the shell commands intermix easily with GUI control.
  495. </para>
  496. </listitem><listitem><para>Good for putting a GUI control program on top of
  497. character-based applications because the shell environment handles character-based
  498. interaction in a natural way.</para>
  499. </listitem><listitem><para>A good way to deliver instruction-set-independent
  500. programs to a heterogeneous collection of hosts. For example, use the Common
  501. Desktop Environment<indexterm><primary>Mailer</primary></indexterm> Mailer
  502. to attach a script to a message that the recipient simply double-clicks to
  503. invoke.<indexterm><primary>graphical user interface engine</primary><secondary>Desktop KornShell</secondary></indexterm><indexterm><primary>Desktop KornShell
  504. (dtksh) &lt;$endrange></primary>
  505. </indexterm></para>
  506. </listitem></itemizedlist>
  507. </sect2>
  508. <sect2 id="RDMAP.archo.div.15">
  509. <title>GUI Construction</title>
  510. <para>The<indexterm><primary>graphical user interface engine</primary><secondary>Application Builder</secondary></indexterm><indexterm><primary>Application
  511. Builder &lt;$startrange></primary>
  512. </indexterm> easiest way to produce a Common Desktop Environment application,
  513. and perhaps the fastest, is to do almost no Motif toolkit programming at
  514. all. Use the Common Desktop Environment Application Builder, also known as
  515. App Builder, to construct the GUI control portion of your application. App
  516. Builder focuses on making default widget behavior easy to access. It does
  517. this by hiding many of the more esoteric resources that are available on
  518. most widgets. App Builder also makes it as easy to incorporate desktop integration
  519. infrastructure into your application, including drag and drop, session management,
  520. and ToolTalk messaging.</para>
  521. <para>App Builder maintains the user interface state in<indexterm><primary>Builder Interface Language (BIL)</primary></indexterm> Builder Interface Language
  522. (BIL) files. A code generator takes the BIL files and produces Motif toolkit
  523. code. App Builder can also generate<indexterm><primary>User Interface Language
  524. (UIL)</primary></indexterm> User Interface Language (UIL) files.</para>
  525. <para>As you make changes to your application's user interface, App Builder
  526. merges your custom code with the code it generates. Generated code is a good
  527. source of example code, even if you do not using App Builder to maintain
  528. your application's GUI state.</para>
  529. <para>In addition, nonprogrammers can use App Builder to produce an application
  530. GUI prototype. The prototype can roll forward to programmers for the production
  531. phase of development.<indexterm><primary>graphical user interface engine</primary><secondary>Application Builder</secondary></indexterm><indexterm>
  532. <primary>Application Builder &lt;$endrange></primary></indexterm></para>
  533. </sect2>
  534. </sect1>
  535. <sect1 id="RDMAP.archo.div.16">
  536. <title id="RDMAP.archo.mkr.8">Integration Technologies</title>
  537. <para>Common Desktop Environment technologies discussed thus far have been
  538. directly involved with putting a GUI onto the screen. The integration technologies
  539. described in this section are underlying infrastructure, not GUI providers.
  540. </para>
  541. <sect2 id="RDMAP.archo.div.17">
  542. <title>Process Execution<indexterm><primary>integration technologies</primary>
  543. <secondary>process execution</secondary></indexterm><indexterm><primary>process
  544. execution</primary></indexterm></title>
  545. <para>To provide a network-leveraging environment, the Common Desktop Environment
  546. provides the<indexterm><primary>Sub Process Control (SPC)</primary></indexterm> Sub
  547. Process Control (SPC) mechanism to start, manage, and collect results from
  548. applications running on a remote host. A remote host installs an SPC daemon
  549. that serves as the remote end of a socket- based control mechanism. This control
  550. mechanism tries to maintain the illusion that the remote process is a local <symbol role="Variable">child</symbol> to the <symbol role="Variable">parent</symbol>
  551. process. Authentication of the user that owns the parent process is based
  552. upon the ability of the parent process to write a <command>setuid</command>
  553. file to the user's home directory <emphasis>and</emphasis> the ability of
  554. the child process to read the result.</para>
  555. <para>The SPC API and associated control programs are private to the Common
  556. Desktop Environment. Actions represent the public API for running applications
  557. remotely.</para>
  558. </sect2>
  559. <sect2 id="RDMAP.archo.div.18">
  560. <title>Application Messaging<indexterm><primary>integration technologies</primary>
  561. <secondary>application messaging</secondary></indexterm><indexterm><primary>ToolTalk Messaging Service &lt;$startrange></primary></indexterm></title>
  562. <para>The ToolTalk Messaging Service is the application messaging mechanism
  563. for the Common Desktop Environment. Application messaging addresses inter-
  564. application control and cooperation for applications working on behalf of
  565. a single user. The ToolTalk session daemon is a local message-routing process
  566. whose control scope typically corresponds to that of the X server. This means
  567. that clients within a session issue requests, the ToolTalk session manager
  568. finds or starts some client within a session that is able to handle the request,
  569. and the ToolTalk session daemon tracks the request until completion.</para>
  570. <para>The desktop provides two standard ToolTalk protocols known as <emphasis>messages sets</emphasis>. A message set contains a number of messages that
  571. can be exchanged between a sender and a handler process. These messages are
  572. grouped together because they describe related requests and notices. The
  573. sender and recipient may be within the same process or on different hosts.
  574. Message sets have associated utility functions that allow you to concentrate
  575. on the semantics of the protocol without getting involved in the low-level
  576. messaging details. Some of the message set functions enable you to defer
  577. to default behavior with almost no work on your part.</para>
  578. <sect3 id="RDMAP.archo.div.19">
  579. <title>Desktop Message Set</title>
  580. <para>The Desktop Message Set encompasses three areas. The first is windowing
  581. behavior. The second involves file access and short term file life cycle
  582. control. The third is specific to applications that have extension languages
  583. and is not generic enough to warrant library support.</para>
  584. </sect3>
  585. <sect3 id="RDMAP.archo.div.20">
  586. <title>Media Message Set</title>
  587. <para>The Media Message Set allows an application to be a container for arbitrary
  588. media, or to be a media player/editor that can be driven from such a container.
  589. The Media message interface allows a container application (such as<indexterm>
  590. <primary>Mailer</primary></indexterm> Mailer or<indexterm><primary>File Manager</primary></indexterm> File Manager) to compose, display, edit, or print a
  591. file or buffer of an arbitrary media type, without understanding anything
  592. about the format of that media type. ToolTalk routes a container's requests
  593. to the user's preferred tool for the given media type and operation. This
  594. includes routing the request to an already-running instance of the tool if
  595. that instance can best handle the request.<indexterm>
  596. <primary>integration technologies</primary><secondary>application messaging</secondary></indexterm><indexterm><primary>ToolTalk Messaging Service &lt;$endrange></primary></indexterm></para>
  597. </sect3>
  598. </sect2>
  599. <sect2 id="RDMAP.archo.div.21">
  600. <title>Data Typing<indexterm><primary>data typing &lt;$startrange></primary></indexterm></title>
  601. <para>The Common Desktop Environment provides a uniform user interface to
  602. the objects contained on the desktop. To do this, the desktop has a mechanism,
  603. called data typing, to determine an object's type using a set of criteria.
  604. The criteria includes properties potentially shared by file-based and buffer-based
  605. objects such as name pattern and content pattern. Other criteria are exclusive
  606. to files, and include path-name pattern and file permissions. Associated
  607. with every desktop type is an extensible set of attributes, including icon
  608. name, name template pattern, list of actions suitable for presentation to
  609. a user, equivalent type names for other type spaces (for example, MIME type),
  610. and a textual description of this type. The <emphasis>actions and data-types
  611. database</emphasis> stores data criteria and data attributes.</para>
  612. <para>The Common Desktop Environment defines, and platform vendors supply,
  613. a set of desktop type definitions. Your application should augment the database
  614. with both proprietary and public data types at application installation time.
  615. </para>
  616. <para>Information is extracted from the actions and data-types through a Common
  617. Desktop Environment library API. The data typing API matches an object's
  618. properties with the database type criteria to determine the object's desktop
  619. type. The matching algorithm uses a set of precedence rules to resolve conflicts.
  620. </para>
  621. <para>The Common Desktop Environment type space is defined by the X/Open
  622. Common Desktop Environment standard and exists primarily to support desktop-oriented
  623. activities such as icon display and action association. The MIME type space
  624. is defined by the Internet Engineering Task Force and exists to deal with
  625. exchange of mail message parts. A ToolTalk media type space exists in order
  626. to match data with handlers, and is a subset of X selection target types
  627. defined by the X Consortium. Thus, to do a complete job of type definition,
  628. you have to define a Common Desktop Environment type, X selection target,
  629. and MIME type. For private Common Desktop Environment types, append the type
  630. name to an organization's name. This partitions the name space without need
  631. for centralized allocation of types. The Common Desktop Environment claims
  632. the <emphasis>Dt</emphasis> prefix, for <emphasis>Desktop</emphasis>.<indexterm>
  633. <primary>data typing &lt;$endrange></primary></indexterm></para>
  634. </sect2>
  635. <sect2 id="RDMAP.archo.div.22">
  636. <title id="RDMAP.archo.mkr.9">Method Invocation<indexterm><primary>actions &lt;$startrange></primary></indexterm></title>
  637. <para>A Common Desktop Environment type can be thought of as the class of
  638. a desktop object. Using this analogy, actions can be thought of as the<indexterm>
  639. <primary>methods, and actions</primary></indexterm> methods available on instances
  640. of a class. Thus, the actions attribute in a type attribute list describes
  641. operations that are available for the type. A single action in the actions
  642. and data-types database has multiple parts, many of which are optional. These
  643. parts include:</para>
  644. <itemizedlist remap="Bullet1"><listitem><para>A description of how to invoke
  645. the operation: for example, through ToolTalk, through an execution string
  646. passed to the SPC mechanism, from within a terminal emulator, and so on.
  647. </para>
  648. </listitem><listitem><para>A description of the type of arguments associated
  649. with the action. The type of the desktop objects (files and buffers) that
  650. it accepts is defined by the actions and data-types database. Actions are
  651. polymorphic with respect to data types. For example, the Open action invokes
  652. a text editor for arguments that are text files and a graphics editor for
  653. arguments that are graphics files.</para>
  654. </listitem><listitem><para>A description of the number of arguments, if any,
  655. associated with the action.</para>
  656. </listitem><listitem><para>An optional indication as to where to carry out
  657. the operation: the local machine, a particular remote machine, the machine
  658. on which the executable resides, and so on. In addition, these execution
  659. locations can be included in a list so that if a host is not available then
  660. the next host on the list is tried. This provides a measure of redundancy
  661. that can be used to increase the likelihood of application launch, even in
  662. the face of remote host unavailability. Thus, actions provide network distribution
  663. guidance, implemented either through built-in ToolTalk facilities or through
  664. the SPC mechanism directly.</para>
  665. </listitem><listitem><para>An optional label, help string, and icon that the
  666. user sees when interacting with the action's GUI. These are hints to an application
  667. about how to represent the action to the user. These hints may be ignored,
  668. as the Front Panel does by ignoring the icon if the Front Panel configuration
  669. file supplies an alternative icon.</para>
  670. </listitem></itemizedlist>
  671. <para>The collection of actions available to the user is assembled at the
  672. same time as the system is collecting type database information. In fact,
  673. related action and type information usually reside together in the same file.
  674. Desktop-defined, system-administrator-defined (host-specific), and user-defined
  675. files are assembled in order into a single (actions and data-types) database,
  676. with later definitions taking precedence. This ordering of search path precedence
  677. and traversal is used elsewhere by the desktop for such things as help volume
  678. and icon file searches.</para>
  679. <para>The actions and data-types<indexterm><primary>database</primary></indexterm> database
  680. and the File Manager use action files to instantiate actions as file system
  681. objects that can be viewed, invoked, moved, copied, and so on. The database
  682. contains references to an action's implementation (for example &ldquo;run <filename>/usr/bin/app</filename> on machine <filename>net_app_svr</filename>&rdquo;).
  683. However, a representation is needed of an action as an object that the user
  684. can directly manipulate. This is achieved by using an object's name, which
  685. identifies it as an action to any object manager that is looking for actions.
  686. Thus, if there is an executable file named <command>Dtstyle</command> and
  687. an action named Dtstyle, the File Manager will interpret that file, regardless
  688. of its content, as the Dtstyle action reference. In addition, the File Manager
  689. uses the action's label as the name that the user sees for this file. Action
  690. labels are localizable, whereas action names are programmatic entities that
  691. should not be localized.</para>
  692. <para>The good feature about using files simply as pointers into the actions
  693. and data- types database is that the underlying implementation can evolve
  694. without the user having to do anything. However, one user's actions and data-types
  695. database may not match another user's actions and data-types database. Thus,
  696. a user cannot exchange an action reference, for example as a mail message
  697. attachment, and expect another person to have a comparable definition for
  698. that action. Exchanging a Desktop KornShell script is the best solution to
  699. this problem.</para>
  700. <para>Actions are useful because they integrate both legacy command-line
  701. applications and ToolTalk applications into the desktop as polymorphic, distributed
  702. operations on desktop objects.<literal><indexterm><primary>actions &lt;$endrange></primary>
  703. </indexterm></literal></para>
  704. </sect2>
  705. </sect1>
  706. <sect1 id="RDMAP.archo.div.23">
  707. <title id="RDMAP.archo.mkr.10">Information Technologies</title>
  708. <para>CDE information technologies comprise
  709. </para>
  710. <itemizedlist>
  711. <listitem>
  712. <para>The Help system, which provides help on the CDE user interface, and potentially,
  713. the help you provide for your CDE applications.
  714. </para>
  715. </listitem>
  716. <listitem>
  717. <para>The Information Manager, an on-line documentation access facility
  718. that provides access to CDE documentation, and potentially, your application-specific documentation.
  719. </para>
  720. </listitem>
  721. </itemizedlist>
  722. <sect2 id="RDMAP.archo.div.24">
  723. <title id="RDMAP.archo.mkr.11">Help System</title>
  724. <indexterm><primary>help</primary><secondary>general information</secondary></indexterm>
  725. <para>The Help system provides a complete set of authoring and programming
  726. tools to develop on-line help for CDE applications:
  727. </para>
  728. <itemizedlist>
  729. <listitem>
  730. <para>It enables authors to include formatted text, graphics, hyperlinks, and communication
  731. with the application.
  732. </para>
  733. </listitem>
  734. <listitem>
  735. <para>It provides programmers with a toolkit for integrating on-line
  736. help into an application. The toolkit includes specialized Help dialogs and supporting
  737. routines that enable users to display, navigate, search, and print on-line help.
  738. </para>
  739. </listitem>
  740. </itemizedlist>
  741. </sect2>
  742. <sect2 id="RDMAP.archo.div.25">
  743. <title id="RDMAP.archo.mkr.12">Information Manager</title>
  744. <indexterm><primary>information manager</primary><secondary>general information</secondary></indexterm>
  745. <para>The Information Manager provides on-line access to documentation organized into hierarchies
  746. of information libraries, bookcases, books, book sections, and smaller divisions of documentation.
  747. All CDE documentation is shipped with the Information Manager.
  748. </para>
  749. <para>To integrate application-specific documentation with the Information Manager,
  750. a CDE application calls a small API (<Symbol>DtInfo</Symbol>).
  751. Alternatively, programmers may
  752. develop their own browsers using the DtInfo Database Engine API (<Symbol>DtMmdb</Symbol>).
  753. </para>
  754. </sect2>
  755. </sect1>
  756. </chapter>
  757. <!--fickle 1.14 mif-to-docbook 1.7 01/02/96 04:30:53-->