2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these libraries and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $XConsortium: Sm.h /main/15 1996/09/14 14:48:18 drk $ */
24 /*************************************<+>*************************************
25 *****************************************************************************
29 ** Project: HP DT Session Manager (dtsession)
33 ** Contains all general, global variables used by the session manager
37 *****************************************************************************
38 *************************************<+>*************************************/
40 * (c) Copyright 1996 Digital Equipment Corporation.
41 * (c) Copyright 1990, 1993, 1994, 1996 Hewlett-Packard Company
42 * (c) Copyright 1993, 1994, 1996 International Business Machines Corp.
43 * (c) Copyright 1993, 1994, 1996 Sun Microsystems, Inc.
44 * (c) Copyright 1993, 1994, 1996 Novell, Inc.
45 * (c) Copyright 1996 FUJITSU LIMITED.
46 * (c) Copyright 1996 Hitachi.
57 #include <sys/param.h>
60 #include <Dt/UserMsg.h>
65 # include <DtXinerama.h>
72 #define HELPVIEW_COMMAND_LINE CDE_INSTALLATION_TOP "/bin/dthelpview -helpVolume Dtintro"
76 * Wrappers for system calls
78 #define SM_MALLOC(SIZE) XtMalloc(SIZE)
79 #define SM_REALLOC(PTR, SIZE) XtRealloc(PTR, SIZE)
80 #define SM_FREE(PTR) XtFree(PTR)
81 #define SM_EXIT(STATUS) SmExit(STATUS)
84 #define SM_SETEUID(EUID) setresuid(-1, EUID, -1)
85 #define SM_SETESUID(UID) setresuid(-1, UID, UID)
88 #define SM_SETEUID(EUID) seteuid(EUID)
89 #define SM_SETESUID(UID) setreuid(UID, UID)
91 #define SM_SETEUID(EUID) seteuid(EUID)
92 #define SM_SETESUID(UID) (setuid(UID), seteuid(UID))
97 * Types of states the session manager can be in
103 * session types .. home or current or default
105 #define DEFAULT_SESSION 0
106 #define HOME_SESSION 1
107 #define CURRENT_SESSION 2
110 * The lower bounds for each resolution of display - caculated
111 * as Y Resolution - which is pixels/meter
113 #define HIGH_RES_Y_RES 3583
114 #define MED_RES_Y_RES 3150
115 #define LOW_RES_Y_RES 1
118 * Maximum number of screens saved during a session
120 #define MAX_SCREENS_SAVED 10
122 /* contention management definitions */
123 #define SM_CM_SYSTEM (1L << 0)
124 #define SM_CM_HANDSHAKE (1L << 1)
126 #define SM_CM_ALL (SM_CM_SYSTEM | SM_CM_HANDSHAKE)
129 #define SM_CM_DEFAULT SM_CM_NONE
131 #ifndef NO_MESSAGE_CATALOG
133 # define _CLIENT_CAT_NAME "dtsession.cat"
134 # else /* __ultrix */
135 # define _CLIENT_CAT_NAME "dtsession"
136 # endif /* __ultrix */
137 extern char *_DtGetMessage(char *filename, int set, int n, char *s);
138 # define GETMESSAGE(set, number, string)\
139 (_DtGetMessage(_CLIENT_CAT_NAME, set, number, string))
141 # define GETMESSAGE(set, number, string)\
145 typedef int (*IOErrorHandlerProc)(
154 * Pointer to hold information returned by session settings
158 int accelNum; /* Pointer Control Information */
162 int timeout; /*Screen Saver Information */
167 char *fontDirs; /*Font path Information */
169 XKeyboardState kbdState; /* Keyboard Control Information */
172 char *buttonMap; /*Button Mapping Information */
174 int numKeyCode; /*Key Mapping information */
178 int maxKeyPerMod; /*Modifier Mapping Information */
181 Boolean didQuery; /*Was this information queried for*/
185 } SessionSettings, *SessionSettingsPtr;
188 * Structure to save all of the session manager resources
193 Boolean querySettings;
197 char *sessionVersion;
198 int displayResolution;
201 int waitClientTimeout;
204 Boolean saveFontPath;
205 int saveYourselfTimeout;
206 Boolean mergeXdefaults;
207 int numSessionsBackedup;
208 char *ignoreEnvironment;
209 #if defined(USE_XINERAMA)
210 int xineramaPreferredScreen; /* prefered xinerama screen */
212 } SessionResources, *SessionResourcesPtr;
215 * Screen saver resources.
224 } SaverResources, *SaverResourcesPtr;
227 * Structure to hold global state settings
232 Boolean pointerChange;
233 Boolean pointerMapChange;
236 Boolean keyboardChange;
237 Boolean screenSavChange;
244 Boolean pointerChange;
245 Boolean keyboardChange;
246 Boolean screenSavChange;
247 Boolean dClickChange;
249 Boolean preeditChange;
254 * Structure to hold general information needed to be shared by
255 * different modules in the session manager
261 Window topLevelWindow;
263 char *programName; /* main()'s argv[0] */
269 unsigned long blackPixel;
270 unsigned long whitePixel;
271 unsigned long foregroundPix;
272 unsigned long backgroundPix;
273 Cursor lockCursor, padlockCursor, blankCursor;
275 char resourcePath[MAXPATHLEN + 1];
276 char settingPath[MAXPATHLEN + 1];
277 char clientPath[MAXPATHLEN + 1];
278 char fontPath[MAXPATHLEN + 1];
279 char exitPath[MAXPATHLEN + 1];
280 char etcPath[MAXPATHLEN + 1]; /*
281 * Used for sessionEtc on
284 * current.old on the way
288 char *restoreSession;
291 Tt_pattern requests2Handle;
292 Tt_pattern events2Watch;
294 Boolean lockOnTimeoutStatus;
295 gid_t runningGID, conMgmtGID;
296 uid_t runningUID, unLockUID;
297 Boolean secureSystem;
298 Boolean screenSaver; /* obsolete */
299 Boolean screenSaverRunning; /* obsolete */
300 Boolean userSetWaitWmTimeout;
301 int savedWaitWmTimeout;
303 * These strings are for our copy once we
304 * fetch resources with XtGetApplicationResources.
305 * These string returned can be overwritten anytime
306 * another Xrm call is made as in MergeCoeResources (libXv3.0)
307 * or in our own calls to XrmGetFileDatabase.
311 * This set is the for smRes
315 char *sessionVersion;
319 * This set is the for smSettings
321 char *fontDirs; /*Font path Information */
323 char *buttonMap; /*Button Mapping Information */
327 char *saverList; /* Current screen saver list */
328 void *saverListParse; /* Current parsed screen saver list */
330 Boolean coverScreen; /* full screen cover */
331 char *SmNextension; /* screen saver extension name */
332 char *SmCextension; /* screen saver extension class */
333 char *extensionSpec; /* sprintf specification */
334 #if defined (USE_X11SSEXT)
335 int ssEventType; /* screen saver event type */
336 #endif /* USE_X11SSEXT */
337 struct sigaction childvec;
338 struct sigaction defvec;
340 Boolean homeSave; /* True if the save is via the Style
341 Manager's Save Home Session button. */
342 Boolean displaySpecific; /* Is Ture if the session is for a
343 specific display, otherwise False */
344 Boolean loggingOut; /* Is True if the current save is for
345 a logout; False otherwise. */
347 #ifdef USE_XINERAMA /* JET - Xinerama. Schwiing! */
348 DtXineramaInfoPtr_t DtXineramaInfo;
351 Boolean ExitComplete; /* JET - don't exit before we are ready... */
359 extern char *_dtsessionMG();
362 * Files that the session manager saves sessions to and restores sessions
363 * from. allocated in SmStrDef.c
365 extern char SM_CLIENT_FILE[];
366 extern char SM_CLIENT_FILE2[];
367 extern char SM_RESOURCE_FILE[];
368 extern char SM_FONT_FILE[];
369 extern char SM_LOW_RES_EXT[];
370 extern char SM_MED_RES_EXT[];
371 extern char SM_HIGH_RES_EXT[];
372 extern char SM_SETTING_FILE[];
373 extern char SM_CONVERSION_FILE[];
374 extern char SM_SYSTEM_CLIENT_FILE[];
375 extern char SM_SYSTEM_RESOURCE_FILE[];
376 extern char SM_SYSTEM_FONT_FILE[];
378 extern char SM_SYSTEM_PATH[];
379 extern char SM_SECURE_PATH[];
381 extern char SM_CURRENT_DIRECTORY[];
382 extern char SM_CURRENT_FONT_DIRECTORY[];
383 extern char SM_HOME_DIRECTORY[];
384 extern char SM_HOME_FONT_DIRECTORY[];
385 extern char SM_OLD_EXTENSION[];
386 extern char SM_SYSTEM_DIRECTORY[];
387 extern char smEtcFile[];
388 extern char smExitFile[];
391 * Session manager name and class used to get resources allocated in SmStrDef.c
393 extern char SM_RESOURCE_CLASS[];
394 extern char SM_RESOURCE_NAME[];
395 extern char SM_HELP_VOLUME[];
399 * Name of the lock the session manager has to make sure it's the only
400 * session manager running
402 extern char SM_RUNNING_LOCK[];
405 * Location and name of the screen saver program
407 extern char SM_SCREEN_SAVER_LOC[];
408 extern char SM_SCREEN_SAVER_NAME[];
411 * Global resource settings. These settings determine program behavior
412 * wrt settings restoration, lock behavior, window manager startup etc
414 extern SessionResources smRes;
415 extern SaverResources smSaverRes;
416 extern SettingsSet smToSet;
417 extern SettingsCust smCust;
418 extern SessionSettings smSettings;
419 extern GeneralData smGD;