# [screensaver] lancer un demon avec le screensaver (résolu)

## Il turisto

Bonjour tous,

en fait ma question est simple. Lorsque mon pc se met en veille je voudrais lancer un demon :

--> /etc/init.d/qqch start

et lorsque la mise en veille est coupée cela fait l'effet inverse évidemment.

Je précise que je travaille avec un user autre que root mais cela ne me dérange pas de lui donner un accès sudo à cette commande.

Je suis sous gnome avec xscreensaver.Last edited by Il turisto on Thu Nov 02, 2006 12:31 pm; edited 1 time in total

----------

## Mickael

Salut,

au début du script tu rajoutes need screensaver. 

```
depend()

{

    need screensaver <----- À adapter!

}

```

Bon je dis cela de tête; mais l'idée est là : trouve le petit fichier qui lance screensaver dans init.d et adapte. Tu vois ce que je veux dire? parceque je ne n'ai pas de screensaver, don je ne peux pas savoir où il s'installe.

EDIT : peut êytre que ceci marcherait :

```

qqch_depend()

{

    need xscreensaverd <----- À adapter!

    after xscreensaverd

}

```

----------

## Il turisto

si je comprend bien tu veux dire que dans le script /etc/init.d/qqch j'ajoute le need et cela fera appel a /etc/init.d/xscreensaver ??

C'est pas vraiment ce que je veux et en plus il n'y a pas de script /etc/init.d/xscreensaver.

Ce que je veux réélement c'est que quand le fond d'écran s'allume soit automatiquement soit quand je clique sur vérouiller ma session il lance un démon.

Je sais pas si je suis clair.

----------

## Mickael

Si tu es clair, et en fait dans le script de qqch tu rajoutes need quelques choses, afin de signaler que qqch ne fonctionnera que si un autre service est lancé, Ok?

Tu pourrais aussi faire un truc dans le genre si tu peux pas untiliser les fonctions de dépendances: 

```

if ps -x | grep -i "xscreensaver" > /dev/null

    then

         le_demon_de_ton_script_qqch

     else

     exit

fi

```

Puis tu mets le script en run level default. Bon c'est pas très classe puisque le demon du script qqch tourne en permanence.

----------

## Il turisto

je pourrais aussi mettre ton script dans un cron mais ca reste une solution assez pourrie.

Y'a pas moyen de lancer l'action au moment du lancement du screensaver?

Ca serait plus propre quand même.

----------

## netfab

Salut,

Jette un oeil à l'option -watch de xscreensaver-command, çà devrait t'intéresser, mais il faudra un processus derrière qui vérifiera régulièrement l'état du screensaver.

----------

## Mickael

 *Il turisto wrote:*   

> je pourrais aussi mettre ton script dans un cron mais ca reste une solution assez pourrie.
> 
> Y'a pas moyen de lancer l'action au moment du lancement du screensaver?
> 
> Ca serait plus propre quand même.

 

Attention je suis une burne en script, moi pas informaticien/programmeur etc du tout, donc...  :Rolling Eyes: 

EDIT : tu peux t'inspirer de script tel que celui de ifplug.

----------

## titoucha

Et intégrez ton lancement de script dans celui de screensaver, je ne sais pas comment il est fait, car je ne l'utilise pas, par contre j'ai ça dans un autre script.

PS: Moi aussi je ne suis pas un pro de la programmation.   :Embarassed: 

----------

## Il turisto

Peros je suis programmeur mais je pensais que sur le forum quelqu'un aurait une solution miracle pour faire cela.

Genre une option spécifique cachée je sais pas trop ou et qui permettrais de faire ce que je cherche à faire.

Je ne comprend pas que le screensaver ne puisse pas faire appel à un programme qui boufferait du cpu. Ici mon but étant de lancer folding@home (www.p2p-community.com) derrière le screensaver car je suis sur un pc portable et que le bruit du ventilo me gène quand je bosse.

L'option watch est pas mal mais alors il me faut un démon aussi qui tourne tout le temps et j'aime pas trop ça. Enfin ce démon ne ferait rien vu que -watch est bloquant. Je vais peut être regarder à cela.

----------

## titoucha

Alors, c'est encore plus simple, tu as la possibilité de configurer ton profil sur folding pour lui dire de ne démarrer qu'avec le screensaver et il y a même une option pour lui dire de ne se lancer que si tu as l'alimentation connectée.

----------

## geekounet

 *titoucha wrote:*   

> Alors, c'est encore plus simple, tu as la possibilité de configurer ton profil sur folding pour lui dire de ne démarrer qu'avec le screensaver et il y a même une option pour lui dire de ne se lancer que si tu as l'alimentation connectée.

 

Ha bah non si ya plus de défi alors  :Mr. Green: 

----------

## Il turisto

pour le chargeur je le savais.

Pour la screensaver ca doit etre nouveau alors. je vais mater.

