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 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 smile
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 smile

Merci d'avance

Dernière modification par L'Africain (Le 07/04/2018, à 16:28)


Ubuntu-Unity 18.04 LDLC (clevo) 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 ... wink

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 tongue

EDIT: ah oui J502 a la bonne idée d'écrire directement dans le fichier

cool

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 18.04 LDLC (clevo) 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

L'Africain #5 a écrit :

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 18.04 LDLC (clevo) 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

L'Africain a écrit :

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 18.04 LDLC (clevo) 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 18.04 LDLC (clevo) 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 18.04 LDLC (clevo) 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

L'Africain a écrit :
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 18.04 LDLC (clevo) 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 18.04 LDLC (clevo) 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 18.04 LDLC (clevo) 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