Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
tutoriel:changer_arriere_plan_gdm [Le 23/06/2019, 13:18] zococo [Le fichier CSS] |
tutoriel:changer_arriere_plan_gdm [Le 07/07/2019, 20:15] 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 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 | ||
+ | |||
+ | # Constitution de la liste des éléments à afficher par yad | ||
+ | ResultatAnalyse="" | ||
+ | for i in $listeIndexFichiersPotentiels; do | ||
+ | |||
+ | 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 | ||
+ | |||
+ | if [[ "$ResultatAnalyse" == "" ]]; then | ||
+ | ResultatAnalyse="False ${lesFichiersCss[$i]} £${Present[$i]}£ £${FichierLien[$i]}£" | ||
+ | else | ||
+ | ResultatAnalyse="$ResultatAnalyse False ${lesFichiersCss[$i]} £${Present[$i]}£ £${FichierLien[$i]}£" | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | ResultatAnalyse=$(echo "$ResultatAnalyse" | sed 's/£1£/Non/g;s/£0£/Oui/g') | ||
+ | |||
+ | # 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) | ||
+ | |||
+ | # Abandon par l'utilisateur ############# | ||
+ | retour="$?" | ||
+ | if [[ "$retour" == "1" ]] || [[ "$retour" == "252" ]] ; then | ||
+ | echo "Arrêt. Traitement terminé. Erreur 30."; | ||
+ | yad --image=error --title="Abandon" --text="Vous avez abandonné.\nArrêt du traitement.\nErreur 30." 2>/dev/null | ||
+ | exit 30 ; | ||
+ | fi | ||
+ | ########################################### | ||
+ | |||
+ | 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 2 - Choix de l'image retenue.... | # Étape 2 - Choix de l'image retenue.... | ||
Ligne 115: | Ligne 190: | ||
echo | echo | ||
- | /bin/echo -e "\e[1;32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m" | + | /bin/echo -e "\e[1;32m###########################################################\e[0m" |
/bin/echo -e "\e[1;32mChoix du fond d'écran...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 | ||
- | pix=$(zenity --file-selection --title="Choisissez le nouveau fond d'écran de la fenêtre de connexion") | + | ImageDeFondOriginelle=$(yad --file --title="Choisissez le nouveau fond d'écran de la fenêtre de connexion" --filename="$HOME/.local/share/backgrounds/*" 2>/dev/null) |
- | # get just name of the file | + | # Abandon par l'utilisateur ############# |
- | fname=$(basename $pix) | + | 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 | ||
- | repDest="/usr/share/background/" | + | echo "Le fond d'écran choisi est : ""$ImageDeFondOriginelle" |
- | if [[ -e "$repDest$fname" ]]; then # Si une image du même nom existe déjà dans le répertoire de destination | + | ########################################### |
- | 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 :"); | + | # Récupération du nom court du fichier |
- | + | NomImageDeFond=$(basename $ImageDeFondOriginelle) | |
- | while [[ "${NvNom: -3}" == "${fname: -3}" ]]; do | + | NomImageDeFond="${NomImageDeFond%${NomImageDeFond: -4}}" |
- | | + | NomImageDeFond="${NomImageDeFond%640x480}" |
- | NomPropose="${NvNom:0: -3}${fname: -3}"; | + | NomImageDeFond="$NomImageDeFond""640x480.png" |
- | zenity --question --text="Saisie incorrecte. Acceptez vous le nom suivant : \n<b>$NomPropose</b>" --title="Erreur de suffixe. Modification du nom du fichier image" --width=400 | + | |
- | + | ||
- | if [[ "$?" != "0" ]]; then | + | |
- | exit 20 ; | + | |
- | else | + | |
- | NvNom="$NomPropose" | + | |
- | fi | + | |
- | + | ||
- | done | + | |
- | + | ||
- | fname="$NvNom" | + | |
- | + | ||
- | fi | + | |
- | echo $fname | + | 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 3 - Copie du fichier image dans le répertoire /usr/share/background | + | # Étape 3 - Copie du fichier image dans le répertoire /usr/share/background ($repDestImageDeFond) |
+ | # Je convertis en 640x480, c'est probablement inutile | ||
#---------------------------------------------------# | #---------------------------------------------------# | ||
- | echo | + | if [[ "$retour" != "2" ]]; then # Evidemment si on utilise une image déjà présente, on saute l'étape 3 |
- | /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;32m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\e[0m" | + | |
- | echo | + | |
- | sudo cp "$pix" "$repDest$fname" | + | 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 4 - Mise à jour du fichier css | # Étape 4 - 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 "/etc/alternatives/gdm3.css.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 /etc/alternatives/gdm3.css /etc/alternatives/gdm3.css.anc | + | sudo cp "$LeFichierCSS" "$LeFichierCSS"".anc" |
- | else | + | if [[ "$?" != "0" ]]; then |
- | i=0 | + | echo "Erreur cp. Erreur 100." |
- | while [[ ! -e "/etc/alternatives/gdm3.css.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 |
- | fi | + | echo "Création du fichier de sauvegarde ""$LeFichierCSS"".anc" |
- | 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 | + | else |
- | sudo sed -i '/GriffonToDel/,+2d' /etc/alternatives/gdm3.css | + | i=0 |
+ | 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 5 - Inviter l'utilisateur à réinitialiser le système | + | # Étape 5 - 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. |