GDM
来自GDM - GNOME显示管理器:“GNOME显示管理器(GDM)是一个管理图形显示服务并处理图形用户登录的程序。
显示管理器为X Window System和Wayland提供图形登录提示。
安装[编辑 | 编辑源代码]
可通过安装gdm包包来安装GDM,或作为gnome包组组的一部分安装。
启动[编辑 | 编辑源代码]
若要开机启动GDM,启用gdm.service
。
自动启动应用[编辑 | 编辑源代码]
欲使程序于登录后自动启动,请参照 Autostarting#桌面环境中适用您的桌面环境的指示。
配置[编辑 | 编辑源代码]
登录页面背景图片[编辑 | 编辑源代码]
- 自GNOME 3.16开始,GNOME Shell主题被存储为二进制文件(gresource)。
- 在 gnome-shell包 的后续升级中,这个变动会被重写。
首先,您需要将现有的 GNOME Shell 主题解压到您的主目录中的一个目录中。 您可以使用以下脚本执行此操作:
extractgst.sh
#!/bin/sh gst=/usr/share/gnome-shell/gnome-shell-theme.gresource workdir=${HOME}/shell-theme for r in `gresource list $gst`; do r=${r#\/org\/gnome\/shell/} if [ ! -d $workdir/${r%/*} ]; then mkdir -p $workdir/${r%/*} fi done for r in `gresource list $gst`; do gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/} done
主题文件应当已提取到创建的目录中。现在将您想要的背景图像复制到此目录。
接下来,您需要在目录中创建一个文件,内容如下:
gnome-shell-theme.gresource.xml
<?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/org/gnome/shell/theme"> <file>calendar-today.svg</file> <file>calendar-today-light.svg</file> <file>checkbox.svg</file> <file>checkbox-focused.svg</file> <file>checkbox-off-focused-light.svg</file> <file>checkbox-off-focused.svg</file> <file>checkbox-off-light.svg</file> <file>checkbox-off.svg</file> <file>gnome-shell.css</file> <file>gnome-shell-high-contrast.css</file> <file>gnome-shell-start.svg</file> <file>pad-osd.css</file> <file>process-working.svg</file> <file>toggle-off.svg</file> <file>toggle-off-hc.svg</file> <file>toggle-off-light.svg</file> <file>toggle-on.svg</file> <file>toggle-on-hc.svg</file> <file>toggle-on-light.svg</file> <file>workspace-placeholder.svg</file> <file>filename</file> </gresource> </gresources>
将 filename 替换为背景图像的文件名,或移除此行后用16位色彩值替代。
现在,打开 gnome-shell.css
文件并更改 #lockDialogGroup
定义如下:
#lockDialogGroup { background: url(filename); background-size: widthpx heightpx; background-repeat: no-repeat; }
将 background-size
设置为GDM使用的分辨率, 这可能不一定是图像的分辨率。显示分辨率列表见Display resolution。同样,将 filename 替换为背景图像的文件名。
如果您仅想改变背景颜色,请调整 #lockDialogGroup
的定义,如下:
#lockDialogGroup { background-color: #color; }
这里 color 是作为背景的十六进制编码的新颜色。
最后,使用以下命令编译主题:
$ glib-compile-resources gnome-shell-theme.gresource.xml
然后将生成的 gnome-shell-theme.gresource
文件复制到 /usr/share/gnome-shell
目录下。
然后重启 gdm.service
(注意:重启而不是退出) ,它就会使用您想要的背景图片了。
更多信息见此贴。一个自动执行以上步骤的 shell 脚本在 DimaZirix's github repository 上可用。
dconf配置[编辑 | 编辑源代码]
一些 GDM 设置存储在 DConf database 中。 可以通过将 keyfiles 添加到 /etc/dconf/db/gdm.d
目录,然后以root身份运行 dconf update
重新编译GDM数据库来配置它们,或者通过登录系统上的GDM用户并使用"gsettings" 命令直接更改设置。 需要一个 GDM 配置文件 - 这必须手动创建,因为它不再向上游发送,见下文:
/etc/dconf/profile/gdm
user-db:user system-db:gdm file-db:/usr/share/gdm/greeter-dconf-defaults
对于后一种方法,您可以用以下命令尝试登入 GDM 用户:
# machinectl shell gdm@ /bin/bash
登录页面的logo[编辑 | 编辑源代码]
创建以下密钥文件:
/etc/dconf/db/gdm.d/02-logo
[org/gnome/login-screen] logo='/path/to/logo.png'
然后重新编译 GDM database,或作为 GDM 用户执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.login-screen logo '/path/to/logo.png'
更改光标主题[编辑 | 编辑源代码]
GDM会忽略 GNOME 光标主题设置,也忽略根据 XDG_规范设置的光标主题。若要更改GDM使用的光标,请创建以下密钥文件:
/etc/dconf/db/gdm.d/10-cursor-settings
[org/gnome/desktop/interface] cursor-theme='theme-name'
然后重新编译GDM database,或作为GDM用户执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.interface cursor-theme 'theme-name'
更改图标主题[编辑 | 编辑源代码]
可以使用相同的方法来更改图标主题。 创建以下密钥文件:
/etc/dconf/db/gdm.d/11-icon-settings
[org/gnome/desktop/interface] icon-theme='theme-name'
然后,重新编译 GDM 数据库。 或者,执行以下命令临时作为 GDM 用户更改图标主题:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.interface icon-theme 'theme-name'
在登录页面显示大字体[编辑 | 编辑源代码]
单击屏幕右上角的辅助功能图标(一个白色圆圈,中间有一个人的轮廓),然后选中大号文本选项。
要设置特定的缩放比例,可以创建以下密钥文件(以1.25为例):
/etc/dconf/db/gdm.d/03-scaling
[org/gnome/desktop/interface] text-scaling-factor='1.25'
然后重新编译GDM database,或作为GDM用户执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.interface text-scaling-factor '1.25'
关闭声音[编辑 | 编辑源代码]
此调整禁用在登录屏幕上(通过键盘)调整系统音量时听到的声音反馈。
创建以下密钥文件:
/etc/dconf/db/gdm.d/04-sound
[org/gnome/desktop/sound] event-sounds=false
然后重新编译GDM database,或作为GDM用户执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.sound event-sounds 'false'
更改电源按钮行为[编辑 | 编辑源代码]
创建如下的 keyfile:
/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power] power-button-action='action'
然后重新编译GDM database,或作为GDM用户并执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'action'
这里 action 可以是 nothing
, suspend
或 hibernate
其中之一。
开启触摸板轻触以点击[编辑 | 编辑源代码]
GDM(和GNOME)中默认关闭轻触以点击,但可以使用dconf设置开启它。
若要启用轻触以点击,创建以下keyfile:
/etc/dconf/db/gdm.d/06-tap-to-click
[org/gnome/desktop/peripherals/touchpad] tap-to-click=true
然后重新编译GDM database,或作为GDM用户执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click 'true'
开启或关闭无障碍菜单[编辑 | 编辑源代码]
若要禁用或启用无障碍菜单,创建以下 keyfile:
/etc/dconf/db/gdm.d/07-accessibility
[org/gnome/desktop/interface] toolkit-accessibility='boolean'
然后重新编译GDM database,或作为GDM用户执行以下操作:
[gdm]$ dbus-launch gsettings set org.gnome.desktop.interface toolkit-accessibility 'boolean'
当key的值为false
时,无障碍菜单默认关闭;true
则开启。
在 GDM 上启用夜间模式[编辑 | 编辑源代码]
欲启用夜间模式,运行
[gdm]$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
键盘布局[编辑 | 编辑源代码]
GDM 会应用系统键盘布局。您可以用 localectl set-x11-keymap
来指定键盘布局。细节参见 Keyboard configuration in Xorg#Setting keyboard layout。
更改语言[编辑 | 编辑源代码]
系统语言将应用于 GDM。 如果系统有多个用户,则可以为 GDM 设置与系统语言不同的语言。 在这种情况下,首先请确保安装了 gnome-control-center包。 然后,启动 gnome-control-center 并选择“区域和语言”。 在标题栏中,选中登录屏幕切换按钮。 最后,单击语言并从列表中选择您的语言。 系统将提示您输入 root 密码。 请注意,除非系统上存在多个用户,否则标题栏中的“登录屏幕”按钮将不可见. [5]
用户与登录[编辑 | 编辑源代码]
自动登录[编辑 | 编辑源代码]
将以下内容添加至/etc/gdm/custom.conf
以开启自动登录(将username替换为您的用户名):
/etc/gdm/custom.conf
# Enable automatic login for user [daemon] AutomaticLogin=username AutomaticLoginEnable=True
或延迟自动登录:
/etc/gdm/custom.conf
[daemon] TimedLoginEnable=true TimedLogin=username TimedLoginDelay=1
您可以设置用于自动登录的会话(将 gnome-xorg
替换为所需的会话):
/var/lib/AccountsService/users/username
XSession=gnome-xorg
免密登录[编辑 | 编辑源代码]
如果您想绕过 GDM 中的密码提示,只需在 /etc/pam.d/gdm-password
的第一行添加以下行:
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
然后,将 nopasswdlogin
组加入您的系统。详见用户组以获得组的描述和组管理相关命令 。
现在,把您的用户加入 nopasswdlogin
组,然后您只需点击您的用户名以登录。
- 不要对root账户这么做。
- 您将无法在使用 GDM 登录时更改会话类型。 如果您想更改默认会话类型,您首先需要从
nopasswdlogin
组中删除您的用户。
多个会话的无密码关闭[编辑 | 编辑源代码]
GDM 使用 polkit 和 logind 来获得关机权限。 当多个用户登录时,您可以通过设置以关闭系统:
/etc/polkit-1/localauthority.conf.d/org.freedesktop.logind.policy
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd"> <!-- Policy definitions for logind --> <policyconfig> <action id="org.freedesktop.login1.power-off-multiple-sessions"> <description>Shutdown the system when multiple users are logged in</description> <message>System policy prevents shutting down the system when other users are logged in</message> <defaults> <allow_inactive>yes</allow_inactive> <allow_active>yes</allow_active> </defaults> </action> </policyconfig>
您可以找到所有可用的 logind 选项(比如,reboot-multiple-sessions,即重启多用户会话)在 org.freedesktop.login1(5) 中。
在GDM中开启root登录[编辑 | 编辑源代码]
我们并不建议您以 root 登录,但如果必要,请编辑 /etc/pam.d/gdm-password
并在行 auth required pam_deny.so
前添加以下行:
/etc/pam.d/gdm-password
auth sufficient pam_succeed_if.so uid eq 0 quiet
这个文件应当看起来如下:
/etc/pam.d/gdm-password
... auth sufficient pam_succeed_if.so uid eq 0 quiet auth sufficient pam_succeed_if.so uid >= 1000 quiet auth required pam_deny.so ...
重启 GDM 后,您可以用 root 身份登录。
在登录列表中隐藏用户[编辑 | 编辑源代码]
gdm 用户列表的用户由 [6][失效链接 2022-09-17 ⓘ] 收集。 它会自动隐藏系统用户(UID < 1000)。 要从登录列表中隐藏普通用户,请创建或编辑一个以用户命名的文件,并将其保存在 /var/lib/AccountsService/users/
中,随之隐藏该文件。文件至少应包含:
/var/lib/AccountsService/users/username
[User] SystemAccount=true
通过 RDP 的远程登录[编辑 | 编辑源代码]
通过图形化接口[编辑 | 编辑源代码]
可在 Gnome 设置程序中找到“系统>远程桌面>远程登录”来图形化地配置远程登录。
通过终端接口[编辑 | 编辑源代码]
要显示当前状态和凭证,可采用以下命令:
# grdctl --system status --show-credentials
要设置凭证:
# grdctl --system rdp set-credentials rdp_login rdp_password
要生成新的 TLS 密钥和证书:
# winpr-makecert3 -rdp -path /etc/gnome-remote-desktop -n rdp-tls
若省略了 -n rdp-tls
部分,就会使用 hostname 作为名字。
要设置新的 TLS 密钥和证书:
# grdctl --system rdp set-tls-key /etc/gnome-remote-desktop/rdp-tls.key # grdctl --system rdp set-tls-cert /etc/gnome-remote-desktop/rdp-tls.crt
最终,启用远程登录:
# grdctl --system rdp enable
设置默认显示器[编辑 | 编辑源代码]
一些桌面环境将显示设置保存在 ~/.config/monitors.xml
。xrandr 命令基于该文件内容生成信息。在GDM中类似内容保存在/var/lib/gdm/.config/monitors.xml
。
若有显示器设置(例如朝向,缩放,主屏幕等等)信息记录于~/.config/monitors.xml
中,并且想要让这些设置用于GDM:
# cp ~/.config/monitors.xml /var/lib/gdm/.config/
要在每次启动时自动重新配置显示器设置,为 gdm.service
使用 Systemd#附加配置片段:
/etc/systemd/system/gdm.service.d/override.conf
[Service] ExecStartPre=/bin/cp /home/user/.config/monitors.xml /var/lib/gdm/.config/monitors.xml
monitors.xml
文件中屏幕旋转和缩放的部分内容如下:
<monitors version="2"> <configuration> <logicalmonitor> ... <scale>2</scale> ... <transform> <rotation>right</rotation> <flipped>no</flipped> </transform> ... </logicalmonitor> </configuration> </monitors>
必须登出才能使更改生效,因为GDM不遵守xorg.conf
。
- 如果在Wayland下使用GDM,则必须使用在Wayland下创建的
monitors.xml
。详见GDM bug 224。也可以强制让GDM #使用Xorg后端,并使用在Xorg下创建的monitors.xml
。 - 如果您使用 fractional scaling (分数缩放),您需要为用户
gdm
启用它:
[gdm]$ dbus-launch gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
配置X服务器的访问权限[编辑 | 编辑源代码]
您可以使用 xhost
命令来配置 X 服务器的访问权限。
例如,要授予 GDM 访问 X 服务器的权限,请使用以下命令:
# xhost +SI:localuser:gdm
疑难解答[编辑 | 编辑源代码]
Wayland 与 NVIDIA 专有驱动[编辑 | 编辑源代码]
要在 GDM 中使用带有 NVIDIA 驱动程序的 Wayland,您必须满足以下三个条件:
- 启用 DRM KMS;
从 GDM 42 和 NVIDIA 驱动程序 510 开始,GDM 默认为 Wayland。 对于较旧的 NVIDIA 驱动程序(版本 470 和 510 之间),GDM 具有依赖于芯片组的 udev 规则使用 Xorg 而不是 Wayland。 要强制启用 Wayland,不遵循上述三个常规步骤,请通过创建以下符号链接来覆盖这些规则:
# ln -s /dev/null /etc/udev/rules.d/61-gdm.rules
/etc/udev/rules.d/
中的规则会覆盖 /usr/lib/udev/rules.d/
中的规则(参见 Udev#About udev rules)。 建议修改 /etc/
中的文件,而非 /usr/
中的文件,也是因为 /etc/
中的文件由 pacman 管理。如果出现黑屏而不是 GDM,请尝试在计算机的 BIOS 设置中禁用集成显卡。
一些情况下,GNOME 无法启动,将控制权转回 GDM,最终导致登录页面重复出现。您可以尝试设置以下环境变量,参考BBS#2126478:
/etc/environment
MUTTER_DEBUG_KMS_THREAD_TYPE=user
注销失败[编辑 | 编辑源代码]
如果 GDM 在启动时正常启动,但在多次尝试注销后失败,请尝试将此行添加到 /etc/gdm/custom.conf
的守护程序部分:
GdmXserverTimeout=60
无 root 的 Xorg[编辑 | 编辑源代码]
使用Xorg后端[编辑 | 编辑源代码]
默认使用 Wayland 后端,只有在 Wayland 后端无法启动时才使用 Xorg 后端。 在如以下情况下,您可能希望使用 Xorg 后端:
- GDM 崩溃
要默认使用 Xorg 后端,请在 /etc/gdm/custom.conf
中将以下行取消注释:
#WaylandEnable=false
没有完全卸载 GDM[编辑 | 编辑源代码]
user 'gdm': directory '/var/lib/gdm' does not exist
要删除此警告,请以 root 身份登录并删除私有用户 gdm
然后删除组 gdm
:
验证 gdm
是否已通过具有 root 权限的 pwck
和 grpck
成功删除。 解决这个问题 ,您可能需要仔细检查无主文件(缺失中文翻译)是否保留 gdm。
GDM自动挂起(GNOME 3.28)[编辑 | 编辑源代码]
GDM 使用单独的 dconf 数据库来控制电源管理。 要应用用户的电源设置,请将它们复制到 GDM 的 dconf 数据库:
$ IFS=$'\n'; for x in $(sudo -u username gsettings list-recursively org.gnome.settings-daemon.plugins.power); do eval "sudo -u gdm dbus-launch gsettings set $x"; done; unset IFS
这里 username
是您的用户名。
欲仅禁用 AC 上的自动挂起,运行:
[gdm]$ dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
(要同时禁用电池自动挂起,请使用 battery
而不是 ac
运行命令。)
重新启动 GDM 以激活您的更改。
GDM 忽略了 Wayland,默认使用 X.Org[编辑 | 编辑源代码]
Wayland 需要运行内核模式设置 (KMS) 才能工作,并且在某些机器上 GDM 进程比 KMS 更早启动,导致 GDM 无法看到 Wayland 并且只能使用 X.Org。 这可能会导致您的日志中显示如下消息:
gnome-shell[569]: Failed to open gpu '/dev/dri/card0': GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Operation not permitted gnome-shell[569]: Failed to create backend: No GPUs found systemd[505]: org.gnome.Shell@wayland.service: Failed with result 'protocol'. systemd[505]: Failed to start GNOME Shell on Wayland.
或者,同样的问题可能会导致 GDM 不出现或监视器仅显示 TTY 输出。
您可以通过尽早启动 KMS(缺失中文翻译)来解决这个问题。您可能还希望仅验证在 GDM 配置中启用了 Wayland,(见上文)。
此外,如果您使用 NVIDIA 驱动程序,Wayland 会话可能会被 udev 规则阻止(请参阅 GNOME#Wayland 会话下的注释)。 这可能会导致如下消息:
systemd[1022]: Condition check resulted in GNOME Shell on Wayland being skipped. systemd[1022]: org.gnome.Shell@wayland.service: Skipped due to 'exec-condition'. systemd[1022]: org.gnome.Shell@wayland.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
请参阅 #Wayland与NVIDIA专有驱动作为解决方法。
当存在 NVIDIA (e)GPU 时,AMD 或 Intel GPU 上出现黑屏[编辑 | 编辑源代码]
起初,在没有 NVIDIA 设备的情况下,GDM 可以在 Wayland 上正常启动和工作。但一旦插入 NVIDIA eGPU(或由于其他原因加载 nvidia
模块),GDM 就会停止工作。 该问题的一个典型表现是在注销和 GDM 重新启动时出现黑屏,并在 GDM 的日志中显示以下消息(通过以 root 身份运行 journalctl -u gdm -b
访问):
Gdm: Child process -<some PID> was already dead.
解决方法同上所描述: 防止 /usr/lib/gdm-disable-wayland
在 {{ic|nvidia} 上运行 } 模块加载。
请注意,一旦 /usr/lib/gdm-disable-wayland
运行,Wayland 上的 GDM 将不再工作。 这是因为 WaylandEnable=false
已写入 /run/gdm/custom.conf
,它会覆盖 /etc/gdm/custom.conf
。 要在不重新启动系统的情况下解决此问题,请删除 /run/gdm/custom.conf
,然后重新启动 GDM。
无法启用 GDM[编辑 | 编辑源代码]
参见 systemd/FAQ#Failure to enable unit due to preexisting symlink.