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