sinon en suivant la doc de xscreensaver-command on peut faire cela :

```

#!/usr/bin/perl

my $blanked = 0;

open (IN, "xscreensaver-command -watch |");

while (<IN>)

{

        if (m/^(BLANK|LOCK)/)

        {

                 if (!$blanked)

                 {

                        system "/etc/init.d/foldingathome start";

                        $blanked = 1;

                }

        }

        elsif (m/^UNBLANK/)

        {

                system "/etc/init.d/foldingathome stop";

                $blanked = 0;

        }

}

```

edit : par contre dans le script d'init de folding meme en changeant les options avancées il ne demande plus pour le chargeur. Ca se trouve où cela maintenant?Last edited by Il turisto on Tue Oct 31, 2006 9:35 am; edited 2 times in total

----------

## titoucha

 *geekounet wrote:*   

> Ha bah non si ya plus de défi alors 

 

Tu dis que je n'aurais rien dû dire et le laisser chercher   :Laughing: 

----------

## Il turisto

désolé un post vide. me suis trompé de bouton (citer au lieu de éditer) et je peux pas le supprimer ...Last edited by Il turisto on Tue Oct 31, 2006 9:35 am; edited 2 times in total

----------

## titoucha

Je vais chercher dans le mien, je ne sais plus exactement   :Embarassed: 

----------

## Mickael

 *titoucha wrote:*   

> Alors, c'est encore plus simple, tu as la possibilité de configurer ton profil sur folding pour lui dire de ne démarrer qu'avec le screensaver et il y a même une option pour lui dire de ne se lancer que si tu as l'alimentation connectée.

 

Désolé mais j'ai pas compris....

----------

## Il turisto

Ok merci. Au pire je lance le script dans le fichier local.start et on en parle plus.

----------

## titoucha

Alors il te faut regarder dans le fichier global_prefs.xml dans le répertoire de boinc il doit contenir 

```
<idle_time_to_run>3.0</idle_time_to_run>
```

là il démarre le calcul après trois minutes d'inactivité, dans ce même fichier tu ne dois pas avoir 

```
<run_if_user_active/>
```

Ensuite tu utilises le GUI de boinc pour lui dire d'utiliser le profile par défaut.

Edit: Je viens de me rendre compte que si tu modifies le fichier à la main ça ne va pas fonctionner, car à la prochaine connexion au serveur celui-ci va remettre la configuration par défaut. Il faut modifier les options sur le serveur folding.Last edited by titoucha on Tue Oct 31, 2006 10:13 am; edited 1 time in total

----------

## titoucha

 *MickTux wrote:*   

>  *titoucha wrote:*   Alors, c'est encore plus simple, tu as la possibilité de configurer ton profil sur folding pour lui dire de ne démarrer qu'avec le screensaver et il y a même une option pour lui dire de ne se lancer que si tu as l'alimentation connectée. 
> 
> Désolé mais j'ai pas compris....

 

C'est simple, le service qu'il voulait lancer avec le screensave c'est le programme BOINC qui est utilisé par folding@home et celui-ci peut être configuré directement donc il n'y a pas besoin de script.

Si tu ne connais pas http://boinc.berkeley.edu/

----------

## Il turisto

Non tu as pas compris. Moi j'utilise folding@home. pas boinc.

Folding@home est indépendant de boinc a la base. boinc l'a juste intégré.

----------

## titoucha

Le projet folding@home n'utilise pas le moteur de boinc   :Shocked: 

Si c'est le cas j'ai vraiment merdé sur ce coup   :Embarassed: 

----------

## Il turisto

folding@home utilise les core gromacs : www.gromacs.org

mais pas boinc. d'ailleurs il me semble que boinx n'a meme pas intégré folding dans son projet.

----------

## titoucha

J'ai en fait confondu avec le projet FightAIDS@Home qui lui fait partie du World Community Grid et ce projet utilise le moteur BOINC, désolé   :Embarassed: 

----------

## Il turisto

Bon ben je garde la solution du script.

Pour les curieux :

```

#!/usr/bin/perl

my $blanked = 0;

open (IN, "xscreensaver-command -watch |");

while (<IN>)

{

        if (m/^(BLANK|LOCK)/)

        {

                if (!$blanked)

                {

                        system "sudo /etc/init.d/foldingathome start";

                        $blanked = 1;

                }

        }

        elsif (m/^UNBLANK/)

        {

                system "sudo /etc/init.d/foldingathome stop";

                $blanked = 0;

        }

}

```

Comme vous pouvez le voir j'ai ajouté un appel sudo donc évidemment votre user doit avoir une ligne comme ceci dans sudo :

```

ilturisto       ALL=(ALL)       NOPASSWD: /etc/init.d/foldingathome

```

et le script de début je le fais lancer par le gestionnaire de session de gnome. 

Et voila.

Merci à tous pour votre aide.

----------

