(Đã thử nghiệm trên Ubuntu Gnome Shell 16.04+)
Hai lối. Nếu bạn muốn biết chính xác những gì bạn đang làm, hãy làm theo Giải pháp số 1 . Nếu bạn muốn một tập lệnh duy nhất làm tất cả cho bạn, hãy làm theo Giải pháp số 2 (Tất cả đều thực hiện tự động hóa Giải pháp số 1)
Giải pháp 1
Thông tin nền: Nền đăng nhập Gnome không phải là thông số mà bạn có thể thay đổi trực tiếp (lạ!). Nó hiện diện trong tệp CSS Gnome Shell có trong tệp nhị phân. Do đó, bạn phải trích xuất tệp nhị phân, sửa đổi tệp và thay thế tệp nhị phân mới bằng tệp cũ.
Bước 1: Trích xuất tệp nhị phân shell Gnome
Chạy đoạn script sau extractgst.sh
để trích xuất chủ đề shell Gnome vào ~/shell-theme
thư mục
#!/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
Bước 2: Sửa đổi nó
- Sao chép hình nền của bạn vào thư mục này
~/shell-theme/theme
.
- Tạo tập tin
~/shell-theme/theme/gnome-shell-theme.gresource.xml
với nội dung
- Thay thế tên tệp bằng tên tệp hình ảnh nền của bạn
Bây giờ, mở gnome-shell.css
tệp trong thư mục và thay đổi #lockDialogGroup
định nghĩa như sau:
#lockDialogGroup {
background: #2e3436 url(filename);
background-size: [WIDTH]px [HEIGHT]px;
background-repeat: no-repeat;
}
Đặt tên tệp là tên của hình nền và kích thước nền cho độ phân giải của bạn.
Bước 3: Tạo nhị phân chủ đề vỏ Gnome mới và thay thế hiện có
Trong thư mục chủ đề, chạy
glib-compile-resources gnome-shell-theme.gresource.xml
Bạn sẽ nhận được một tập tin nhị phân. Sao chép nó vào
/usr/share/gnome-shell
Bây giờ khởi động lại GDM bằng
service gdm restart
Nếu nó không hoạt động hoặc bị kẹt, hãy khởi động lại máy tính của bạn để xem hình nền đăng nhập mới của bạn :))
Giải pháp 2
Ok, như đã hứa, có một cách đơn giản hơn để tự động hóa tất cả điều này. Chỉ cần lưu tập lệnh này dưới dạng 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
Chạy tập lệnh bằng cách sử dụng
IMAGE=~/Bat.jpg sh login-background.sh
Bây giờ khởi động lại gdm bằng cách sử dụng service gdm restart
hoặc khởi động lại máy tính xách tay cho nền đăng nhập mới của bạn :))
Tài liệu tham khảo:
https://wiki.archlinux.org/index.php/GDM
https://bbs.archlinux.org/viewtopic.php?id=197036