【学习笔记】Linux GDM

【自取】最近整理的,有需要可以领取学习:

From GDM – GNOME Display Manager: “The GNOME Display Manager (GDM)是管理图形显示服务器并处理图形用户登录的程序.”

显示管理器为X Window System和Wayland用户提供图形化登录提示.

Installation

GDM可以与gdm软件包一起安装,并且作为gnome的一部分安装。

如果您希望使用GNOME 2中使用的旧版GDM,并拥有自己的配置实用程序,请安装gdm-oldAUR软件包。 请注意,除非另有说明,否则本文的其余部分将讨论当前的GDM,而不是旧版GDM。

您可能还希望安装以下内容:

Starting

To start GDM at boot time enable gdm.service.

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png
Reason: this works only with X desktop environments (Discuss in Talk:GDM#GDM with wayland does not use xprofile for autostarting)
One might want to autostart certain commands, such as xrandr for instance, on login. This can be achieved by adding a command or script to a location that is sourced by the display manager. See Display manager#Autostarting for a list of supported locations.

Note: The /etc/gdm/Init directory is no longer a supported location, see [1].

The factual accuracy of this article or section is disputed.

Reason: Configuration is not persistent and will be gone after gdm update. Needs to be rewritten to enable user-themes gnome-shell extension for gdm user and use custom theme and set gsetting to use that theme (Discuss in Talk:GDM#)
Note:

  • Since GNOME 3.16, GNOME Shell themes are now stored as binary files (gresource).

  • This change will be overwritten on subsequent updates of gnome-shell.

首先,您需要将现有的GNOME Shell主题提取到主目录中的文件夹中。 您可以使用以下脚本执行此操作:

extractgst.sh
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/org/gnome/shell/theme">
    <file>calendar-today.svg</file>
    <file>checkbox-focused.svg</file>
    <file>checkbox-off-focused.svg</file>
    <file>checkbox-off.svg</file>
    <file>checkbox.svg</file>
    <file>dash-placeholder.svg</file>
    <file>gnome-shell.css</file>
    <file>gnome-shell-high-contrast.css</file>
    <file>icons/scalable/status/eye-not-looking-symbolic.svg</file>
    <file>icons/scalable/status/eye-open-negative-filled-symbolic.svg</file>
    <file>icons/scalable/status/message-indicator-symbolic.svg</file>
    <file>icons/scalable/status/keyboard-enter-symbolic.svg</file>
    <file>icons/scalable/status/keyboard-hide-symbolic.svg</file>
    <file>icons/scalable/status/keyboard-layout-filled-symbolic.svg</file>
    <file>icons/scalable/status/keyboard-shift-filled-symbolic.svg</file>
    <file>icons/scalable/status/keyboard-caps-lock-filled-symbolic.svg</file>
    <file>icons/scalable/actions/color-pick.svg</file>
    <file>icons/scalable/actions/pointer-double-click-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-drag-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-primary-click-symbolic.svg</file>
    <file>icons/scalable/actions/pointer-secondary-click-symbolic.svg</file>
    <file>filename</file>
    <file>no-events.svg</file>
    <file>no-notifications.svg</file>
    <file>pad-osd.css</file>
    <file>process-working.svg</file>
    <file>toggle-off-dark.svg</file>
    <file>toggle-off-hc.svg</file>
    <file>toggle-off.svg</file>
    <file>toggle-on-dark.svg</file>
    <file>toggle-on-hc.svg</file>
    <file>toggle-on.svg</file>
  </gresource>
</gresources>

将文件名替换为背景图像的文件名,或删除该行以使用十六进制颜色值。

[En]

Replace the file name with the file name of the background image, or delete the line to use hexadecimal color values instead.

现在,打开目录中的 gnome-shell.css文件,并如下更改 #lockDialogGroup定义:

#lockDialogGroup {
  background: url(filename);
  background-size: [WIDTH]px [HEIGHT]px;
  background-repeat: no-repeat;
}

background-size设置为GDM使用的分辨率,这不一定是图像的分辨率。 有关显示分辨率的列表,请参阅显示分辨率。 同样,将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(请注意,仅注销是不够的),您应该发现它正在使用您喜欢的背景图像。

DConf 配置

一些GDM设置存储在DConf数据库中。. They can be configured either by adding keyfiles to the /etc/dconf/db/gdm.d directory 然后以root身份运行 dconf update或登录系统上的GDM用户并使用gsettings命令行工具直接更改设置来重新编译GDM数据库。

Note that for the former approach, a GDM profile file is required – this must be created manually as it is no longer shipped upstream, see below:

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

然后重新编译GDM数据库,或者登录到GDM用户并执行以下操作:

$ 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]
text-scaling-factor='1.25'

