(Проверено на Ubuntu Gnome Shell 16.04+)
Два пути. Если вы хотите знать, что именно вы делаете, следуйте решению № 1 . Если вы хотите, чтобы один сценарий сделал все за вас, следуйте Решению № 2 (Все, что он делает, автоматизирует Решение № 1)
Решение 1
Справочная информация: Gnome Login Background - это не параметр, который вы можете изменить напрямую (странно!). Он присутствует в CSS-файле Gnome Shell, который присутствует в двоичном файле. Следовательно, вы должны извлечь двоичный файл, изменить его и заменить новый двоичный файл старым файлом.
Шаг 1: Извлечение двоичного файла оболочки Gnome
Запустите следующий скрипт extractgst.sh
для извлечения темы оболочки Gnome в ~/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
Шаг 2: его изменение
- Скопируйте фоновое изображение в эту папку
~/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 и замените существующий
Внутри директории темы запустите
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
Теперь перезапустите GDM с помощью service gdm restart
или перезагрузите ноутбук для вашего нового фона входа :))
Ссылки:
https://wiki.archlinux.org/index.php/GDM
https://bbs.archlinux.org/viewtopic.php?id=197036