出自 Arch Linux 中文维基

來自GDM - GNOME顯示管理器:「GNOME顯示管理器(GDM)是一個管理圖形顯示服務並處理圖形用戶登錄的程序。

顯示管理器X Window SystemWayland提供圖形登錄提示。

安裝

可通過安裝gdm包來安裝GDM,或作為gnome包組組的一部分安裝。

啟動

若要開機啟動GDM,啟用gdm.service

自動啟動應用

欲使程序於登錄後自動啟動,請參照 Autostarting#桌面環境 中適用您的桌面環境的指示。

配置

注意: 下面列出的大多數配置選項都可以使用 gdm-settingsAUR GUI 應用程式輕鬆設置。

登錄頁面背景圖片

注意:
  • 自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

創建以下密鑰文件:

/etc/dconf/db/gdm.d/02-logo
[org/gnome/login-screen]
logo='/path/to/logo.png'

然後重新編譯 GDM database,或登錄 GDM 用戶並執行以下操作:

$ sudo -u 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用戶並執行以下操作:

$ sudo -u 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 用戶並更改圖標主題:

$ sudo -u 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用戶並執行以下操作:

$ sudo -u 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用戶並執行以下操作:

$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.sound event-sounds 'false'

更改電源按鈕行為

注意:
  • 對於電源鍵的設置 logind 設置 已被 GNOME Settings Daemon 覆蓋。 [1]
  • 自從 GDM 3.18起,電源鍵不能被設置為交互式 (interactive). [2]
  • 在某些情況下,這條設置會被忽略,而採用硬編碼產生的的默認值。[3]
警告: 請注意, acpid 守護進程也會控制「電源鍵」和「休眠鍵」相關事件。同時運行兩套系統可能導致意外的結果。

創建如下的 keyfile:

/etc/dconf/db/gdm.d/05-power
[org/gnome/settings-daemon/plugins/power]
power-button-action='action'

然後重新編譯GDM database,或登錄GDM用戶並執行以下操作:

$ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'action'

這裡 action 可以是 nothing, suspendhibernate 其中之一。

開啟觸摸板輕觸以點擊

GDM(和GNOME)中默認關閉輕觸以點擊,但可以使用dconf設置開啟它。

注意: 如果想要在X下這麼做,必須先正確配置X伺服器的訪問權限,見 #配置X伺服器的訪問權限

若要啟用輕觸以點擊,創建以下key文件:

/etc/dconf/db/gdm.d/06-tap-to-click
[org/gnome/desktop/peripherals/touchpad]
tap-to-click=true

然後重新編譯GDM database,或登錄GDM用戶並執行以下操作:

$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click 'true'

開啟或關閉無障礙菜單

Tango-view-refresh-red.png本文內容或本節內容已經過期。Tango-view-refresh-red.png

原因: 配置密鑰不再起作用(用gdm43測試。然而,gdm doc 仍然引用它。配置)。起作用的關鍵是org.gnome.desktop.a11y.applications screen-keyboard-enabled true.。 (在Talk:GDM討論)

若要禁用或啟用無障礙菜單,創建以下key文件:

/etc/dconf/db/gdm.d/07-accessibility
[org/gnome/desktop/interface]
toolkit-accessibility='boolean'

然後重新編譯GDM database,或登錄GDM用戶並執行以下操作:

$ sudo -u gdm dbus-launch gsettings set org.gnome.desktop.interface toolkit-accessibility 'boolean'

當key的值為false時,無障礙菜單默認關閉;true則開啟。

在 GDM 上啟用夜間模式

欲啟用 夜間模式,運行

$ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true

鍵盤布局

GDM會應用系統鍵盤布局。見Keyboard configuration in Xorg#Using X configuration files

提示:參見 Wikipedia:ISO 3166-1 以得到基於國家名的鍵盤映射的完整列表

用 ''localectl'' 命令列舉所有可用的鍵盤布局:

$ localectl list-keymaps

當您使用Wayland時, 您可能需要使用 localectl以自定義地具體說明 X 鍵盤布局:

# localectl set-x11-keymap fr

如果一個系統有多個用戶,您可以為 GDM 指定與系統鍵盤布局不同的鍵盤布局。首先,確定包 gnome-control-center 已安裝。然後啟動 gnome-control-center (即設置,譯者注)並定位到 區域與語言>輸入源在標題欄中,點擊「登錄屏幕」切換按鈕,然後從列表中選擇鍵盤布局。 請注意,除非系統上存在多個用戶,否則標題欄中的「登錄屏幕」按鈕將不可見。[4]