然后重新编译GDM数据库,或者登录到GDM用户并执行以下操作:

$ gsettings set org.gnome.desktop.interface text-scaling-factor '1.25'

此调整禁用在登录屏幕上调整系统音量(通过键盘)时听到的声音反馈。

[En]

This adjustment disables the sound feedback you hear when adjusting the system volume (through the keyboard) on the login screen.

创建如下文件:

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

然后重新编译GDM数据库,或者登录到GDM用户并执行以下操作:

$ gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'action'

where action can be one of nothing, suspend or hibernate.

默认情况下,GDM(和GNOME)中禁用了点按单击,但是您可以使用dconf设置轻松启用它。

Note: If you want to do this under X, you have to first set up correct X server access permissions – see #Configure X server access permission.

To enable tap-to-click, either create the following keyfile:

/etc/dconf/db/gdm.d/06-tap-to-click
[org/gnome/desktop/interface]
toolkit-accessibility='boolean'

然后重新编译GDM数据库,或者登录到GDM用户并执行以下操作:

$ gsettings set org.gnome.desktop.interface toolkit-accessibility 'boolean'

The menu is disabled when the key is false, enabled when it is true.

要在GDM上启用夜间模式,请运行

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

Keyboard layout

系统键盘布局将应用于GDM. See Keyboard configuration in Xorg#Using X configuration files.

Tip: See Wikipedia:ISO 3166-1 for a list of keymaps.
If a system has multiple users, it is possible to specify a keyboard layout for GDM to use which is different from the system keyboard layout. Firstly, ensure the package gnome-control-center is installed. Then start gnome-control-center and navigate to Region & Language -> Input Sources. In the header bar, hit the Login Screen toggle button and then choose a keyboard layout from the list. Note that the Login Screen button will not be visible in the header bar unless multiple users are present on the system [5].

Users of GDM 2.x (legacy GDM) may need to edit ~/.dmrc as shown below:

~/.dmrc
# Enable automatic login for user
[daemon]
AutomaticLogin=username
AutomaticLoginEnable=True

Tip: &#x5982;&#x679C;&#x6DFB;&#x52A0;&#x8FD9;&#x4E9B;&#x884C;&#x540E;GDM&#x5931;&#x8D25;&#xFF0C;&#x8BF7;&#x4ECE;TTY&#x4E2D;&#x5C06;&#x5176;&#x6CE8;&#x91CA;&#x6389;&#x3002;.
或延迟自动登录:

/etc/gdm/custom.conf
XSession=gnome-xorg

如果您想绕过GDM中的密码提示,则只需将以下行添加到 /etc/pam.d/gdm-password:

auth sufficient pam_succeed_if.so user ingroup nopasswdlogin

然后,将 nopasswdlogin组添加到您的系统。 See User group for group descriptions and group management commands.

现在,将您的用户添加到 nopasswdlogin组,您只需单击用户名即可登录。

Warning:</p> <ul> <li>不要对root帐户执行此操作。</li> <li>You won't be able to change your session type at login with GDM anymore. If you want to change your default session type, you will first need to remove your user from the <code>nopasswdlogin</code> group.

GDM uses polkit and logind to gain permissions for shutdown. You can shutdown the system when multiple users are logged in by setting:

/etc/polkit-1/localauthority.conf.d/org.freedesktop.logind.policy
[User]
SystemAccount=true

