gdm reads /etc/gdm/gdm.conf for its configuration. For each local display, gdm starts an X server and runs gdmlogin(8x) on that display. The main gdm process also listens for XDMCP requests from remote displays. These requests can either be direct, causing gdm to start a gdmlogin(8x) on the remote display, or indirect, causing a gdmchooser(8x) to be opened.
When managing a display, gdm attempts to execute /etc/gdm/Init/display, or /etc/gdm/Init/Default if that does not exist. When a user logs in, gdm first attempts /etc/gdm/PreSession/display (or /etc/gdm/PreSession/Default), and then one of the sessions in /etc/gdm/Sessions. When the session has completed, gdm attempts to run /etc/gdm/PostSession/display, or /etc/gdm/PostSession/Default. Of all these files, only the /etc/gdm/Sessions one is required to exist.
gdm maintains information about the displays it is managing in /var/lib/gdm. This includes xauth information, so this directory is not readable to normal users.