1 /* $XConsortium: Sm.h /main/15 1996/09/14 14:48:18 drk $ */
2 /*************************************<+>*************************************
3 *****************************************************************************
7 ** Project: HP DT Session Manager (dtsession)
11 ** Contains all general, global variables used by the session manager
15 *****************************************************************************
16 *************************************<+>*************************************/
18 * (c) Copyright 1996 Digital Equipment Corporation.
19 * (c) Copyright 1990, 1993, 1994, 1996 Hewlett-Packard Company
20 * (c) Copyright 1993, 1994, 1996 International Business Machines Corp.
21 * (c) Copyright 1993, 1994, 1996 Sun Microsystems, Inc.
22 * (c) Copyright 1993, 1994, 1996 Novell, Inc.
23 * (c) Copyright 1996 FUJITSU LIMITED.
24 * (c) Copyright 1996 Hitachi.
35 #include <sys/param.h>
38 #include <Dt/UserMsg.h>
46 #define HELPVIEW_COMMAND_LINE CDE_INSTALLATION_TOP "/bin/dthelpview -helpVolume Dtintro"
50 * Wrappers for system calls
52 #define SM_MALLOC(SIZE) XtMalloc(SIZE)
53 #define SM_REALLOC(PTR, SIZE) XtRealloc(PTR, SIZE)
54 #define SM_FREE(PTR) XtFree(PTR)
55 #define SM_EXIT(STATUS) SmExit(STATUS)
58 #define SM_SETEUID(EUID) setresuid(-1, EUID, -1)
59 #define SM_SETESUID(UID) setresuid(-1, UID, UID)
62 #define SM_SETEUID(EUID) seteuid(EUID)
63 #define SM_SETESUID(UID) setreuid(UID, UID)
65 #define SM_SETEUID(EUID) seteuid(EUID)
66 #define SM_SETESUID(UID) (setuid(UID), seteuid(UID))
71 * Types of states the session manager can be in
77 * session types .. home or current or default
79 #define DEFAULT_SESSION 0
80 #define HOME_SESSION 1
81 #define CURRENT_SESSION 2
84 * The lower bounds for each resolution of display - caculated
85 * as Y Resolution - which is pixels/meter
87 #define HIGH_RES_Y_RES 3583
88 #define MED_RES_Y_RES 3150
89 #define LOW_RES_Y_RES 1
92 * Maximum number of screens saved during a session
94 #define MAX_SCREENS_SAVED 10
96 /* contention management definitions */
97 #define SM_CM_SYSTEM (1L << 0)
98 #define SM_CM_HANDSHAKE (1L << 1)
100 #define SM_CM_ALL (SM_CM_SYSTEM | SM_CM_HANDSHAKE)
103 #define SM_CM_DEFAULT SM_CM_NONE
105 #ifndef NO_MESSAGE_CATALOG
107 # define _CLIENT_CAT_NAME "dtsession.cat"
108 # else /* __ultrix */
109 # define _CLIENT_CAT_NAME "dtsession"
110 # endif /* __ultrix */
111 extern char *_DtGetMessage(char *filename, int set, int n, char *s);
112 # define GETMESSAGE(set, number, string)\
113 (_DtGetMessage(_CLIENT_CAT_NAME, set, number, string))
115 # define GETMESSAGE(set, number, string)\
119 typedef int (*IOErrorHandlerProc)(
128 * Pointer to hold information returned by session settings
132 int accelNum; /* Pointer Control Information */
136 int timeout; /*Screen Saver Information */
141 char *fontDirs; /*Font path Information */
143 XKeyboardState kbdState; /* Keyboard Control Information */
146 char *buttonMap; /*Button Mapping Information */
148 int numKeyCode; /*Key Mapping information */
152 int maxKeyPerMod; /*Modifier Mapping Information */
155 Boolean didQuery; /*Was this information queried for*/
159 } SessionSettings, *SessionSettingsPtr;
162 * Structure to save all of the session manager resources
167 Boolean querySettings;
171 char *sessionVersion;
172 int displayResolution;
175 int waitClientTimeout;
178 Boolean saveFontPath;
179 int saveYourselfTimeout;
180 Boolean mergeXdefaults;
181 int numSessionsBackedup;
182 char *ignoreEnvironment;
183 } SessionResources, *SessionResourcesPtr;
186 * Screen saver resources.
195 } SaverResources, *SaverResourcesPtr;
198 * Structure to hold global state settings
203 Boolean pointerChange;
204 Boolean pointerMapChange;
207 Boolean keyboardChange;
208 Boolean screenSavChange;
215 Boolean pointerChange;
216 Boolean keyboardChange;
217 Boolean screenSavChange;
218 Boolean dClickChange;
220 Boolean preeditChange;
225 * Structure to hold general information needed to be shared by
226 * different modules in the session manager
232 Window topLevelWindow;
234 char *programName; /* main()'s argv[0] */
240 unsigned long blackPixel;
241 unsigned long whitePixel;
242 unsigned long foregroundPix;
243 unsigned long backgroundPix;
244 Cursor lockCursor, padlockCursor, blankCursor;
246 char resourcePath[MAXPATHLEN + 1];
247 char settingPath[MAXPATHLEN + 1];
248 char clientPath[MAXPATHLEN + 1];
249 char fontPath[MAXPATHLEN + 1];
250 char exitPath[MAXPATHLEN + 1];
251 char etcPath[MAXPATHLEN + 1]; /*
252 * Used for sessionEtc on
255 * current.old on the way
259 char *restoreSession;
262 Tt_pattern requests2Handle;
263 Tt_pattern events2Watch;
265 Boolean lockOnTimeoutStatus;
266 gid_t runningGID, conMgmtGID;
267 uid_t runningUID, unLockUID;
268 Boolean secureSystem;
269 Boolean screenSaver; /* obsolete */
270 Boolean screenSaverRunning; /* obsolete */
271 Boolean userSetWaitWmTimeout;
272 int savedWaitWmTimeout;
274 * These strings are for our copy once we
275 * fetch resources with XtGetApplicationResources.
276 * These string returned can be overwritten anytime
277 * another Xrm call is made as in MergeCoeResources (libXv3.0)
278 * or in our own calls to XrmGetFileDatabase.
282 * This set is the for smRes
286 char *sessionVersion;
290 * This set is the for smSettings
292 char *fontDirs; /*Font path Information */
294 char *buttonMap; /*Button Mapping Information */
298 char *saverList; /* Current screen saver list */
299 void *saverListParse; /* Current parsed screen saver list */
301 Boolean coverScreen; /* full screen cover */
302 char *SmNextension; /* screen saver extension name */
303 char *SmCextension; /* screen saver extension class */
304 char *extensionSpec; /* sprintf specification */
305 #if defined (USE_X11SSEXT)
306 int ssEventType; /* screen saver event type */
307 #endif /* USE_X11SSEXT */
308 struct sigaction childvec;
309 struct sigaction defvec;
311 Boolean homeSave; /* True if the save is via the Style
312 Manager's Save Home Session button. */
313 Boolean displaySpecific; /* Is Ture if the session is for a
314 specific display, otherwise False */
315 Boolean loggingOut; /* Is True if the current save is for
316 a logout; False otherwise. */
323 extern char *_dtsessionMG();
326 * Files that the session manager saves sessions to and restores sessions
327 * from. allocated in SmStrDef.c
329 extern char SM_CLIENT_FILE[];
330 extern char SM_CLIENT_FILE2[];
331 extern char SM_RESOURCE_FILE[];
332 extern char SM_FONT_FILE[];
333 extern char SM_LOW_RES_EXT[];
334 extern char SM_MED_RES_EXT[];
335 extern char SM_HIGH_RES_EXT[];
336 extern char SM_SETTING_FILE[];
337 extern char SM_CONVERSION_FILE[];
338 extern char SM_SYSTEM_CLIENT_FILE[];
339 extern char SM_SYSTEM_RESOURCE_FILE[];
340 extern char SM_SYSTEM_FONT_FILE[];
342 extern char SM_SYSTEM_PATH[];
343 extern char SM_SECURE_PATH[];
345 extern char SM_CURRENT_DIRECTORY[];
346 extern char SM_CURRENT_FONT_DIRECTORY[];
347 extern char SM_HOME_DIRECTORY[];
348 extern char SM_HOME_FONT_DIRECTORY[];
349 extern char SM_OLD_EXTENSION[];
350 extern char SM_SYSTEM_DIRECTORY[];
351 extern char smEtcFile[];
352 extern char smExitFile[];
355 * Session manager name and class used to get resources allocated in SmStrDef.c
357 extern char SM_RESOURCE_CLASS[];
358 extern char SM_RESOURCE_NAME[];
359 extern char SM_HELP_VOLUME[];
363 * Name of the lock the session manager has to make sure it's the only
364 * session manager running
366 extern char SM_RUNNING_LOCK[];
369 * Location and name of the screen saver program
371 extern char SM_SCREEN_SAVER_LOC[];
372 extern char SM_SCREEN_SAVER_NAME[];
375 * Global resource settings. These settings determine program behavior
376 * wrt settings restoration, lock behavior, window manager startup etc
378 extern SessionResources smRes;
379 extern SaverResources smSaverRes;
380 extern SettingsSet smToSet;
381 extern SettingsCust smCust;
382 extern SessionSettings smSettings;
383 extern GeneralData smGD;