一些桌面环境将显示设置存储在 ~/.config/monitors.xml. xrandr commands are then generated on the base of the file content. GDM has a similar file stored in /var/lib/gdm/.config/monitors.xml.

If you have your monitors setup as you like (resolution, refresh rate, orientation, scaling, primary and so on) in ~/.config/monitors.xml and want GDM to honor those settings:

# cp ~/.config/monitors.xml /var/lib/gdm/.config/
# chown gdm:gdm /var/lib/gdm/.config/monitors.xml

The relevant parts of monitors.xml for screen rotation and scaling are:

<monitors version="2">
  <configuration>
    <logicalmonitor>
      ...

      <scale>2</scale>
      ...

      <transform>
        <rotation>right</rotation>
        <flipped>no</flipped>
      </transform>
      ...

    </logicalmonitor>
  </configuration>
</monitors>

Changes will take effect on logout. This is necessary because GDM does not respect xorg.conf.

Note: If you use GDM under Wayland, you must also use a monitors.xml that was created under Wayland. See GDM bug 224 for more info. Alternatively, you can force GDM to #Use Xorg backend, and use a monitors.xml that was created under Xorg.
Note: If you use fractional scaling, you need to enable it for user gdm.

配置X server 访问权限

You can use the xhost command to configure X server access permissions.

For instance, to grant GDM the right to access the X server, use the following command:

# xhost +SI:localuser:gdm

故障排除

GDM doesn’t work well in Wayland mode with the proprietary NVIDIA driver. When using this driver, GDM will use Xorg instead.[7]

To force-enable Wayland, disable the udev rule responsible for disabling Wayland in GDM:

# ln -s /dev/null /etc/udev/rules.d/61-gdm.rules

If GDM starts up properly on boot, but fails after repeated attempts on logout, try adding this line to the daemon section of /etc/gdm/custom.conf:

GdmXserverTimeout=60

See Xorg#Rootless Xorg.

The Wayland backend is used by default, and the Xorg backend is used only if the Wayland backend cannot be started. You may wish to use the Xorg backend instead if, for example:

The screen flickers
GDM crashes
To use the Xorg backend by default, uncomment the following line in /etc/gdm/custom.conf:

#WaylandEnable=false

引导后,GDM可能会为您显示黑屏,并且左上方的白色光标闪烁。 这可能是由于GDM在完全初始化图形驱动程序之前启动而引起的。 一种可能的解决方法是尽早启动KMS。 另一个可能的解决方法是编辑systemd服务,并将其类型设置为” idle”或添加一个小的延迟:

 [Service]
 Type=idle
 [Service]
 ExecStartPre=/bin/sleep 2

If a longer delay is required, increase the delay time.

如果在引导后屏幕保持黑色,并且直到移动鼠标或在键盘上键入内容后GDM才启动,则可能是由于缺少生成随机数所需的熵。 要确认,请检查以下行是否出现在systemd-random-seed的日志中(可以使用读取 journalctl --unit systemd-random-seed):

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

为了解决这个问题,如果您的CPU支持RDRAND指令,则可以传递 random.trust_cpu = on内核参数,或者您也可以使用hadged来提供熵,尽管它的质量很低。 有关其他解决方案,请参见有关该主题的Debian文章。

删除gdm之后,systemd可能会报告以下内容:

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

要删除此警告,请以root用户身份登录并删除主要用户 gdm,然后删除组 gdm

# userdel gdm
# groupdel gdm

Verify that gdm is successfully removed via pwck and grpck. To round it off, you may want to double-check no unowned files for gdm remain.

GDM uses a separate dconf database to control power management. To apply your user’s power settings, copy them to GDM’s dconf database:

$ 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

where username is your username.

To only disable auto-suspend on AC, run:

$ sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'

(To also disable auto-suspend on battery, run the command with battery instead of ac.)

Restart GDM to activate your changes.

Wayland requires Kernel Mode Setting (KMS) running in order to work, and on some machines the GDM process start earlier than KMS, resulting in GDM unable to see Wayland and working only with X.Org. This might result in messages like the following showing up in your log:

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]: gnome-shell-wayland.service: Failed with result 'protocol'.

