Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
tutoriel:changer_arriere_plan_gdm [Le 23/06/2019, 13:39]
zococo [Un script pour automatiser la modification de l'écran de connexion]
tutoriel:changer_arriere_plan_gdm [Le 07/07/2019, 20:15] (Version actuelle)
zococo [Un script pour automatiser la modification de l'écran de connexion]
Ligne 79: Ligne 79:
  
 ==== Un script pour automatiser la modification de l'​écran de connexion ==== ==== Un script pour automatiser la modification de l'​écran de connexion ====
-Un ubuntero belge propose sur son [[http://​c-nergy.be/​blog/?​p=11556|site]] en anglais un script permettant d'​automatiser ces modifications en mode graphique. Le script utilise le paquet [[:zenity|zenity]] pour fonctionner.+Un ubuntero belge propose sur son [[http://​c-nergy.be/​blog/?​p=11556|site]] en anglais un script permettant d'​automatiser ces modifications en mode graphique. Le script utilise le paquet [[:yad|yad]] pour fonctionner.
 <​code>​ <​code>​
 +#!/bin/bash
 + lesFichiersCss=( "/​etc/​alternatives/​gdm3.css"​ "/​usr/​share/​gnome-shell/​theme/​gdm3.css" ​ "/​usr/​share/​gnome-shell/​theme/​Yaru/​gnome-shell.css"​ "/​usr/​share/​gnome-shell/​theme/​gnome-shell.css"​ )
 + repDestImageDeFond="/​usr/​share/​backgrounds/"​
 +
 + if [[ "​${repDestImageDeFond:​ -1}" != "/"​ ]]; then #​ Chemin doit se terminer par /
 + repDestImageDeFond="​$repDestImageDeFond""/"​
 + fi
 +
 ################################################################​ ################################################################​
 # Script_Name : Modification-fond-d-ecran-Gdm-1.0.sh # Script_Name : Modification-fond-d-ecran-Gdm-1.0.sh
 # Description : Personnalisation du fond d'​écran de la fenêtre de connexion de GDM sur Ubuntu 19.04 # Description : Personnalisation du fond d'​écran de la fenêtre de connexion de GDM sur Ubuntu 19.04
-# Date : December 2017+# Date : December 2017 - revu juillet 2019
 # écrit par : Griffon (traduit en français et un peu revu lors de sa publication sur le site ubuntu-fr.org) # écrit par : Griffon (traduit en français et un peu revu lors de sa publication sur le site ubuntu-fr.org)
 # Web Site :​http://​www.c-nergy.be - http://​www.c-nergy.be/​blog # Web Site :​http://​www.c-nergy.be - http://​www.c-nergy.be/​blog
Ligne 96: Ligne 104:
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
  
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"+/bin/echo -e "​\e[1;​32m###########################################################​\e[0m"
 /bin/echo -e "​\e[1;​32mModification-fond-d-ecran-Gdm-1.0.sh\e[0m"​ /bin/echo -e "​\e[1;​32mModification-fond-d-ecran-Gdm-1.0.sh\e[0m"​
-/bin/echo -e "​\e[1;​32mwritten by Griffon - December 2017 - Version 1.0 - Modification-fond-d-ecran-Gdm-1.0.sh\e[0m"​+/bin/echo -e "​\e[1;​32m"​$(basename "​$0"​)"​\e[0m"​ 
 +/bin/echo -e "​\e[1;​32mwritten by Griffon - December 2017 - Version 1.0 - modifié juillet 2019 - Modification-fond-d-ecran-Gdm-1.0.sh\e[0m"​
 /bin/echo -e "​\e[1;​32mTraduit en français et un peu revu lors de sa publication sur le site ubuntu-fr.org\e[0m"​ /bin/echo -e "​\e[1;​32mTraduit en français et un peu revu lors de sa publication sur le site ubuntu-fr.org\e[0m"​
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"+/bin/echo -e "​\e[1;​32m###########################################################​\e[0m"
 echo echo
  
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-# Étape 1 - Vérification de la présence du paquet zenity+# Étape 1 - Vérification de la présence du paquet ​yad (zenity ​utilisé dans le script initial, yad est un "​fork"​ plus puissant)
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-if [[ $(dpkg -s zenity ​2>/​dev/​null | grep Status | cut -d' ' -f4) != "​installed"​ ]];  +if [[ $(dpkg -s yad 2>/​dev/​null | grep Status | cut -d' ' -f4) != "​installed"​ ]]; then 
-  ​zenity ​--error --title="​Installez le paquet ​zenity" --text="​Le paquet <b>zenity</b> est nécessaire au bon fonctionnement de ce script.\n\nInstallez le paquet par <​b>​sudo apt-get install ​zenity</​b>​\n\nArrêt du traitement" ​--width=400+  ​yad --image=error --title="​Installez le paquet ​yad" --text="​Le paquet <b>yad</b> est nécessaire au bon fonctionnement de ce script.\n\nInstallez le paquet par <​b>​sudo apt-get install ​yad</​b>​\n\nArrêt du traitement. Erreur 10." 
   exit 10;   exit 10;
 fi fi
 +
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-# Étape 2 - Choix de l'​image retenue.... ​+# Étape 2 - Choix du fichier css à modifier
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
 + # Index des fichiers
 + NombreDeFichiersPotentiels="​${#​lesFichiersCss[@]}"​
 + if [[ "​$NombreDeFichiersPotentiels"​ -gt "​0"​ ]]; then
 + listeIndexFichiersPotentiels="​0"​
 + compteur=1 ​
 + while [[ "​$compteur"​ -lt "​$NombreDeFichiersPotentiels"​ ]]; do 
 + listeIndexFichiersPotentiels="​$listeIndexFichiersPotentiels""​ ""​$compteur";​
 + let "​compteur++"; ​
 + done;
 + else
 + yad --image=error --title="​Aucun fichier à modifier"​ --text="​Aucun chemin de fichier css n'a été indiqué.\nArrêt du traitement.\nErreur 20." 2>/​dev/​null
 + exit 20;
 + fi
  
-echo + #​ Constitution de la liste des éléments à afficher par yad  
-/bin/echo -e "\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m+ ResultatAnalyse=""​ 
-/bin/echo -e "\e[1;32mChoix du fond d'​écran...En cours\e[0m"​ + for i in $listeIndexFichiersPotentielsdo
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"​ +
-echo+
  
-pix=$(zenity ​--file-selection --title="Choisissez le nouveau fond d'​écran de la fenêtre de connexion")+ if [[ -f "${lesFichiersCss[$i]}"​ ]]; then 
 + Present["​$i"​]="​0"​ 
 + if [[ -L "​${lesFichiersCss[$i]}"​ ]]; then 
 + FichierLien["​$i"​]="​0"​ 
 + else 
 + FichierLien["​$i"​]="​1"​ 
 + fi 
 + else 
 + Present["​$i"​]="​1"​ 
 + FichierLien["​$i"​]="1" 
 + fi
  
-# get just name of the file  + if [[ "​$ResultatAnalyse"​ == ""​ ]]; then 
-fname=$(basename ​$pix)+ ResultatAnalyse="​False ​${lesFichiersCss[$i]} £${Present[$i]}£ £${FichierLien[$i]}£"​ 
 + else 
 + ResultatAnalyse="​$ResultatAnalyse False ${lesFichiersCss[$i]} £${Present[$i]}£ £${FichierLien[$i]}£"​ 
 + fi 
 + done
  
-repDest="/usr/share/background/"+ ResultatAnalyse=$(echo ​"$ResultatAnalyse"​ | sed 's/£1£/Non/g;s/£0£/​Oui/​g'​)
  
-if [[ -"$repDest$fname" ​]]; then  # Si une image du même nom existe déjà dans le répertoire de destination+ #​ Affichage de la fenêtre de choix 
 + Selection=$(yad ​--title="Fichier CSS à modifier" ​--width 800 --height 200 --text-align="​center"​ --list --radiolist --column="​Sélectionné"​ --column="​Fichier"​ --column="​Présent sur le disque"​ --column="​Fichier lien" $ResultatAnalyse 2>/​dev/​null)
  
-  NvNom=$(zenity --entry --title="Le fichier image existe déjà" ​--text="Une image portant le nom $fname existe déjà dans le répertoire $repDest.\n Saisissez un nouveau nom :");  + # Abandon par l'​utilisateur #############​ 
-   + retour="$?" 
-  while [[ "${NvNom: -3}" == "${fname: -3}" ]]; do + if [[ "​$retour" ​== "1" ​]] || [[ "$retour" == "252" ]] ; then 
-   + echo "Arrêt. Traitement terminé. Erreur 30."; 
-    NomPropose="${NvNom:0: -3}${fname: -3}"; + yad --image=error ​--title="Abandon" --text="Vous avez abandonné.\nArrêt ​du traitement.\nErreur 30." ​2>/​dev/​null 
-    ​zenity ​--question ​--text="Saisie incorrecte. Acceptez vous le nom suivant : \n<​b>​$NomPropose</​b>​" --title="Erreur de suffixeModification ​du nom du fichier image" ​--width=400 + exit 30 
-     + fi 
-    if [[ "​$?"​ != "​0"​ ]]; then + ###########################################​
-      ​exit 20 +
-    ​else +
-      NvNom="​$NomPropose"​ +
-    ​fi +
-     +
-  done +
-   +
-  fname="​$NvNom"​ +
-   +
-fi+
  
-echo $fname+ LeFichierCSS=$(echo "​$Selection"​ | cut -d'​|'​ -f2) 
 + echo "Le fichier $LeFichierCSS sera modifié"​ 
 + 
 + #​ Contrôle de sécurité. Est-ce que le fichier existe ? 
 + if [[ ! -e "​$LeFichierCSS"​ ]]; then  
 + echo "​Erreur dans le nom du fichier. $LeFichierCSS n'​existe pas. Arrêt du traitement. Erreur 40." 
 + yad --image=error --title="​Abandon"​ --text="​$LeFichierCSS n'​existe pas.\nArrêt du traitement.\nErreur 40." 2>/​dev/​null 
 + exit 40 ; 
 + fi
  
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-# Étape ​Copie du fichier ​image dans le répertoire /​usr/​share/​background+# Étape ​Choix de l'image retenue.... ​
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
  
 echo echo
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"​ +/bin/echo -e "​\e[1;​32m###########################################################​\e[0m"​ 
-/bin/echo -e "\e[1;32mCopie ​du fichier dans le répertoire /​usr/​share/​background....En cours\e[0m"​ +/bin/echo -e "\e[1;32mChoix ​du fond d'​écran...En cours\e[0m"​ 
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"+/bin/echo -e "​\e[1;​32m###########################################################​\e[0m"
 echo echo
  
-sudo cp "$pix" "$repDest$fname"+ ImageDeFondOriginelle=$(yad --file --title="​Choisissez le nouveau fond d'​écran de la fenêtre de connexion"​ --filename="$HOME/​.local/​share/​backgrounds/​*" ​2>/​dev/​null) 
 + 
 + # Abandon par l'​utilisateur #############​ 
 + retour="$?" 
 + if [[ "​$retour"​ == "​1"​ ]] || [[ "​$retour"​ == "​252"​ ]] ; then 
 + echo "​Arrêt. Traitement terminé. Erreur 50.";​ 
 + yad --image=error --title="​Abandon"​ --text="​Vous avez abandonné.\nArrêt du traitement.\nErreur 50." 2>/​dev/​null 
 + exit 50 ; 
 + fi 
 + 
 + echo "Le fond d'​écran choisi est : ""​$ImageDeFondOriginelle"​ 
 + 
 + ###########################################​  
 + 
 + # Récupération du nom court du fichier 
 + NomImageDeFond=$(basename $ImageDeFondOriginelle) 
 + NomImageDeFond="​${NomImageDeFond%${NomImageDeFond:​ -4}}"​ 
 + NomImageDeFond="​${NomImageDeFond%640x480}"​ 
 + NomImageDeFond="​$NomImageDeFond""​640x480.png"​ 
 + 
 + if [[ -e "​$repDestImageDeFond$NomImageDeFond"​ ]]; then # Si une image du même nom existe déjà dans le répertoire de destination 
 + echo "​$repDestImageDeFond$NomImageDeFond existe déjà."​ 
 + index=0 
 + while [[ -e "​$repDestImageDeFond$NomPropose"​ ]]; do   
 + NomPropose=$(basename $ImageDeFondOriginelle) 
 + NomPropose="​${NomPropose%${NomPropose:​ -4}}"​ 
 + NomPropose="​${NomPropose%640x480}"​ 
 + NomPropose="​$NomPropose""​640x480_""​$index""​.png"​ 
 + let "​index++"​ 
 + done 
 + 
 + yad --image=important --text="​Saisie incorrecte. Une image à ce nom existe déjà. Acceptez vous le nom suivant ? : \nEn cliquant sur <​connserver>​ l'​image existante sera utilisée en lieu et place de celle que vous avez sélectionnée à l'​étape précédente<​b>​$NomPropose</​b>"​ --title="​Modification du nom du fichier image" --width=500 --button="​Annuler"​\!gtk-no:​1 --button="​Conserver":​2 --button="​Accepter le nouveau nom"​\!gtk-ok:​0 2>/​dev/​null 
 + # Abandon par l'​utilisateur #############​ 
 + retour="​$?"​ 
 + if [[ "​$retour"​ == "​1"​ ]] || [[ "​$retour"​ == "​252"​ ]] ; then 
 + echo "​Arrêt. Traitement terminé. Erreur 60.";​ 
 + yad --image=error --title="​Abandon"​ --text="​Vous avez abandonné.\nArrêt du traitement.\nErreur 60." 2>/​dev/​null 
 + exit 60 ; 
 + ###########################################​ 
 + 
 + elif [[ "​$retour"​ == "​0"​ ]] ; then # On n'​utilise pas une image existante 
 + NomImageDeFond="​$NomPropose"​ 
 + 
 + elif [[ "​$retour"​ != "​2"​ ]] ; then #​ autre cas -> pb 
 + echo "​Erreur yad. Erreur 70." 
 + yad --image=error --title="​Erreur"​ --text="​Yad a rencontré un problème.\nArrêt du traitement.\nErreur 70." 2>/​dev/​null 
 + exit 70 ; 
 + fi 
 + 
 + NomCompletImageDeFond="​$repDestImageDeFond$NomImageDeFond"​ 
 +  
 + fi 
 + 
 + #​ Contrôle de sécurité. Est-ce que le fichier existe ? 
 + if [[ ! -e "​$ImageDeFondOriginelle"​ ]]; then  
 + echo "​Erreur dans le nom du fichier. $ImageDeFondOriginelle n'​existe pas. Arrêt du traitement. Erreur 80." 
 + yad --image=error --title="​Le fichier n'​existe pas" --text="​$ImageDeFondOriginelle n'​existe pas.\nArrêt du traitement.\nErreur 80." ​2>/​dev/​null 
 + exit 80 ; 
 + fi
  
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-# Étape ​Choix du fichier ​css+# Étape ​Copie du fichier ​image dans le répertoire /​usr/​share/​background ($repDestImageDeFond) 
 +# Je convertis en 640x480, c'est probablement inutile
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
  
-fichierCSS=$(zenity --title ​"Choix du fichier .css à modifier"​ --width 500 --height 200 --list ​ --text "​Selectionner le fichier .css à modifier : " --radiolist ​ --column "​Choix"​ --column "​Chemin complet"​ TRUE " /​etc/​alternatives/​gdm3.css"​ FALSE "/​usr/​share/​gnome-shell/​theme/​gdm3.css"​ FALSE "/​usr/​share/​gnome-shell/​theme/​Yaru/​gdm3.css"​ FALSE "/​usr/​share/​gnome-shell/​theme/​gnome-shell.css")+ if [[ "$retour" ​!= "2" ​]]; then #​ Evidemment si on utilise une image déjà présente, on saute l'​étape 3
  
 + echo
 + /bin/echo -e "​\e[1;​32m###########################################################​\e[0m"​
 + /bin/echo -e "​\e[1;​32mCopie du fichier dans le répertoire $repDestImage...En cours\e[0m"​
 + /bin/echo -e "​\e[1;​32m###########################################################​\e[0m"​
 + echo
 +
 + sudo convert -geometry 640x480 "​$ImageDeFondOriginelle"​ "​$NomCompletImageDeFond"​
 + if [[ "​$?"​ != "​0"​ ]]; then
 + echo "​Erreur convert. Erreur 90."
 + yad --image=error --title="​Erreur"​ --text="​Convert a rencontré un problème.\nArrêt du traitement.\nErreur 90." 2>/​dev/​null
 +   exit 90 ;
 + fi
 +
 + echo "​Conversion de $ImageDeFondOriginelle en $NomCompletImageDeFond"​
 +
 + fi
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-# Étape ​- Mise à jour du fichier css+# Étape ​- Mise à jour du fichier css
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
  
-echo + echo 
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"​ + /bin/echo -e "​\e[1;​32m###########################################################​\e[0m"​ 
-/bin/echo -e "​\e[1;​32mMise à jour du fichier ​gdm3.css....En cours\e[0m"​ + /bin/echo -e "​\e[1;​32mMise à jour du fichier ​$LeFichierCSS....En cours\e[0m"​ 
-/bin/echo -e "​\e[1;​32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m"​ + /bin/echo -e "​\e[1;​32m###########################################################​\e[0m"​ 
-echo+ echo
  
-if [[ ! -e "$fichierCSS""​.anc"​ ]]; then   # ​ Conservation de toutes les versions du fichier modifié + if [[ ! -e "$LeFichierCSS""​.anc"​ ]]; then   # ​ Conservation de toutes les versions du fichier modifié 
-   ​sudo cp "$fichierCSS" ​ "$fichierCSS""​.anc"​ + sudo cp "$LeFichierCSS" ​ "$LeFichierCSS""​.anc"​ 
-else + if [[ "​$?"​ != "​0"​ ]]; then 
-   ​i=0 + echo "​Erreur cp. Erreur 100."​ 
-   ​while [[ ! -e ""$fichierCSS""​.anc""​$i"​ ]]; do + yad --image=error --title="​Erreur"​ --text="​cp a rencontré un problème.\nArrêt du traitement.\nErreur 100." 2>/​dev/​null 
-     ​let "​i+=1"​ +   exit 100 ; 
-   ​done + fi 
-      sudo cp "$fichierCSS" ​ "$fichierCSS""​.anc""​$i"​ + echo "​Création du fichier de sauvegarde ""​$LeFichierCSS""​.anc"​ 
-fi + else 
-sudo sed -i "/#​lockDialogGroup/​a background: #2c001e url(file:///​usr/​share/​backgrounds/${fname});​\nbackground-repeat:​ no-repeat;​\nbackground-size:​ cover;​\nbackground-position:​ center;\n}\nGriffonToDel" /etc/alternatives/​gdm3.css  ​ + i=0 
-sudo sed -i '/GriffonToDel/,+2d' /etc/alternatives/​gdm3.css ​+ while [[ ! -e "$LeFichierCSS""​.anc""​$i"​ ]]; do 
 + let "​i+=1"​ 
 + done 
 + sudo cp "$LeFichierCSS" ​ "$LeFichierCSS""​.anc""​$i"​ 
 + if [[ "​$?"​ != "​0"​ ]]; then 
 + echo "​Erreur cp. Erreur 110."​ 
 + yad --image=error --title="​Erreur"​ --text="​cp a rencontré un problème.\nArrêt du traitement.\nErreur 110." 2>/​dev/​null 
 +   exit 110 ; 
 + fi 
 + echo "​Création du fichier de sauvegarde ""​$LeFichierCSS""​.anc""​$i"​ 
 + fi 
 + 
 + sudo sed -i "/#​lockDialogGroup/​a background: #2c001e url(file://​${NomCompletImageDeFond});​\nbackground-repeat:​ no-repeat;​\nbackground-size:​ cover;​\nbackground-position:​ center;\n}\nTexteAEffacerParLeScript" ​"​$LeFichierCSS"​ 
 + if [[ "​$?"​ != "​0"​ ]]; then 
 + echo "​Erreur sed. Erreur 120."​ 
 + yad --image=error --title="​Erreur"​ --text="​sed a rencontré un problème.\nArrêt du traitement.\nErreur 120." 2>/dev/null 
 +   exit 120 ; 
 + fi 
 + sudo sed -i '/TexteAEffacerParLeScript/,​+2d' ​"​$LeFichierCSS"​ 
 + if [[ "​$?"​ != "​0"​ ]]; then 
 + echo "​Erreur sed. Erreur 130."​ 
 + yad --image=error --title="​Erreur"​ --text="​sed a rencontré un problème.\nArrêt du traitement.\nErreur 120." 2>/dev/null 
 +   exit 130 ; 
 + fi
  
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
-# Étape ​- Invite de l'​utilisateur à réinitialiser le système+# Étape ​- Invite de l'​utilisateur à réinitialiser le système
 #​---------------------------------------------------#​ #​---------------------------------------------------#​
  
-echo + echo 
-echo "Vous devez redémarrer votre appareil pour voir les effets de la mise à jour....:​-)"​ + echo "Vous devez redémarrer votre appareil pour voir les effets de la mise à jour....:​-)"​ 
-echo+ echo 
 +  
 + 
 + yad --text "Il faut redémarrer votre session pour prendre en compte vos modifications.\nVoulez vous : " --button="​Ne rien faire"​\!gtk-no:​1 --button="​Redémarrer":​2 --button="​Fermer la session":​0 2>/​dev/​null 
 + retour="​$?"​ 
 + case "​$retour"​ in 
 + "​0"​ ) 
 + pkill -9 -u "​$USER"​ 
 + ;; 
 + "​2"​ ) 
 + sudo reboot 
 + esac 
 + 
 +exit 0; 
 </​code>​ </​code>​
 Une copie de sauvegarde du fichier sauvegardé est réalisée. Une copie de sauvegarde du fichier sauvegardé est réalisée.
  • tutoriel/changer_arriere_plan_gdm.txt
  • Dernière modification: Le 07/07/2019, 20:15
  • par zococo