Difference between revisions of "XDM (简体中文)"

From ArchWiki
Jump to: navigation, search
(Sync to English version.)
(XDM loops back to itself after login: Add systemd info.)
Line 81: Line 81:
  
 
Make sure that the {{pkg|dbus}} package, available in the [[Official Repositories]] is [[pacman|installed]] and then make sure {{ic|dbus}} is included in the {{ic|[[Daemon#Starting_on_Boot|DAEMONS]]}} array in {{ic|/etc/[[rc.conf]]}}.
 
Make sure that the {{pkg|dbus}} package, available in the [[Official Repositories]] is [[pacman|installed]] and then make sure {{ic|dbus}} is included in the {{ic|[[Daemon#Starting_on_Boot|DAEMONS]]}} array in {{ic|/etc/[[rc.conf]]}}.
 +
 +
When using pure systemd with logind, instead of consolekit which is now deprecated, systemd will start dbus automatically.  To use xdm use {{bc|# systemctl enable xdm.service}} or {{bc|# systemctl enable xdm-archlinux.service}}
  
 
Also, make sure that you are actually starting your window manager, for example with the command {{ic|xmonad}} in {{ic|~/.xsession}}, and that {{ic|~/.xsession}} has the correct permissions of {{ic|774}}.
 
Also, make sure that you are actually starting your window manager, for example with the command {{ic|xmonad}} in {{ic|~/.xsession}}, and that {{ic|~/.xsession}} has the correct permissions of {{ic|774}}.

Revision as of 04:16, 14 November 2012

Summary help replacing me
XDM 是一个显示管理器.
Related
Display Manager

来自 XDM 手册页:

Xdm 能为本地和远程服务器提供一系列图形显示功能。xdm的设计满足图形显示的基本要求并遵循开放组织标准(XDMCPX Display Manager Control Protocol),即X显示管理协议。Xdm提供的功能与init, getty等以文本登录为主的程序相似:提供登录会话,获取用户名和密码,并将授权给予登录用户并提供工作会话。

XDM 提供了一个简单而又直观的图形登录界面。

安装

安装 XDM:

# pacman -S xorg-xdm xorg-xconsole

更改 .xsession 为可执行文件:

$ chmod 744 .xsession

除此之外, 你可以为XDM安装Arch Linux 主题(可选):

# pacman -S xdm-archlinux

参看 Display Manager 以获取详细信息。

设置墙纸

这里有些小贴士能让 XDM 变得美观些:

  • 安装 Quick Image Viewer:
# pacman -S qiv
  • 创建一个文件夹用于存放图片。 (例如 /root/backgrounds 或者 /usr/local/share/backgrounds)
  • 编辑 /etc/X11/xdm/Xsetup_0. 改变 xconsole 命令为:
 /usr/bin/qiv -zr /root/backgrounds/*
  • 编辑 /etc/X11/xdm/Xresources. 添加/替换 下面字段:
 xlogingreetFont:  -adobe-helvetica-bold-o-normal--20------iso8859-1
 xloginfont:       -adobe-helvetica-medium-r-normal--14------iso8859-1
 xloginpromptFont: -adobe-helvetica-bold-r-normal--14------iso8859-1
 xloginfailFont:   -adobe-helvetica-bold-r-normal--14------iso8859-1
 xlogin*frameWidth: 1
 xlogin*innerFramesWidth: 1
 xlogin*logoPadding: 0
 xlogin*geometry:    300x175-0-0

注释掉以下字段:

 #xlogin*logoFileName: /usr/X11R6/lib/X11/xdm/pixmaps/xorg.xpm
 #xlogin*logoFileName: /usr/X11R6/lib/X11/xdm/pixmaps/xorg-bw.xpm

如想了解各字段的确切意义,可查阅xdm的手册页。

  • 更新 /etc/pacman.conf 以确保所作的更改不会丢失:
 ~NoUpgrade   = etc/X11/xdm/Xsetup_0 etc/X11/xdm/Xresources

以上的处理能让登录界面随机显示文件夹里地墙纸,并且登录会话在屏幕的右下方显示。

Multiple X sessions & Login in the window

With the Xdmcp enable, you can easily run multiple X sessions simultaneously on the same machine.

# X -query ip_xdmcp_server :2 

This will launch the second session, in window you need xorg-server-xephyr

# Xephyr -query this_machine_ip :2 

Troubleshooting

XDM loops back to itself after login

The current version of the xorg-xdm package, available in the Official Repositories is patched to register sessions with ConsoleKit by default. If ConsoleKit is not running, XDM will fail to succesfully launch an X session. D-Bus can be used invoke ConsoleKit when called upon by XDM.

Make sure that the dbus package, available in the Official Repositories is installed and then make sure dbus is included in the DAEMONS array in /etc/rc.conf.

When using pure systemd with logind, instead of consolekit which is now deprecated, systemd will start dbus automatically. To use xdm use
# systemctl enable xdm.service
or
# systemctl enable xdm-archlinux.service

Also, make sure that you are actually starting your window manager, for example with the command xmonad in ~/.xsession, and that ~/.xsession has the correct permissions of 774.

XDM does not update login records

The vanilla config of XDM calls /etc/X11/xdm/GiveConsolve for the startup of display :0, whereas otherwise it calls /etc/X11/xdm/Xstartup. Since only the latter contains a call to /usr/bin/sessreg, the login record /var/run/utmp is not updated for a login on display :0. As a consequence, the output of who does not necessarily list the user after login through XDM. This was already discussed in the bug report FS#26395.

As a simple fix, append the following line to /etc/X11/xdm/GiveConsole:

exec /usr/bin/sessreg -a -w /var/log/wtmp -u /var/run/utmp -x /etc/X11/xdm/Xservers -l $DISPLAY -h "" $USER

This change also enables the getuser function presented in Acpid to work.