(Testowane na Ubuntu Gnome Shell 16.04+)
Dwie drogi. Jeśli chcesz wiedzieć, co dokładnie robisz, wykonaj Rozwiązanie nr 1 . Jeśli chcesz, aby pojedynczy skrypt zrobił wszystko za Ciebie, postępuj zgodnie z rozwiązaniem 2 (wszystko to automatyzuje rozwiązanie 1)
Rozwiązanie 1
Informacje w tle: Tło logowania do Gnome nie jest parametrem, który można zmienić bezpośrednio (dziwne!). Jest obecny w pliku CSS Gnome Shell, który jest obecny w pliku binarnym. Dlatego musisz wyodrębnić plik binarny, zmodyfikować go i zastąpić nowy plik binarny starym plikiem.
Krok 1: Wyodrębnienie pliku binarnego powłoki Gnome
Uruchom następujący skrypt, extractgst.sh
aby wyodrębnić motyw powłoki Gnome do ~/shell-theme
katalogu
#!/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
Krok 2: Modyfikacja
- Skopiuj obraz tła do tego folderu
~/shell-theme/theme
.
- Utwórz plik
~/shell-theme/theme/gnome-shell-theme.gresource.xml
z zawartością
- Zamień nazwę pliku na nazwę pliku obrazu tła
Teraz otwórz gnome-shell.css
plik w katalogu i zmień #lockDialogGroup
definicję w następujący sposób:
#lockDialogGroup {
background: #2e3436 url(filename);
background-size: [WIDTH]px [HEIGHT]px;
background-repeat: no-repeat;
}
Ustaw nazwę pliku jako nazwę obrazu tła i rozmiar tła do swojej rozdzielczości.
Krok 3: Utwórz nowy plik binarny motywu powłoki Gnome i zastąp go istniejącym
W katalogu motywów uruchom
glib-compile-resources gnome-shell-theme.gresource.xml
Otrzymasz plik binarny. Skopiuj do
/usr/share/gnome-shell
Teraz uruchom ponownie GDM za pomocą
service gdm restart
Jeśli nie działa lub utknął, uruchom ponownie komputer, aby zobaczyć nową tapetę logowania :))
Rozwiązanie 2
Ok, zgodnie z obietnicą, istnieje prostszy sposób na zautomatyzowanie tego wszystkiego. Po prostu zapisz ten skrypt jako 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
Uruchom skrypt za pomocą
IMAGE=~/Bat.jpg sh login-background.sh
Teraz uruchom ponownie gdm za pomocą service gdm restart
lub uruchom ponownie laptopa dla nowego tła logowania :))
Odnośniki:
https://wiki.archlinux.org/index.php/GDM
https://bbs.archlinux.org/viewtopic.php?id=197036