• [^] # Re: killWindow?

    Posté par . En réponse au message [Résolu (salement)]fermer xmonad proprement. Évalué à 2.

    Une idée mais j'ai pas essayé : utiliser withWindowSet de Xmonad.Core puis allWindows de Xmonad.Stack pour récupérer la liste des fenêtres et les tuer à coup de killWindow de Xmonad.Opérations (la même fonction utilisée pour alt+shift+c, donc normalment firefox devrait bien se fermer).

    Très bonne idée :) Ça marche (modulo l'asynchronicité de la chose), j'ai cependant du temporisé la chose pour que ça marche vraiment)

     ((modm .|. shiftMask, xK_q ), do withWindowSet $ mapM_ killWindow . W.allWindows
     io $ threadDelay (5 * 10^5)
     io $ exitWith ExitSuccess)

    Du coup, c'est super crade... Mais je vois pas trop comment faire autrement...

    Sinon j'ai remarqué avec pstree que firefox n'est pas un fils de xmonad ni de X.

    Oui, chez moi aussi, j'ai trouvé pourquoi (dans mon cas) je lance tout les processus soit avec le script d'init d'xmonad (en faisant un exec ces processus deviennent les fils d'xmonad) soit avec dmenu_run, et ce petit salaud lance le processus, et meurs... D'où le fait qu'ils se retrouvent rattaché à l'init.

    dmenu_run :

    #!/bin/sh
    cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"}
    if [ -d "$cachedir" ]; then
    cache=$cachedir/dmenu_run
    else
    cache=$HOME/.dmenu_cache # if no xdg dir, fall back to dotfile in ~
    fi
    (
     IFS=:
     if stest -dqr -n "$cache" $PATH; then
    stest -flx $PATH | sort -u | tee "$cache" | dmenu "$@"
     else
    dmenu "$@" < "$cache"
     fi
    ) | ${SHELL:-"/bin/sh"} &

    L'avantage de ce script c'est qu'on peut entrer des commandes shell, l’inconvénient c'est qu'il perd les processus...

    Bref ! Cette solution moche me satisfais, je peux attendre une demie seconde que ça se ferme :) Même si j'espère que firefox ne mettra jamais plus longtemps pour se fermer, je sais qu'il est long parfois

    Please do not feed the trolls