systemd[505]: Failed to start GNOME Shell on Wayland.

Alternatively, the same issue may lead to GDM not appearing or monitor only displaying the TTY output.

You can solve this problem by starting KMS earlier.

Also, if you use a NVIDIA driver, the Wayland session might be blocked by a udev rule (see the notes under GNOME#Wayland sessions). This might result in messages like the following:

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

In this case, you might see lines like this in /usr/lib/udev/rules.d/61-gdm.rules:

# disable Wayland when using the proprietary nvidia driver
DRIVER=="nvidia", RUN+="/usr/lib/gdm-disable-wayland"

To let GDM use Wayland, copy 61-gdm.rules from /usr/lib/udev/rules.d/ to /etc/udev/rules.d/ (where the latter file will override the former) and comment out the related line:

# DRIVER=="nvidia", RUN+="/usr/lib/gdm-disable-wayland"

At first, without an NVidia device, GDM starts and works normally on Wayland, but stops working once an NVidia eGPU is plugged in (or the nvidia module is loaded for other reasons). A typical symptom of the problem is a black screen with a blinking cursor upon logouts and GDM restarts and the following message in GDM’s logs (journalctl -u gdm -b):

Gdm: Child process -<some pid> was already dead.

</some>

The solution is the same as above: Prevent /usr/lib/gdm-disable-wayland from running upon nvidia module loading.

Notice that GDM on Wayland will no longer work once /usr/lib/gdm-disable-wayland has run. This is because WaylandEnable=false has been written into /run/gdm/custom.conf, which overrides /etc/gdm/custom.conf. To fix the situation without a reboot, remove /run/gdm/custom.conf and then restart GDM.

Original: https://www.cnblogs.com/nightnine/p/14696471.html
Author: dozeoo
Title: 【学习笔记】Linux GDM

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10206/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • linux cpu 运行模式

    linux cpu 运行模式 CPU动态节能技术用于降低服务器功耗,通过选择系统空闲状态不同的电源管理策略,可以实现不同程度降低服务器功耗,更低的功耗策略意味着CPU唤醒更慢对性能…

    Linux 2022年8月26日
    02050
  • 红帽首席架构师:CentOS Stream 并非要革了 CentOS 的“命”

    自从红帽 宣布CentOS 将停止更新,并以全新的 CentOS Stream 彻底取而代之;开源社区有关红帽 这一举措的疑惑就层出不穷。对此,红帽首席架构师张家驹于近期进行了答疑…

    Linux 2022年8月11日
    0290
  • Linux云服务器安装JDK1.8

    1、官方地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm…

    Linux 2022年8月24日
    0280
  • kafka消息队列

    一、概述 Kafka is used for building real-time data pipelines and streaming apps. It is horizon…

    2022年8月11日
    0610
  • 重置docker中gitlab中root账号的密码

    一. 进入docker的 gitlab 容器中 查看所有容器 进入gitlab 容器中 二. 修改密码 1、要重置您的root密码,请首先使用root特权登录到服务器。使用以下命令…

    Linux 2022年8月30日
    0260
  • git

    误在主分支编写代码解决 git stash # &#x6682;&#x5B58; git checkout branch2 # &#x5207;&#…

    Linux 2022年8月30日
    0330
  • Redis核心技术与实战:学习总结目录

    1 Redis学习路径 在《Redis核心技术与实战》课程的学习中,我经常看到一位课代表的发言,他就是Kaito,他总结了一份 Redis学习路径脑图(建议收藏),将Redis的知…

    Linux 2022年9月14日
    0320
  • linux 服务器性能调优总结

    1.性能分析的几个方面 https://blog.csdn.net/w174504744/article/details/53894127 2.cpu 性能分析工具 perf ht…

    Linux 2022年8月13日
    0300
  • .gitignore == git添加忽略不生效解决方案

    把某些目录或文件加入忽略规则,发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的…

    Linux 2022年8月30日
    0330
  • linux mv 命令中断的解决办法

    背景:使用mv对服务器文件进行迁移的过程中,因为网络中断,所以迁移到一半被停止了。 现状:有一部分文件没有迁移完,但是文件夹已经存在了,重新mv提示文件夹已经存在,切已经有文件,所…

    Linux 2022年9月10日
    0540
  • 同步本地git tag为远程git tag

    1、 先删除所有本地tag git tag -l —-> 列出所有本地tag git tag -d xxx —-> 删除制定tag xargs …

    Linux 2022年8月30日
    0270
  • 面试总结 | Linux后台开发不得不看的知识点(给进军bat的你!)

    @ 一 自我介绍 二 面试情况 三 相关知识点汇总 1 c/c++相关 2 计算机网络 3 数据结构相关 4 数据库相关 5 操作系统 6 Linux基础知识及应用编程(后台必备!…

    2022年8月20日
    0320
  • 在虚拟机中安装红旗桌面7.0 Linux操作系统的详细图文教程

    本文作者:souvc 本文出处:http://www.cnblogs.com/liuhongfeng/p/5343087.html 以下是详细的内容: 一、安装虚拟机。 安装虚拟机…

    Linux 2022年8月24日
    0270
  • redis订阅关闭异常解决

    redis订阅关闭异常解决 应用程序模块订阅redis运行一段时间出现一直重连Redis服务,日志如下: 2019-04-28 10:06:17,551 ERROR org.spr…

    Linux 2022年9月14日
    0190
  • 解决GitHub无法访问

    1、方案一:固定修改hosts(不推荐,访问慢) win7的hosts文件中: C:\Windows\System32\drivers\etc\hosts 追加如下内容: 测试访问…

    Linux 2022年8月30日
    0240
  • linux命令之查找grep

    grep(全称:Global Regular Expression Print)是一种强大的文本搜索工具,它可以使用正则表达式搜索文本,并把匹配的行打印出来。它的使用权限是所有用户…

    Linux 2022年9月10日
    0160
  • linux系统下深度学习环境搭建和使用

    作为一个AI工程师,对Linux的一些技能的掌握也能从一定层面反应工程师的资深水平。 要求1:基于SSH的远程访问(本篇文章) 能用一台笔记本电脑,远程登陆一台linux服务器 能…

    Linux 2022年8月20日
    0330
  • git 升级到 2.33版本后,连接远程仓库失败

    前言 重装git最新版本后,idea连接远程仓库失败。 解决步骤 .ssh目录下创建文件config 文件内容: Host * ServerAliveInterval 10 Hos…

    Linux 2022年8月30日
    0230
  • 教你搞懂Jenkins安装部署!

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作…

    Linux 2022年9月10日
    0240
  • [转帖]Redis RDB 分析工具 rdbtools 说明

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com Original: …

    Linux 2022年9月14日
    0190
  • Redis AOF重写

    AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数…

    Linux 2022年9月14日
    0150
  • Gitlab CI yaml官方配置文件翻译

    此文档用于描述.gitlab-ci.yml语法,.gitlab-ci.yml文件被用来管理项目的runner 任务。如果想要快速的了解GitLab CI ,可查看快速引导。 .gi…

    Linux 2022年8月30日
    0440
  • 记录linux一些命令

    全局搜索某个程序的安装路径 比如搜索nginx的文件都在哪个目录下 whereis nginx 查看某个服务的进程和结束某个服务的进程 比如查看node进程并终止 ps aux |…

    Linux 2022年8月13日
    0290
  • 27. rz与sz上传下载文件

    工作中需要在 Linux 和 Windows 之间传输文件,一般使用xftp等gui工具完成。但是有些第三方linux命令也可以完成上传下载操作 从Linux下载文件到本机 , 在…

    Linux 2022年9月10日
    0330
  • 一起来学习linux创建用户useradd命令

    linux创建用户useradd命令 一,adduser与useradd命令二者的关系 复制代码代码示例: [root@larrywen opt]# type adduseradd…

    Linux 2022年8月26日
    0250
  • Kubernetes的ConfigMap解析

    ConfigMap功能在Kubernetes1.2版本的时候就有了,许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。这些配置信息需要与docker image解耦,你…

    Linux 2022年8月26日
    0560

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部