解决方案1

解决方案1

上周我第一次使用 Debian,并成功使用 gnome-tweak-tools 配置了一些桌面选项,但我一直在尝试自定义登录屏幕。

在我所做的研究中,我发现了很多关于在 Ubuntu、Linux Mint 或 Arch Linux 中执行此操作的信息,但关于“Debian 方式”的信息并不多。

我认为,Gnome 使用 Debian-gdm 用户的登录屏幕配置,但我不知道如何实际更改它,我尝试像任何其他用户一样使用 gnome-tweak-tools 更改它,并且我已经还尝试编辑“/etc/gdm3/greeter.dconf-defaults”文件配置,在“picture-uri”行中添加我想要作为背景的文件的路径。 “picture-options_'none'”似乎也什么也没做。

定制它的最简单方法是什么?

我使用的是 gnome-shell 版本 3.14.4 和 debian 版本 8.6

答案1

(在 Ubuntu Gnome Shell 16.04+ 上测试)

两种方式。如果您想知道自己到底在做什么,请关注解决方案#1。如果您希望一个脚本为您完成所有工作,请遵循解决方案#2(它所做的一切都是自动化解决方案#1)

解决方案1

背景信息:Gnome 登录背景不是一个可以直接更改的参数(奇怪!)。它存在于 Gnome Shell CSS 文件中,该文件存在于二进制文件中。因此,您必须提取二进制文件,修改它,然后用旧文件替换新的二进制文件。

步骤1:提取Gnome shell二进制文件

运行以下脚本extractgst.sh将 Gnome shell 主题提取到~/shell-theme目录

#!/bin/sh

workdir=${HOME}/shell-theme
if [ ! -d ${workdir}/theme ]; then
  mkdir -p ${workdir}/theme
fi
gst=/usr/share/gnome-shell/gnome-shell-theme.gresource

for r in `gresource list $gst`; do
        gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/}
done

第二步:修改

  • 将背景图像复制到此文件夹~/shell-theme/theme
  • 创建文件~/shell-theme/theme/gnome-shell-theme.gresource.xml内容
  • 将文件名替换为您的背景图像文件名
  • 现在,打开gnome-shell.css目录中的文件并更改#lockDialogGroup定义,如下所示:

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

将文件名设置为背景图像的名称,并将背景大小设置为您的分辨率。

步骤 3:创建新的 Gnome shell 主题二进制文件并替换现有的

在主题目录中,运行

glib-compile-resources gnome-shell-theme.gresource.xml

您将得到一个二进制文件。将其复制到

/usr/share/gnome-shell

现在使用以下命令重新启动 GDM

service gdm restart

如果不起作用或卡住,请重新启动计算机以查看新的登录壁纸:))

解决方案2

好的,正如所承诺的,有一种更简单的方法可以自动化这一切。只需将此脚本保存为login-background.sh

WORKDIR=~/tmp/gdm-login-background
GST=/usr/share/gnome-shell/gnome-shell-theme.gresource
GSTRES=$(basename $GST)

mkdir -p $WORKDIR
cd $WORKDIR
mkdir theme

for r in `gresource list $GST`; do
  gresource extract $GST $r >$WORKDIR$(echo $r | sed -e 's/^\/org\/gnome\/shell\//\//g')
done

cd theme
cp "$IMAGE" ./

echo "
#lockDialogGroup {
  background: #2e3436 url(resource:///org/gnome/shell/theme/$(basename $IMAGE));
  background-size: cover;
  background-repeat: no-repeat;
}" >>gnome-shell.css

echo '<?xml version="1.0" encoding="UTF-8"?>
<gresources>
  <gresource prefix="/org/gnome/shell/theme">' >"${GSTRES}.xml"
for r in `ls *.*`; do
  echo "    <file>$r</file>" >>"${GSTRES}.xml"
done
echo '  </gresource>
</gresources>' >>"${GSTRES}.xml"

glib-compile-resources "${GSTRES}.xml"

sudo mv "/usr/share/gnome-shell/$GSTRES" "/usr/share/gnome-shell/${GSTRES}.backup"
sudo mv "$GSTRES" /usr/share/gnome-shell/

rm -r $WORKDIR

if [ "$CREATED_TMP" = "1" ]; then
  rm -r ~/tmp
fi

使用运行脚本

IMAGE=~/Bat.jpg sh login-background.sh

现在使用重新启动 gdmservice gdm restart或重新启动笔记本电脑以获得新的登录背景:))

参考: https://wiki.archlinux.org/index.php/GDM

https://bbs.archlinux.org/viewtopic.php?id=197036

答案2

经过一些研究和测试后,我终于改变了我的登录背景,这些是我遵循的步骤:

1)我已经将我想要作为背景的文件放在 /usr/share/pictures 目录中(我自己创建了该目录)

2)我已经进入终端,并且作为 root 用户,我编辑了 /etc/gdm3/greeter.dconf-defaults 文件,如下所示:

[org/gnome/desktop/background]
picture-uri='file:///usr/share/Pictures/background.png'
picture-options='zoom'

[org/gnome/login-screen]
logo='/usr/share/icons/gnome/48x48/places/debian-swirl.png'
fallback-logo='/usr/share/icons/gnome/48x48/places/debian-swirl.png'
disable-user-list=true
disable-restart-buttons=true

(background.png是我的实际背景图片)

3)为了重新生成配置,我运行了“dpkg-reconfigure gdm3”和“dpkg-reconfigure gdebi-core”

答案3

目前最简单的解决方案可能是使用以下应用程序: https://github.com/juhaku/loginized笔记:我是这个应用程序的作者。

它是 GNOME GDM 登录主题管理器,它允许您更改登录主题和背景图像。该应用程序可能还会推出更多功能。

答案4

在另一个系统(SL7.4)上的一些测试显示出问题。

“extractgst.sh”不会生成“gnome-shell-theme.gresource.xml”,应在解决方案 1 的步骤 2 中对其进行编辑。如果添加解决方案 2 的“.xml”文件生成,您将获得检查所需的“xml”文件。

解决方案 2 脚本使用从未定义过的“$CREATED_TMP”。请删除完整的“if”语句。

在脚本中使用 sudo 时要小心。使用“/bin/su -”更改为根目录并运行,似乎首先需要手动执行脚本。

现在是 SL7(Centos/RHEL7 克隆)的特殊问题。 SL7 使用 SELinux 及其审计部分来生成系统安全性。如果这里的系统文件被脚本更改,SELinux 不知道它们并禁止使用这些文件,它没有关于什么导致登录时黑色背景的信息。可以通过对此目录递归使用“restorecon”命令来纠正此问题。注销后,您将获得所需的登录屏幕背景。

添加:应该对“/usr/share/gnome-shell”执行restorecon,因为这是资源目录。如果问题仍然存在,那么对用户的 gnome 目录执​​行 Restorecon 可能是有意义的。但对我来说,目前一切进展顺利。

相关内容