gnome相关

gdm

gdm的配置文件一般在/etc/gdm目录下,包括:
  • Init/
  • PostLogin/
  • PreSession/
  • Xsession
  • PostSession/

启动过程如下:

  • 启动X server
  • 为第一个本地display运行Init/<displayname>,如Init/:0;如果该文件不存在则运行Init/<hostname>;如果仍然不存在则为所有的XDMCP登录运行Init/XDMCP或者为所有的on command flexible displays运行Init/Flexi;如果这些文件都不存在则运行Init/Default
  • 当用户认证通过后,以和Init目录的相同的方式运行PostLogin目录下的scripts
  • 以和Init目录相同的方式运行PreSession目录下的scripts
  • 登录时用户在session列表中选择的session通常对应一个.desktop文件,比如对debian中的gnome是/usr/share/xsessions/gnome.desktop,gdm以该文件中Exec行指定的命令行为第一个参数运行Xsession,Xsession是个shell script,它做的主要工作:   
    • 以source方式执行/etc/profile、~/.profile、/etc/xprofile、~/.xprofile来设置环境
    • 设置好相关变量后以source方式执行/etc/X11/xsession.d目录下的shell scripts,通常最后一个script用来执行以Xsession的第一个参数传入的命令,对gnome就是gnome-session
  • 当用户结束session时,以和Init目录相同的方式执行PostSession目录下的scripts   

gnome-session

主要程序当然是gnome-session了,它是一个X session manager,用来启动gnome桌面。不管用startx/xinit还是gdm/xdm来启动gnome,最后一步都是执行gnome-session。gnome-session将会用~/.gnome2/session-options文件里CurrentSession指定的session名到~/.gnome2/session里寻找对应的session,然后启动/恢复该session指定的程序;如果session-options文件不存在将使用session文件里名为Default的session;如果session文件不存在则使用{prefix}/share/gnome/default.session的内容;一般来说每个session里都要启动几个程序:
  • gnome-wm gnome的window manager,很重要
  • gnome-panel 类似windows的任务条的在桌面上下端的东东
  • nautilus 类似windows的explore,启动后会在桌面上显示Computer,xxx' Home等图标

gnome-session依赖dbus(freedesktop的message bus system)来做应用间的消息传递,所以在启动gnome-session前要先启动dbus,startx/xinit/dm一般是这么写的:

exec dbus-launch —exit-with-session gnome-session

dbus-launch会在启动dbus daemon后启动gnome-session,—exit-with-session使得创建一个进程监视stdin上的HUP信号并且试图连接到X server,当stdin发生HUP或者失去到X connection时kill掉dbus daemon

gnome-settings-daemon是gnome control center的一个程序,由gnome-session启动,如果gnome启动时报告无法启动setttings daemons,则可能是因为该程序没有装或者被卸载了。

你可能感兴趣的:(gnome相关)