Изменить фон GDM

4498
tourdetour

Я использую Archlinux (Antergos) с установленными GDM и Gnome. Есть ли способ изменить фон GDM?

Задав фон экрана блокировки в настройках Gnome, он изменяет фон GDM только тогда, когда компьютер заблокирован, а не при входе в систему.

0

2 ответа на вопрос

1
tourdetour

GDM использует gresource, что означает, что мы не можем напрямую изменить фон, нам нужно перестроить файл .geresource.

Самый быстрый способ сделать это - использовать утилиту под названием archibold .

Чтобы установить его:

curl -L -O http://archibold.io/sh/archibold chmod +x archibold sudo mv archibold /usr/bin/ 

Чтобы использовать это:

sudo archibold login-background background.png 

Просто замените background.png на путь вашего нового фона. Затем вам нужно будет перезапустить GDM (например, путем перезагрузки).

Пришел сюда, чтобы сказать, что Archibold является устаревшим. На данный момент висит при загрузке на ф27. Zach 6 лет назад 0
1
Zach

Я нашел это решение здесь и написал скрипт для его автоматизации. Woo!

Создайте XML-файл из этой вставки с именем, ~/chgdm-bg-tmp/theme/gnome-shell-theme.gresource.xmlесли вы получаете сообщение об ошибке Could not find file gnome-shell-theme.gresource.xml.

Изменить: это сломалось, когда я обновил с gnome-shell 3.16 до 3.26. Причина была в том, что есть ресурсы, которые больше не используются, поэтому команда glib-compile-resources завершается неудачно. Если у вас есть ошибка, я предлагаю удалить строку: <file>more-results.svg</file>и тогда она должна скомпилироваться нормально.

#!/bin/bash  if [ -z "$1" ]; then echo "Usage: ./chgdm-bg <path/to/picture.png> [y/n]" exit 1 fi  echo MAKE SURE YOUR PICTURE IS THE SAME RESOLUTION AS YOUR SCREEN. echo If you dont you will likely regret it. sleep 3  if [ ! -f $1 ]; then echo Error: could not find file $1 exit 1 fi  PIC=$1 WORKDIR=$/chgdm-bg-tmp DATE=$(date +"%Y-%m-%d_%T")  if [ ! -d $WORKDIR ]; then mkdir -p $WORKDIR/theme fi  cd "$/theme" mkdir -p backups  IFS='/' read -r -a array <<< "$PIC" cp $PIC . PIC=$ echo "Target picture: $" chmod 777 $PIC  SHARE=/usr/share/gnome-shell/ GRESOURCE=gnome-shell-theme.gresource CSS=gnome-shell.css XMLRES=gnome-shell-theme.gresource.xml  if [ -f $$ ]; then echo Backing up $$... cp $$ "backups/$.bak.$" cp $$ $GRESOURCE printf "Unpacking binary resource..." for r in `gresource list $GRESOURCE`; do printf "." gresource extract $GRESOURCE $r >$WORKDIR/$ done echo WORKDIR="$/theme/"   if [ -f $ ]; then echo Backing up $... cp "$" "backups/$.bak.$" if [ -f "tmp" ]; then rm -f tmp fi touch tmp awk -v var="$PIC" '/gresource prefix="\/org\/gnome\/shell\/theme">/ { print; printf " <file>"; printf var; print "<\/file>"; next }1' $XMLRES > tmp && mv tmp $XMLRES #sed -n -i "/\ \ \ \ <file>$PIC<\/file>/d" $XMLRES #sed -n -i "/gresource prefix=\"\/org\/gnome\/shell\/theme\">/a \ \ \ \ <file>$PIC<\/file>" $XMLRES else echo Error: could not find file $ exit 1 fi  if [ -f $CSS ]; then echo Backing up $CSS... cp $CSS "backups/$.bak.$" sed -i 's/#lockDialogGroup/#lockDialogGroup-old/' $CSS printf "#lockDialogGroup {\n background: #2e3436 url($);\n background-repeat: no-repeat;\n background-size: cover; }\n" >> $CSS else echo Error: could not find file $CSS exit 1 fi  echo Compiling binary resources... glib-compile-resources $XMLRES echo Copying binary resources over to $... sudo cp $GRESOURCE "$$" sudo cp $CSS "$$"  if [ -z $2 ]; then echo "Restart now? (y/n)" read ans fi  if [ "$2" = "y" ] || [ "$ans" = "y" ]; then echo Restarting... for i in ; do echo $((6-i)) sleep 1 done #/usr/bin/gnome-session-quit --no-prompt #sudo pkill -u $USER sudo shutdown -r now else echo Restart to load your changes. fi else echo Error: could not find file $$ exit 1 fi