Gdm Arkaplan Görüntüsünü Değiştirme

Başlatan mhmtkrktr, 11 Ocak 2018 - 16:18:18

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mhmtkrktr


#!/usr/bin/bash

    TMP_DIR=$(dirname $(mktemp -u))
    TMP=$TMP_DIR/change_background
    rm -r $TMP 2>/dev/null; mkdir $TMP
    sudo echo

login_background_theme() {
  local GST=/usr/share/gnome-shell/gnome-shell-theme.gresource
  local GSTRES=$(basename $GST)
  local WORKDIR=${TMP}/gdm-login-background

  if [ -f ${GST}.backup ]; then
    sudo mv ${GST}.backup ${GST}
  fi
 
  mkdir -p $WORKDIR
  cd $WORKDIR
  mkdir -p theme

for r in $(gresource list $GST); do
    t="${r/#\/org\/gnome\/shell\/}"
    mkdir -p $(dirname $t)
    gresource extract $GST $r >$t
done

  cd theme
  cp "$IMAGE" ./
  sync
  IMAGE=$(basename $IMAGE)

  cat gnome-shell.css | \
  sed -e 's/#lockDialogGroup/#lockDialogGroup-ignore/g' >gnome-shell.tmp

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

  sync
  mv gnome-shell.tmp 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"
  sync
  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/
}

no_selected_image_file() {
    IMAGE_FILE=$(
      dbus-launch gsettings get org.gnome.desktop.background picture-uri |
      sed -e "s/'//g" |
      sed -e "s|^file:///||g"
    )
  if [ -f $IMAGE_FILE ]; then
      echo $IMAGE_FILE
  else
    exit 1
  fi
}
create_blur_effect() {
  if [[ $BLUR -gt 0 && $BLUR -le 100 ]]; then
    if type convert &>/dev/null; then
convert -blur 0x$BLUR $IMAGE_FILE $TMP/gdm_login.$FRM
    else
cp $IMAGE_FILE $TMP/gdm_login.$FRM
    fi
  else
    cp $IMAGE_FILE $TMP/gdm_login.$FRM
  fi

}

selected_image_file() {
  if [[ -n $IMAGE_FILE && -f $IMAGE_FILE ]]; then
    if grep -qi 'JPEG\|PNG' <<<$(file $IMAGE_FILE); then
        IMAGE_FILE=$IMAGE_FILE
    else
        IMAGE_FILE=$(no_selected_image_file)
    fi
  else
    IMAGE_FILE=$(no_selected_image_file)
  fi
    FRM=$(rev <<<$IMAGE_FILE|cut -d. -f1|rev)
}

  command_line=$(tr ' ' '\n' <<<$@)
    if grep -q '^/' <<<"$command_line"; then
IMAGE_FILE=$(grep '^/'<<< "$command_line")
    fi
selected_image_file
    if grep -q '\-b\=' <<<"$command_line"; then
BLUR=$(grep '\-b\='<<< "$command_line"|cut -d= -f2)
create_blur_effect
    else
cp $IMAGE_FILE $TMP/gdm_login.$FRM
    fi
IMAGE="$TMP/gdm_login.$FRM"

    if grep -q '\-k' <<<"$command_line"; then
sudo cp $IMAGE /usr/share/backgrounds/
gsettings set org.gnome.desktop.screensaver picture-uri \
"file:///usr/share/backgrounds/gdm_login.$FRM"
    fi
    if [[ $(sudo whoami) == root ]]; then
login_background_theme
    fi



Çalıştırma :
Kod içeriğini kopyalayın ve açılan pencere içine yapıştırıp kaydedin.
gedit gdm-background

Çalıştırma izni verin
chmod +x gdm-background


Kullanımı :
Betik argüman kullanılmadan verilirse masaüstü resmini gdm arkapalanı yapar.
./gdm-background

( resim yolu )
Aşağıda ki şekilde seçilen resmi gdm arkapalanı yapar.
Not: Yalnızca jpg ve png uzantılı resimler seçilebilir.
./gdm-background /falanca/dizin/resim.uzantı

( -b= )
Şu şekilde kullanılırsa seçilen resme %20 blur efekti uygular. (blur seviyesi 1 ile 100 arasında seçilebilir)
./gdm-background -b=20 /falanca/dizin/resim.uzantı

( -k )
Şu şekilde kullanılırsa seçilen resme %30 blur efekti uygular ve resmi aynı zamanda kilit ekranına atar.
./gdm-background -b=30 -k /falanca/dizin/resim.uzantı

Argümanlar isteğe bağlı olarak tek tek uygulanabilir.

lnxdev

[mention=635517]@mhmtkrktr[/mention], bu yararlı paylaşımın için teşekkürler. Buradaki arkadaşların işine yarıyacağını düşünüyorum. Bu arada siz mi yazdınız betiği?

mhmtkrktr

[mention=635521]@lnxdev[/mention]; ben teşekkür ederim.
login_background_theme fonksiyonu archibold betiğinden alıntı. Fakat o betik güncelliğini yitirmiş. Bununla ilgili fonksiyon çalışmıyordu. İçerisinde çok fazla düzenleme yaptığım için kaynak belirtme gereği duymadım. Diğer fonksiyonlarla da kullanışlığını arttırmaya çalıştım. İşine yarayan olursa dilediğince kullanabilir.

Bu arada bir kaç not ekleyeyim.

Gnome-shell paketi güncellendiği zaman içerik sıfırlanacaktır. Güncel paket ile yeniden düzenleme yapmadan önce /usr/share/gnome-shell/gnome-shell-theme.gresource.backup dosyasının silinmesi iyi olur. Şimdi farkettiğim için bunu eklememişim. Shell versiyon bilgisini tutan bir dosya ekleyip, düzenleme yaparım daha sonra.

Betik çalıştırıldıktan sonra, sonucu görmek için gdm yeniden başlatılmalıdır. Yani oturumu kapatmak yeterli olmaz, yeniden başlatma gerekir.

UNC

Güzel script olmuş teşekkürler @mhmtkrktr

hitokiri

#4
 Peh, bu ne sürat. Eline sağlık, @mhmtkrktr.

mhmtkrktr

Alıntı YapPeh, bu ne sürat. Eline sağlık, @mhmtkrktr.

Süratten değil kardeşim o, avarelikten.  :) Kış günü klimanın önünde mayışmaktan sıkıldığım bir zamana denk gelmiş konu  ;D

hitokiri

Alıntı yapılan: mhmtkrktr - 20 Ocak 2018 - 01:20:19
Alıntı YapPeh, bu ne sürat. Eline sağlık, @mhmtkrktr.

Süratten değil kardeşim o, avarelikten.  :) Kış günü klimanın önünde mayışmaktan sıkıldığım bir zamana denk gelmiş konu  ;D
Olsun olsun, ben öveyim de. :D Böyle avareliğe ceket iliklenir.  ;D Ne kadar iyi anladığımı anlatamam, ne demek istediğini.  ;D ;D

mhmtkrktr

Eyvallah, sağolasın.
Aynı dertten muzdaribiz anlaşılan. Hava yat diyor, benim gözüm pencerede  :D  :D