Forum Astuces.divers [X-Window] .xinitrc pour éviter qu'un crash de windowmanager ferme X

Posté par  .
Étiquettes : aucune
0
5
juin
2003
il peut arrivever que votre WM crashe, et souvent cela ferme votre X (ce qui est parfois interprété à tort comme un crash de X)
une solution est de modifier les fichiers .xinitrc et .xsession de votre répertoire ~

voilà les 2 lignes que vous pouvez mettre dans chacun de ces fichiers:

icewm
xterm

remplacez icewm par votre wm préféré (ou par kde ou gnome)

si icewm plante (ce qui n'arrive presque jamais...), alors la ligne suivante est exécuté: un xterm est lancé, vous pouvez l'utiliser pour relancer votre WM ou pour sauvegarder vos fichiers ouverts.

attention, la fermeture de ce xterm entrainera pour de bon la fermeture de votre session X !
  • # Re: .xinitrc pour éviter qu'un crash de windowmanager ferme X

    Posté par  . Évalué à 3.

    Avec cette méthode, un xterm est lancé quand icewm est fermé, quel que soit le code de retour de icewm, donc même quand icewm se termine avec succès.
    Il serait préférable d'utiliser :
    icewm || xterm
    Le xterm est alors exécuté seulement quand icewm échoue.

    Il est possible d'utiliser un WM de secours à la place d'un xterm, comme twm par exemple :)

    icewm || twm

    ou encore

    icewm || fluxbox || blackbox || twm || xterm

    Ce serait peut être aussi bien de relancer icewm tant qu'il crashe, ou alors proposer de lancer un autre gestionnaire de fenêtres, avec quelque chose du genre :

    wm = icewm
    resultat = faux
    tant que resultat == faux
    ____resultat = `wm`
    ____si resultat == faux
    ________demander si on veut relancer le wm actuel ou modifier le wm utilisé
    ________si l'utilisateur veut abandonner
    ____________resultat = vrai
    ________fin si
    ________si le wm est changé
    ____________mettre à jour la variable wm
    ________fin si
    ____fin si
    fin tant que
    • [^] # Re: .xinitrc pour éviter qu'un crash de windowmanager ferme X

      Posté par  (site web personnel) . Évalué à 1.

      en bash ca donne quoi?? ou en C+une interface X
      • [^] # Re: .xinitrc pour éviter qu'un crash de windowmanager ferme X

        Posté par  . Évalué à 2.

        Voila ce que ça donne en bash, en utilisant Xdialog pour demander des infos à l'utilisateur par une interface graphique. dialog pourrait aussi être utilsé, les réponses étant alors demandées via une interface texte.

        #!/bin/sh
        dialog="Xdialog"
        wm="fluxbox"
        continuer=0 # vrai
        while (( ! $continuer ))
        do
        __$wm
        __continuer=$[! $?] # negation du resultat du wm
        __if (( ! $continuer ))
        ____then
        ____reponse=`$dialog --title 'Le gestionnaire de fenêtres a été interrompu !' --inputbox 'Quel gestionnaire de fenêtres voulez-vous relancer ?' 10 50 $wm 2>&1`
        ____if (( ! $? ))
        ______then
        ______wm=$reponse
        ______else
        ______continuer=1 # faux, l'utilisateur abandonne
        ____fi
        __fi
        done

        PS: sed par exemple peut transformer ces __ de formatage en espaces: sed 's|__| |g'
  • # on peut aussi

    Posté par  . Évalué à 1.

    faire (sleep 3 ; super stop) & logout

    avec "shutdown -h now" comme commande stop avec super

    pas de délai pour shutdown parce que ce qu'on veut c'est arrêter la machine
    un sleep de 2 à 5s pour laisser au biniou le temps de délogger proprement

    malheureusement ça ne marche qu'en mode console.

    une idée pour fermer automatiquement et proprement la session X avant de déloguer ? j'ai pas trouvé comment attacher le processus au shell de log...

    Alain
    • [^] # Re: on peut aussi

      Posté par  . Évalué à 1.

      grrrr l'astuce à changé entre le post !! grrrr

      désolé du dérangement

      c'était pour l'arrêt de la machine et pas pour while true; do run-window-manager ; done (déjà vu)
      .....

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.