出自 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 用戶執行以下操作:

[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'

更改電源按鈕行為

注意:
  • 對於電源鍵的設置 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用戶並執行以下操作:

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

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

開啟觸摸板輕觸以點擊

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

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

若要啟用輕觸以點擊,創建以下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'

開啟或關閉無障礙菜單

本文內容或本節內容已經過期。

原因: 對於 GDM 43,以下配置 keyfile 無效,儘管官方文檔仍然這樣說明[4]。請使用 org.gnome.desktop.a11y.applications screen-keyboard-enabled true key。 (在Talk:GDM討論)

若要禁用或啟用無障礙菜單,創建以下 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]

提示:添加 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

通過 RDP 的遠程登錄

注意: 當前只能創建無顯示器的遠程會話。
注意: 一次只能存在一個圖形化會話。若另一個圖形化會話存在,嘗試創建新圖形化會話會殺死它。
通過圖形化接口

可在 Gnome 設置程序中找到「系統>遠程桌面>遠程登錄」來圖形化地配置遠程登錄。

通過終端接口
注意: 要生效,Gnome 遠程桌面同時要求 TLS 證書和憑證。除非預先設置過,否則兩者都不存在,需要手動設置。

要顯示當前狀態和憑證,可採用以下命令:

# 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.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

注意:
 [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,您必須滿足以下三個條件:

從 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#沒有 root 權限的 Xorg

使用Xorg後端

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

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

#WaylandEnable=false

沒有完全卸載 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 上的自動掛起,運行:

[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.

另見