[XFCE] temporiser shutdown (Contourné)

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
dmganges
Hankyu
Messages : 17
Inscription : ven. 04 nov. 2022, 03:22

[XFCE] temporiser shutdown (Contourné)

Message par dmganges »

Bonjour,
Dans l'autostart de xfce, en trigger shutdown j'ai placé un petit script qui :
- Fait une annonce audio (1s)
- Envoi un mail en Perl (Sur Win7 ça prend 3 à 4s)

Lorsque je clique sur le bouton Shut down du Menu => Déconnexion, je n'entends que le tout début du message audio alors que j'ai mis un sleep de 2s, et bien sur le mail n'est pas envoyé.
Y a-t-il une possibilité de poser une tempo au shutdown :?:

Il me semble que si l'on avait accès à la commande lancée par le bouton du panneau <Log Out | Restart | Shut Down> ça serait un jeu d'enfant... 8)
J'ai un peu gratté dans xfce, mais n'ai rien trouvé :(
Merci :!:
Dernière modification par dmganges le jeu. 08 déc. 2022, 09:19, modifié 1 fois.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [XFCE] temporiser shutdown

Message par papajoke »

bonjour

pour le déconnexion et/ou l'arrêt du pc il faudrait plutôt utiliser systemd
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
dmganges
Hankyu
Messages : 17
Inscription : ven. 04 nov. 2022, 03:22

Re: [XFCE] temporiser shutdown

Message par dmganges »

Bonsoir et merci papajoke pour ta réponse !

Je pense que lorsqu'on utilise les boutons <Log Out | Restart | Shut Down> de l'environnement XFCE on passe par systemd

Il doit y avoir quelque chose que je ne pige pas dans les autostarts à partir de XFCE.
J'en ai un, perso, parmi les autres, sur trigger Login, qui fonctionne très bien.

Celui que je pose sur les triggers Shutdown | Restart, démarre, mais est interrompu par le shutdown immédiat.
En toute rigueur lorsqu'on met un autostart en Shutdown, le shutdown du PC ne devrait être effectif que lorsque la commande est terminée :!: :?:
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [XFCE] temporiser shutdown

Message par papajoke »

Il me semble que tu n'as pas compris ce que je t'indiquais ?
Il te sufit de créer ta propre unit systemd qui appelle ton script avec un "déclencheur" comme Before=shutdown.target
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
dmganges
Hankyu
Messages : 17
Inscription : ven. 04 nov. 2022, 03:22

Re: [XFCE] temporiser shutdown

Message par dmganges »

Bonsoir,
Effectivement j'étais parti bille en tête... avec mon vieux Unix... je découvre à peine arch...

Je dois m'y prendre comme un manche, ce que je fais est rudimentaire, mais ne fonctionne pas :

Mon /etc/systemd/system/sysrescue-shutdown.service :

Code : Tout sélectionner

[Unit]
Description=run at shutdown
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/root/ZZ_Sound

[Install]
WantedBy=shutdown.target
Je n'ai pas inventé grand chose, je suis parti de https://www.golinuxcloud.com/run-script ... only-rhel/ et plein d'autres...

J'ai essayé de lancer seulement la commande aplay... pareil...
Le .wav dure 2s, une synthèse vocale qui demande d’éteindre la souris.

Code : Tout sélectionner

[Unit]
Description=run at shutdown
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/usr/bin/aplay /root/MK_Rescue/sysresccd/UTILE/LaSouris_V.wav

[Install]
WantedBy=shutdown.target
Le lancement :

Code : Tout sélectionner

#> systemctl start sysrescue-shutdown.service
Job for sysrescue-shutdown.service failed because the control process exited with error code.
See "systemctl status sysrescue-shutdown.service" and "journalctl -xeu sysrescue-shutdown.service" for details.
Les logs :

Code : Tout sélectionner

Le processus /root/ZZ_Sound n'a pas pu être exécuté, et a donc échoué.
░░ 
░░ Le code d'erreur renvoyé est ERRNO.
déc. 06 18:10:54 sysrescue systemd[1]: sysrescue-shutdown.service: Main process exited, code=exited, status=203/EXEC
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ An ExecStart= process belonging to unit sysrescue-shutdown.service has exited.
░░ 
░░ The process' exit code is 'exited' and its exit status is 203.
déc. 06 18:10:54 sysrescue systemd[1]: sysrescue-shutdown.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ The unit sysrescue-shutdown.service has entered the 'failed' state with result 'exit-code'.
déc. 06 18:10:54 sysrescue systemd[1]: Failed to start run at shutdown.
░░ Subject: L'unité (unit) sysrescue-shutdown.service a échoué
░░ Defined-By: systemd
░░ Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
░░ 
░░ L'unité (unit) sysrescue-shutdown.service a échoué, avec le résultat failed.
Je suis sur une version épurée de arch : https://www.system-rescue.org/ que je personnalise... c'est pour ça que mon script est directement sous /root... plus facile pour moi d'avoir les scripts de base sous la main de SystemRescue...
dmganges
Hankyu
Messages : 17
Inscription : ven. 04 nov. 2022, 03:22

Re: [XFCE] temporiser shutdown

Message par dmganges »

Bonjour,
Y a du mieux :D

Code : Tout sélectionner

root @ sysrescue
/etc/systemd/system
#> systemctl start sysrescue-shutdown.service
root @ sysrescue
/etc/systemd/system
#> systemctl status  sysrescue-shutdown.service
○ sysrescue-shutdown.service - run at shutdown
     Loaded: loaded (/etc/systemd/system/sysrescue-shutdown.service; disabled; preset: disabled)
     Active: inactive (dead)

déc. 07 00:43:12 sysrescue systemd[1]: Starting run at shutdown...
déc. 07 00:43:12 sysrescue ZZ_Sound[1277]: Simple mixer control 'Master',0
déc. 07 00:43:12 sysrescue ZZ_Sound[1277]:   Capabilities: pvolume pvolume-joined pswitch pswitch-joined
déc. 07 00:43:12 sysrescue ZZ_Sound[1277]:   Playback channels: Mono
déc. 07 00:43:12 sysrescue ZZ_Sound[1277]:   Limits: Playback 0 - 64
déc. 07 00:43:12 sysrescue ZZ_Sound[1277]:   Mono: Playback 0 [0%] [-64.00dB] [on]
déc. 07 00:43:12 sysrescue ZZ_Sound[1279]: No PulseAudio daemon running, or not running as session daemon.
déc. 07 00:43:12 sysrescue ZZ_Sound[1280]: Playing WAVE '/root/MK_Rescue/sysresccd/UTILE/LaSouris_V.wav' : Signed 1>
déc. 07 00:43:14 sysrescue systemd[1]: sysrescue-shutdown.service: Deactivated successfully.
déc. 07 00:43:14 sysrescue systemd[1]: Finished run at shutdown.

root @ sysrescue
/etc/systemd/system
#> 
J'avais oublié le pragma #!/bin/bash

Code : Tout sélectionner

#!/bin/bash

# Réactiver le son avec amixer
# A REVOIR pour volume et carte par defaut

/usr/bin/amixer sset Master unmute
# /usr/bin/amixer sset Speaker unmute (haut-parleur désactivé)
# /usr/bin/amixer sset Headphone unmute (désactivation du casque)

/usr/bin/pacmd set-default-sink 0
/usr/bin/aplay /root/MK_Rescue/sysresccd/UTILE/LaSouris_V.wav
ça ne me dit pas pourquoi ExecStart=/usr/bin/aplay /root/MK_Rescue/sysresccd/UTILE/LaSouris_V.wav ne fonctionnait pas non plus :?:

Mais ça ne fonctionne toujours pas :(
J'ai encore à apprendre...


déc. 07 00:43:12 sysrescue ZZ_Sound[1279]: No PulseAudio daemon running, or not running as session daemon.
Comment faire que le daemon Pulse ne soit pas arrêté, car il tourne dans la sesson XFCE :?:

[Edit 01:20]
Pour avoir le son en direct il me faut relancer pulseaudio :
systemctl --user restart pulseaudio.service

Là, toujours en direct, si je lance le service :
systemctl start sysrescue-shutdown.service

J'ai bien le son, mais pas au shutdown :(
laurent85
Elfe
Messages : 951
Inscription : mar. 16 oct. 2018, 21:05

Re: [XFCE] temporiser shutdown

Message par laurent85 »

Bonjour,
D'après une recherche rapide sur internet il faut utiliser une de ces méthodes :
https://unix.stackexchange.com/question ... e-shutdown
https://unix.stackexchange.com/question ... oesnt-fini
dmganges
Hankyu
Messages : 17
Inscription : ven. 04 nov. 2022, 03:22

Re: [XFCE] temporiser shutdown

Message par dmganges »

Bonjour et merci pour ta réponse laurent85

J'ai également fait beaucoup de recherches sur Internet...
Et je suis tombé sur les mêmes exemples que tu proposes...
J'ai fait pas mal d'essais au pif, car là les bonnes infos sont rares et même inexistantes...

Le problème, enfin MON problème, mais apparement je ne suis pas le seul... C'est que je veux lancer un script au Shutdown.
Quand un shutdown est lancé la première chose qu'il fait c'est de tuer tous les processus, dont XFCE, pulseaudio... et bien d'autres choses.

Là, rien que pour lancer un son à la fermeture du système, ça devient une usine à gaz...

Il faut connaître les dépendances d'au moins pulseaudio pour pouvoir lancer le script systemd avant qu'elles ne soient tuées...

J'ai cherché, pas d'info, que des gens qui galèrent comme moi :
https://debian-facile.org/viewtopic.php?id=30120
Je pense que je vais faire comme eux :wink: mais en un peu mieux :)
Comme je joue avec l'archive SystemRescue, je vais y introduire Perl-tk pour faire une petite interface graphique avec les commandes qui vont bien :
https://stackoverflow.com/questions/757 ... s/55942096
:D
Je sortirai de la norme... mais quand la norme est imbitable...
dmganges
Hankyu
Messages : 17
Inscription : ven. 04 nov. 2022, 03:22

Re: [XFCE] temporiser shutdown

Message par dmganges »

Donc à partir de :
https://debian-facile.org/viewtopic.php?id=30120
https://stackoverflow.com/questions/757 ... s/55942096

[EDIT]
1- J'ai tenté d'installer perl-tk à partir du cpan, bien sûr. Je me suis fait jeter.
2- J'ai tenté avec pacman, j'ai eu un tas d'insanités.
3- Bizarrement je me retrouve avec perl-tk (Pas le temps de chercher pour l'instant).
4- Installez perl-tk comme vous pouvez pour faire une petite interface graphique...
[/EDIT]

2- le script perl de l'interface graphique Logout.pl :

Code : Tout sélectionner

#!/usr/local/bin/perl
use strict;
use warnings;
use utf8;
use Tk;

# Creation du widget principal
my $Wm = new MainWindow(
	-title      => "Déconnexion",
);
$Wm->minsize( 300, 100 );

# Frame pour les 3 boutons	[Log Out|Restart|Shut Down]
my $Frame3Boutons = $Wm->Frame(
	-background => "#F0FFFF",
)->pack(qw / -side top -fill both -expand 0 /);

# Frame pour le bouton		[Suspend]
my $Frame1Bouton = $Wm->Frame(
	-background => "#F0FFFF",
)->pack(qw / -side bottom -fill both -expand 1 /);

# Log Out
$Frame3Boutons->Button(
	-text => "Log Out",
	-width => 10,
	-height => 2,
	-command => sub {
		system "/root/ZZ_Fin";
		system "/usr/bin/xfce4-session-logout --fast --logout";
	},
)->grid( -row => 0, -column => 1, -padx => 5, -pady => 10, -sticky => "nsew" );

# Restart
$Frame3Boutons->Button(
	-text => "Restart",
	-width => 10,
	-height => 2,
	-command => sub {
		system "/root/ZZ_Fin";
		system "/usr/bin/xfce4-session-logout --fast --reboot";
	},
)->grid( -row => 0, -column => 2, -padx => 5, -pady => 10, -sticky => "nsew" );

# Shut Down
$Frame3Boutons->Button(
	-text => "Shut Down",
	-width => 10,
	-height => 2,
	-command => sub {
		system "/root/ZZ_Fin";
		system "/usr/bin/xfce4-session-logout --fast --halt";
	},
)->grid( -row => 0, -column => 3, -padx => 5, -pady => 10, -sticky => "nsew" );

# Suspend
$Frame1Bouton->Button(
	-text => "Suspend",
	-width => 36,
	-height => 2,
	-command => sub {
		system "/root/ZZ_Fin";
		system "/usr/bin/xfce4-session-logout --fast --suspend";
	},
)->grid( -row => 0, -column => 0, -padx => 5, -pady => 10, -sticky => "nsew" );

$Frame1Bouton->pack(qw / -side top -fill both -expand 1 /);

MainLoop();

#---------------------------------------------------------------
# Il n'y a pas de code spécifique...

3- Dans /usr/local/bin un script du même nom que celui qui est lancé lorsqu’on clique sur Déconnexion xfce4-session-logout :

Code : Tout sélectionner

#!/bin/bash
/usr/bin/perl /root/ZZ_Perl/Logout.pl
4- Le script qui rassemble tout ce qui est à lancer à la déconnexion /root/ZZ_Fin :

Code : Tout sélectionner

#!/bin/bash
/root/ZZ_Sound
/usr/bin/perl /root/ZZ_Perl/mail.pl
#... ...
5- Le script qui joue le son /root/ZZ_Sound :

Code : Tout sélectionner

#!/bin/bash
/usr/bin/pacmd set-default-sink 0
/usr/bin/aplay /root/MK_Rescue/sysresccd/UTILE/LaSouris_V.wav
Voila ce que ça donne :
Image
Cliquer sur l'image pour agrandir.

Ce n'est plus dans la norme mais ça fonctionne
:D
Répondre