GDM

出自 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'

開啟或關閉無障礙菜單[編輯 | 編輯原始碼]

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

原因: 配置密鑰不再起作用(用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.

另見[編輯 | 編輯原始碼]