Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/12/2014, à 20:29

PowaBanga

créer fichier texte en complètant un liste

Mon titre n'est sans doute pas très clair, mais j'aimerais créer automatiquement un script sur base de cette commande :

find $HOME/Images/wallpapers -type f | shuf -n1

La difficulté étant que j'aimerais insérer automatiquement du texte entre les lignes de la sorte suivante :

#!/bin/bash
gsettings set org.gnome.desktop.background picture-uri "file://Wallpaper1"
WALLPAPER=Wallpaper2
$WALLPAPER
$WALLPAPER()
{
gsettings set org.gnome.desktop.background picture-uri "file://$WALLPAPER"
sleep 450
WALLPAPER=Wallpaper3
}
$WALLPAPER()
{
gsettings set org.gnome.desktop.background picture-uri "file://$WALLPAPER"
sleep 450
WALLPAPER=Wallpaper4
}
$WALLPAPER()
{
gsettings set org.gnome.desktop.background picture-uri "file://$WALLPAPER"
sleep 450
WALLPAPER=Wallpaper5
}
rm -rf ~/monscript
echo "SCRIPT" -> ~/monscript

Je pense que les script expliquent parfaitement bien ce que je souhaite faire, mais je ne sais pas du tout comment, donc ça serait super top si quelqu'un savait m'aider :-)

Dernière modification par PowaBanga (Le 12/12/2014, à 20:30)

Hors ligne

#2 Le 12/12/2014, à 23:15

Compte anonymisé

Re : créer fichier texte en complètant un liste

étrange le script, personnellement j'ai rien compris, c'est supposé faire quoi ? changer de fond d'écran aléatoirement tout les 450 secondes ?

si c'est ça je te propose celui là en remplacement

#!/bin/bash
while true
do
wallpaper=$(find $HOME/Images/wallpapers -type f | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$wallpaper"
sleep 450
done

Et où veut tu rajouter des lignes ? Dans le script lui même ? Pourquoi faire ?

#3 Le 13/12/2014, à 13:15

PowaBanga

Re : créer fichier texte en complètant un liste

ben en fait l'idée c'est de faire une playliste, pour être sûr qu'il ait affiché tous mes wallpaper une fois avant d'en remettre une  qu'il a peut-être déjà mis une demi heure plus tot...

Hors ligne

#4 Le 13/12/2014, à 13:24

Watael

Re : créer fichier texte en complètant un liste

salut,

il faudrait créer un tableau, en supprimer les fichiers utilisés, et le régénérer lorsqu'il est vide.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 13/12/2014, à 13:48

PowaBanga

Re : créer fichier texte en complètant un liste

c'est là toute ma question... Comment fait-on cela ?

Il faudrait pouvoir le faire en ligne de commande...

Dernière modification par PowaBanga (Le 13/12/2014, à 13:50)

Hors ligne

#6 Le 13/12/2014, à 13:58

pingouinux

Re : créer fichier texte en complètant un liste

Bonjour,
En adaptant le script de Anonyme68

#!/bin/bash
while true
do
   while read wallpaper
   do
      gsettings set org.gnome.desktop.background picture-uri "file://$wallpaper"
      sleep 450
   done < <(find $HOME/Images/wallpapers -type f | shuf)
done

Hors ligne

#7 Le 13/12/2014, à 14:10

Watael

Re : créer fichier texte en complètant un liste

quelque chose comme ça :

#!/bin/bash

fillin(){
   while read f; do liste+=( "$f" ); done < <(find $HOME/Images/wallpapers -type f | shuf)
}

while true
do
   ((${#liste[@]})) || fillin
   gsettings set org.gnome.desktop.background picture-uri "file://${liste[0]}"
   unset liste[0]
   liste=( "${liste[@]}" )
   sleep 450 
done

je n'ai pas testé sad


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 14/12/2014, à 12:04

PowaBanga

Re : créer fichier texte en complètant un liste

Voilà qui est déjà beaucoup mieux que le script que j'utilisais auparavant, merci pour vos réponses.

Mais voilà, j'aime bien faire dans le détail, et l'inconvénient de votre commande, c'est que lorsque que je redémarrerais mon ordi, il relancera une nouvelle playliste au lieu de reprendre là ou il était. D'où l’intérêt de générer 'un fichier  playliste'

Cependant vos réponses m'on permis d'élaborer une ébauche de script pouvant subvenir à mes besoins :

#!/bin/bash
creation ()
	{
#------- Ici, il me manque une commande pour savoir quel wallpaper est actuellement affiché --------------#
#-- et limite, pour faire un truc parfait, il me faudrait savoir quoi faire si le wallpaper actuel -------#
#----------------- n'existe pas, ou n'est pas dans la playliste ------------------------------------------#
	echo "#!/bin/bash
$WALLNOW=???" > .wallpaper
#-------
	chmod +x .wallpaper

		while true
			do
		   while read wallpaper
		   do
#-----------------------------------------------------------
echo "
$wallpaper
}
$wallpaper ()
{
WALLNOW=$wallpaper
      gsettings set org.gnome.desktop.background picture-uri "file://$WALLNOW"
sleep 5
" >> .wallpaper
#-----------------------------------------------------------
		   done < <(find $HOME/Images/wallpapers -type f | shuf)
			done
#-----------
	echo "
exit
}
$WALLNOW
" >> .wallpaper
#----------- Pour finir, il me faudrait une commande pour supprimer la 3ième et 4 ième ligne --#
#----------- de mon script afin d'éviter qu'il n'y ait des erreurs ----------------------------#
execution
	}
execution ()
	{
	bash .wallpaper
	rm -rf .wallpaper
	creation
	}

if [ -f "/home/lio/.wallpaper" ];then
echo "Le fichier existe !"
execution;
else
echo "Le fichier n'existe pas !"
creation
execution;
fi

Donc en résumé, il me manque principalement le moyen d'afficher le wallpaper actuel dans une variable, et celui de supprimer la ligne 3 et 4 de mon fichier texte :-)

Hors ligne