GDM 2.x(傳統GDM)的用戶需要將~/.dmrc更改為以下內容:

~/.dmrc
[Desktop]
Language=de_DE.UTF-8   # change to your default lang
Layout=de   nodeadkeys # change to your keyboard layout

更改語言

系統語言將應用於 GDM。 如果系統有多個用戶,則可以為 GDM 設置與系統語言不同的語言。 在這種情況下,首先請確保安裝了 gnome-control-center。 然後,啟動 gnome-control-center 並選擇「區域和語言」。 在標題欄中,選中 登錄屏幕 切換按鈕。 最後,單擊 語言 並從列表中選擇您的語言。 系統將提示您輸入 root 密碼。 請注意,除非系統上存在多個用戶,否則標題欄中的「登錄屏幕」按鈕將不可見. [5]

提示:添加 2 種不同的輸入語言後,註銷。然後選擇您的默認語言 ,GDM 將在第二個選項被刪除後記住您的選擇。

用戶與登錄

自動登錄

警告: 不要嘗試對由 systemd-homed 管理的用戶執行此操作。 這是目前 未解決 的漏洞,並且會使 GDM 崩潰。

將以下內容添加至/etc/gdm/custom.conf以開啟自動登陸(將username替換為您的用戶名):

/etc/gdm/custom.conf
# Enable automatic login for user
[daemon]
AutomaticLogin=username
AutomaticLoginEnable=True
提示:如果在添加這些行後 GDM 失敗,請從 TTY 中將它們注釋掉。

或延遲自動登錄:

/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

設置默認顯示器

一些桌面環境將顯示設置保存在 ~/.config/monitors.xmlxrandr 命令基於該文件內容生成信息。在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 啟用它。
  • 註:HiDPI wiki 簡體中文部分尚不完善,故選用英語版本。

配置X伺服器的訪問權限

您可以使用 xhost 命令來配置 X 伺服器的訪問權限。

例如,要授予 GDM 訪問 X 伺服器的權限,請使用以下命令:

# xhost +SI:localuser:gdm

疑難解答

Wayland與NVIDIA專有驅動

要在 GDM 中使用帶有 NVIDIA 驅動程序的 Wayland,您必須首先啟用 NVIDIA#DRM內核級顯示模式設置

注意: 如果在 GDM 中未顯示 Wayland 選項,即使在 啟用 KMS配置 Wayland 之後,您很可能已禁用 NVreg_PreserveVideoMemoryAllocationsNVIDIA systemd 服務 。 在嘗試以下方法強制 Wayland 之前,請先遵循 NVIDIA/Tips and tricks#Preserve video memory after suspend

從 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 設置中禁用集成顯卡。

註銷失敗

如果 GDM 在啟動時正常啟動,但在多次嘗試註銷後失敗,請嘗試將此行添加到 /etc/gdm/custom.conf 的守護程序部分:

GdmXserverTimeout=60

無 root 的 Xorg

Xorg#沒有 root 權限的 Xorg

使用Xorg後端

默認使用 Wayland 後端,只有在 Wayland 後端無法啟動時才使用 Xorg 後端。 在如以下情況下,您可能希望使用 Xorg 後端:

要默認使用 Xorg 後端,請在 /etc/gdm/custom.conf 中將以下行取消注釋:

#WaylandEnable=false

GDM 在提供輸入之前沒有啟動

如果在啟動後,屏幕保持黑屏,並且 GDM 直到滑鼠移動或在鍵盤上鍵入內容才啟動,這可能是由於隨機數生成所需的無序狀態(熵)不足。 如要確認,請檢查以下內容是否出現在 systemd-random-seed 的日誌中(可以通過以 root 權限運行 journalctl --unit systemd-random-seed 來讀取):

Kernel entropy pool is not initialized yet, waiting until it is.

要解決此問題,如果您的 CPU 支持 RDRAND 指令,您可以傳遞 random.trust_cpu=on 內核參數。您也可以使用 Haveged ,它也提供了熵,儘管據稱質量很低。 有關其他解決方案,請參閱 Debian 關於該主題的文章

沒有完全卸載 GDM

刪除 gdm 後,systemd 可能會報告以下內容:

user 'gdm': directory '/var/lib/gdm' does not exist

要刪除此警告,請以 root 身份登錄並 刪除私有用戶 gdm 然後 刪除組 gdm

驗證 gdm 是否已通過具有 root 權限的 pwckgrpck 成功刪除。 解決這個問題 ,您可能需要仔細檢查 無主文件(缺失中文翻譯) 是否保留 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 上的自動掛起,運行:

$ sudo -u 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.

另見