Pour info, GNOME Shell emet un signal 'end session' lorsqu'une session est sur le point de se terminer, c'est-à-dire lorsque l'utilisateur demande à se déconnecter, à redémarrer ou à éteindre l'ordinateur.
global.display.connect('end-session', ...) : Cette ligne de code connecte ce signal à une fonction de rappel (callback), qui est exécutée lorsque ce signal est émis.
const { St, Main, Shell, Meta } = imports.gi;
const Dialog = imports.ui.modalDialog;
const ExtensionUtils = imports.misc.extensionUtils;
let logoutSignal;
function init() {
// Initialisation si nécessaire
}
function enable() {
logoutSignal = global.display.connect('end-session', (display, screen) => {
// Afficher la boîte de dialogue ici
let dialog = new Dialog.ModalDialog({
styleClass: 'prompt-dialog',
destroyOnClose: false
});
dialog.contentLayout.add(new St.Label({
text: 'Voulez-vous exécuter un script avant de fermer la session ?'
}));
dialog.setButtons([
{
label: 'Oui',
action: () => {
// Exécuter un script shell ici
Shell.util_spawn(['sh', '-c', '/chemin/vers/votre/script.sh']);
dialog.close();
display.end_session(true); // Confirmer la déconnexion
}
},
{
label: 'Non',
action: () => {
dialog.close();
display.end_session(true); // Confirmer la déconnexion sans exécuter le script
},
key: Dialog.DEFAULT_CANCEL_ACTION
}
]);
dialog.open();
});
}
function disable() {
// Nettoyage lors de la désactivation
if (logoutSignal) {
global.display.disconnect(logoutSignal);
logoutSignal = null;
}
}
[^] # Re: voir du côté de /etc/gdm3/PostSession/Default ou un fichier dans le même dossier ?
Posté par totof2000 . En réponse au message exécution d'un programme en fin de session gnome (avant déconnexion). Évalué à 3. Dernière modification le 23 août 2024 à 16:47.
J'ai demandé à chatGPT ... C'est possible (voir le code plus bas). Pour créer une extension, voir https://doc.ubuntu-fr.org/utilisateurs/roschan/tutoriel/creer_une_extension_gnome par exemple, ou https://gjs.guide/extensions/development/creating.html (doc officielle)
Pour info, GNOME Shell emet un signal 'end session' lorsqu'une session est sur le point de se terminer, c'est-à-dire lorsque l'utilisateur demande à se déconnecter, à redémarrer ou à éteindre l'ordinateur.
global.display.connect('end-session', ...) : Cette ligne de code connecte ce signal à une fonction de rappel (callback), qui est exécutée lorsque ce signal est émis.