#1 Le 06/04/2018, à 20:07
- L'Africain
(Résolu) Afficher phrase différente au démarrage avec notify-send
Bonjour,
Je souhaiterais écrire un petit script qui pourrait m’afficher une citation avec notify-send au démarrage de l'ordi et éventuellement toutes les 15 minutes.
Voici ce que j'utilise
notify-send "`sed -n '92p' french.txt`" -t 10000
j'utilise le fichier french.txt dans lequel sont contenues les citations.
Sauf que je sais pas comment faire pour qu'il lise à chaque fois la ligne suivante
Par exemple s'il s'est arrêté à la ligne 28 comment faire pour qu'il redémarre à la 29... si c'est possible, c'est peut-être déjà trop compliqué pour un script
Merci d'avance
Dernière modification par L'Africain (Le 07/04/2018, à 16:28)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#2 Le 06/04/2018, à 20:27
- J5012
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
en placant un marqueur de lecture dans french.txt à verifier et chercher avec sed ? ou awk ? je ne sais jamais celui qui fait quoi quand les deux sont utilisés dans un script commun ...
Dernière modification par J5012 (Le 06/04/2018, à 20:28)
Hors ligne
#3 Le 06/04/2018, à 20:31
- Sciensous
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
je propose:
faire une copie du fichier french.txt en french.txt.92
tu récupères le numéro (92), l'incrémentes (93), envoie le notify-send
puis copie de french.txt en french.txt.93
sans oublier:
test de ligne vide
test de fin de fichier (exemple avec wc -l)--> recommence à 0
ya peut-être mieux
EDIT: ah oui J502 a la bonne idée d'écrire directement dans le fichier
Dernière modification par Sciensous (Le 06/04/2018, à 20:32)
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
Hors ligne
#4 Le 07/04/2018, à 06:05
- pingouinux
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Bonjour,
Autre idée, après avoir initialisé compteur à zéro :
((compteur++)); notify-send "$(sed -n ${compteur}p french.txt)" -t 10000
Dernière modification par pingouinux (Le 07/04/2018, à 06:15)
Hors ligne
#5 Le 07/04/2018, à 09:31
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Merci à vous tous pour toutes ces réponses!!
Comme je suis nul pour mettre pour mettre par écrit tout vos bon conseils j'ai simplement choisi la dernière possibilité de pingouinux, qui fonctionne bien sur la session courante (je sais pas si je rallume ce que ça donne). pour comprendre ((compteur++)) c'est quoi? Il garde en mémoire le lieu où il s'est arrêté?
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#6 Le 07/04/2018, à 09:40
- pingouinux
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
qui fonctionne bien sur la session courante (je sais pas si je rallume ce que ça donne). pour comprendre ((compteur++)) c'est quoi? Il garde en mémoire le lieu où il s'est arrêté?
Si tu changes de session, il faut réinitialiser compteur
((compteur++)) # Incrémente de 1 la variable compteur
Pour conserver la valeur de compteur d'une session à l'autre, tu peux stocker cette variable dans un fichier.
Hors ligne
#7 Le 07/04/2018, à 10:03
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Pour conserver la valeur de compteur d'une session à l'autre, tu peux stocker cette variable dans un fichier.
Comment on fait?
EDIT: C'est bizarre quand je lance la commande directement, ça fonctionne bien:
((compteur++)); notify-send "$(sed -n ${compteur}p $HOME/Téléchargements/french.txt)" -t 4000
Mais quand le lance le script dans lequel est la commande il m'affiche uniquement la première ligne.
Dernière modification par L'Africain (Le 07/04/2018, à 10:13)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#8 Le 07/04/2018, à 10:38
- lynn
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Mais quand le lance le script dans lequel est la commande il m'affiche uniquement la première ligne.
Avec une boucle, ça devrait le faire
while :; do ((compteur++)); notify-send "$(sed -n ${compteur}p $HOME/Téléchargements/french.txt)" -t 4000; sleep 15m; done
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#9 Le 07/04/2018, à 10:44
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Avec une boucle, ça devrait le faire
Oui ça fonctionne très bien merci ! Reste plus qu'à conserver la valeur compteur pour chaque démarrage.
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#10 Le 07/04/2018, à 10:49
- lynn
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Si c'est pour chaque démarrage, il faut garder une trace dans un fichier quelque part pour pouvoir reprendre d'après ce dernier autrement je ne vois pas comment ton script pourrait deviner d'où il faut repartir..?!
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#11 Le 07/04/2018, à 10:56
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
il faut garder une trace dans un fichier quelque part pour pouvoir reprendre d'après ce dernier
Oui je comprends le principe, mais je n'ai aucune idée de comment faire…
Edit:
En fait je me suis inspiré de ça mais ça ne fonctionne plus correctement sous 16.04
Dernière modification par L'Africain (Le 07/04/2018, à 10:58)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#12 Le 07/04/2018, à 12:14
- MicP
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Bonjour
…j'utilise le fichier french.txt dans lequel sont contenues les citations.…
Je n'ai absolument aucune idée de ce que contient le fichier french.txt
ni comment y sont formatées ces citations.
Je n'ai absolument aucune idée de pourquoi
il a fallu utiliser sed pour faire rechercher une ligne à afficher qui contiendrait la chaîne de caractères 92p
=======
Mais si, en supposant que chaque citation soit contenue dans une seule ligne du fichier,
juste après l'affichage de la première ligne,
on faisait passer cette première ligne à la fin de ce même fichier.
avec la ligne de commande suivante :
sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt
on n'aurait même plus besoin de compteur,
ni de remettre à zéro ce compteur quand la dernière ligne serait atteinte,
puisqu'on ne lirait à chaque fois que la première ligne du fichier.
=======
…éventuellement toutes les 15 minutes.…
Pour ça, il suffira de faire lancer le script par une ligne de commande de crontab
Dernière modification par MicP (Le 07/04/2018, à 12:39)
Hors ligne
#13 Le 07/04/2018, à 12:53
- pingouinux
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Tu peux faire ceci :
#!/bin/bash
fic_sauv=$HOME/fic_sauv
a_lire=$HOME/Téléchargements/french.txt
nb_lig=$(wc -l "$a_lire"|cut -d\ -f1)
[ -f "$fic_sauv" ] && compteur=$(cat "$fic_sauv") || compteur=0
((compteur>=nb_lig)) && compteur=0
((compteur++))
citation=$(sed -n ${compteur}p "$a_lire")
notify-send "$citation" -t 4000
echo $compteur >$fic_sauv
Si tu ne tiens pas spécialement à ce que les lignes soient citées dans l'ordre, c'est plus simple, car il suffit d'en choisir une au hasard à chaque fois :
notify-send "$(shuf -n1 $HOME/Téléchargements/french.txt)" -t 4000
Hors ligne
#14 Le 07/04/2018, à 13:25
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
@MicP
ni comment y sont formatées ces citations.
Ce sont des citations une sur chaque ligne.
Je n'ai absolument aucune idée de pourquoi
il a fallu utiliser sed pour faire rechercher une ligne à afficher qui contiendrait la chaîne de caractères 92p
sed, il avait aussi tail, mais c'était moins précis que sed. 92p c'était juste un exemple aléatoire. J'ai donc pris ta commande, j'ai ce retour:
Téléchargements/notify-send.sh Téléchargements/notify-send.sh: ligne 8: erreur de syntaxe près du symbole inattendu « ; »
Téléchargements/notify-send.sh: ligne 8: `while :; do; notify-send "sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt" -t 3000; sleep 10; done'
et si je lance uniquement la commande:
notify-send "sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt" -t 3000
J'ai ça:
bash: sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt : mauvaise substitution
@Pinguinux, les deux scripts fonctionnent, ça pourrait être aléatoire, mais alors on risque de ne jamais lire certaines citations, j'ai donc favorisé le premier. Est-ce possible d'ajouter un sleep ou un truc du genre pour le répéter toutes les 15 minutes, car là il s’exécute et c'est fini... Si on pouvait tout mettre dans la boîte...
Déjà merci pour votre super coup de main.
Edit: ça va j'ai réussi pour les 15 minutes, j'avais pas mis la boucle while au bon endroit!
Dernière modification par L'Africain (Le 07/04/2018, à 13:28)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#15 Le 07/04/2018, à 13:32
- lynn
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Téléchargements/notify-send.sh: ligne 8: `while :; do; notify-send "sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt" -t 3000; sleep 10; done'
Tu as mis un ";" en trop derrière do
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#16 Le 07/04/2018, à 15:25
- MicP
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
La ligne de commande que j'avais poposé ne retourne rien sur la sortie,
elle ne fait que prendre la première ligne du fichier et la positionner en dernière ligne du même fichier.
J'avais proposé de l'utiliser après avoir fait s'afficher la notification,
comme par exemple, dans ce script :
#!/bin/bash
while :; do
notify-send "$(head -n1 $HOME/Téléchargements/french.txt)" -t 3000 # Afficher dans la notification la première ligne du fichier
sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt # Faire passer la première ligne du fichier à la fin du fichier
sleep 10 # Attendre 10 minutes avant de recommencer
done
Dernière modification par MicP (Le 07/04/2018, à 15:31)
Hors ligne
#17 Le 07/04/2018, à 15:33
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Ça fonctionne parfaitement, c'est d'ailleurs plus simple, comme script.
Dernière modification par L'Africain (Le 07/04/2018, à 15:37)
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#18 Le 07/04/2018, à 15:49
- MicP
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Tu pourrais utiliser une tâche cron pour lancer un script toutes les 15 minutes.
En supposant que le nom de ton répertoire personnel soit : /home/Africain
Il te faudra créer un script nommé (par exemple) : ~/Téléchargements/notify-send.sh
et si tu n'utilises qu'un seul écran (sinon il te faudra adapter la variable DISPLAY en conséquence)
le contenu de ce script serait :
#!/bin/bash
export DISPLAY=:0.0
notify-send "$(head -n1 $HOME/Téléchargements/french.txt)" -t 3000
sed -i '1{H;d}; ${p;x;s/^\n//}' $HOME/Téléchargements/french.txt
Ensuite, il faut rendre ce script exécutable avec la ligne de commande :
chmod u+x ~/Téléchargements/notify-send.sh
Il ne resta qu'à créer la tâche cron qui va lancer ce script toutes les 15 minutes
en éditant la table cron de ton compte personnel
en lançant la ligne de commande suivante :
crontab -e
pour y ajouter la ligne suivante :
*/15 * * * * /home/Africain/Téléchargements/notify-send.sh
Dernière modification par MicP (Le 07/04/2018, à 16:13)
Hors ligne
#19 Le 07/04/2018, à 15:53
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
Oui j'ai pensé à cron, mais comme je veux en faire un deb, je préfère exécuter une commande à la fin de l'installation pour modifier /etc/rc.local, c'est plus simple non?
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#20 Le 07/04/2018, à 16:00
- MicP
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
…je veux en faire un deb, je préfère exécuter une commande à la fin de l'installation pour modifier /etc/rc.local, c'est plus simple non?…
Je n'ai encore jamais créé de fichier deb,
alors je ne sais pas du tout.
Hors ligne
#21 Le 07/04/2018, à 16:04
- L'Africain
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
C'est juste que dans le dossier control il y a un script postinstall qui s'éxécute à la fin de l'installation, comme un coup de sed sur /etc/rc.local me semblait plus facile qu'un crontab -e... J'ai favorisé cette solution. Mais il parait qu'il y a plus de rc.local sous 18.04, alors on verra bien. Sinon c'est quoi la commande pour ajouter le cron automatiquement avec un script?
Ubuntu-Unity 24.04 Alienware X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42
Hors ligne
#22 Le 07/04/2018, à 16:23
- MicP
Re : (Résolu) Afficher phrase différente au démarrage avec notify-send
…c'est quoi la commande pour ajouter le cron automatiquement avec un script?…
Il y a plusieurs possibilités,
mais si ce fichier deb doit être installé sur des machines dont l'utilisateur utilise plusieurs écrans,
il faudra aussi adapter la valeur de la variable DISPLAY en conséquence,
du coup, la crontab pourrait être plus compliquée à utiliser.
Mais comme je le disais, je n'ai aucune expérience en ce qui concerne la création de fichier .deb
du coup, je suis incapable de dire quelle solution conviendrait.
Dernière modification par MicP (Le 07/04/2018, à 16:25)
Hors ligne