web-dev-qa-db-fra.com

Lubuntu 17.10 - Suppression de suspendre, changer d'utilisateur, verrouiller les options d'écran du lanceur "Shutdown"

Je travaille sur un kiosque Lubuntu entièrement contrôlé par une télécommande infrarouge. Jusqu'à présent, tout fonctionne bien, à l'exception du redémarrage et de la mise hors tension. J'ai deux questions connexes:

  1. Maintenant, j'ai 2 boutons séparés sur la télécommande; un qui tourne poweroff dans le terminal et un qui tourne reboot. Cependant, je trouve cela maladroit et préférerais avoir un bouton sur la télécommande pour lancer le lanceur "Shutdown" (l'icône d'alimentation en bas à droite du bureau sur Lubuntu 17.10) identique à ce qui se produirait si vous cliquez sur le bouton avec la souris. J'utilise xbindkeys pour exécuter mes commandes. Est-ce que quelqu'un connaît la commande de terminal ou a un script pour lancer le lanceur "Shutdown"?

Edit: J'ai résolu cette partie de la question. La commande en 17.10 est lxsession-default quit

  1. Quand "Déconnexion Lubuntu 17.10 session?" Une fenêtre contextuelle apparaît Je souhaite que les seules options visibles soient Arrêt, Redémarrage et Annuler. J'ai essayé beaucoup de choses à partir d'anciens threads et d'anciennes versions, mais je n'ai réussi à supprimer aucune des options.

    enter image description here

    enter image description here

Ne fonctionne pas le 17.10:

  • gsettings set com.canonical.indicator.session suppress-logout-menuitem true

  • éditer /usr/share/polkit-1/actions/org.freedesktop.login1.policy et mettre <allow_active>no</allow_active> sous les éléments respectifs

1
P. Keating

Ainsi, après avoir lu et recherché davantage, il ne semble pas qu'il soit possible de modifier les options de session de déconnexion sans modifier ni recompiler le code source. Alors j'ai fait la meilleure chose suivante; J'ai utilisé python et tkinter pour créer mon propre programme d'interface graphique permettant d'arrêter ou de redémarrer l'ordinateur.

Ce n'était vraiment pas difficile et je sais que tout le monde peut concocter cela, mais je le posterai ici au cas où quelqu'un d'autre serait intéressé ou qui pourrait aider quelqu'un.

  1. Installez python (Sudo apt-get install python)
  2. Installez tkinter (Sudo apt-get install python-tk)
  3. Installer inactif (Sudo apt-get install idle)
  4. Ouvrir au ralenti (idle)
  5. Fichier -> Nouveau fichier
  6. Collez le code suivant:

#Test.py from Tkinter import * import os window = Tk() B1 = Button(window, text = "Shutdown", command = lambda: os.system('poweroff')) B2 = Button(window, text = "Reboot", command = lambda: os.system('reboot')) B3 = Button(window, text = "Quit", command = lambda: quit()) B1.pack() B2.pack() B3.pack() window.mainloop()

  1. Dans la nouvelle fenêtre où le code a été collé, cliquez sur Fichier -> Enregistrer -> tapez le nom du fichier.
  2. Pour invoquer un redémarrage et une mise hors tension sans privilèges Sudo, vous devez exécuter les commandes Sudo chmod a+s /sbin/poweroff et Sudo chmod a+s /sbin/reboot suivantes. ** Méfiez-vous et soyez averti que cela permettra à quiconque de redémarrer ou de mettre hors tension sans les privilèges Sudo alors soyez prudent **
  3. le script peut être exécuté à partir du terminal comme suit: python /dir/to/file/name.py

J'espère que cela aide quelqu'un! Voici une photo de la sortie (je vais travailler à la rendre jolie au cours des prochains jours).

programme au centre gauche de l'écran

0
P. Keating

De https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html et https://bbs.archlinux.org/viewtopic.php? id = 180798 J'essaierais de créer ou d'éditer le fichier /etc/polkit-1/rules.d/10-auth.rules en incluant le contenu suivant:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.suspend" ||
        action.id == "org.freedesktop.login1.suspend-multiple-sessions" ||
        action.id == "org.freedesktop.login1.hibernate" ||
        action.id == "org.freedesktop.login1.hibernate-multiple-sessions" ||
        action.id == "org.freedesktop.login1.lock-sessions"
        // switch user ?
        // logout ?
        ) {
        return polkit.Result.NO;
    }
    if (action.id == "org.freedesktop.login1.shutdown" ||
        action.id == "org.freedesktop.login1.reboot") {
        return polkit.Result.YES;
    }
});

Je n'ai pas été en mesure de trouver les actions pour changer d'utilisateur ou se déconnecter, cependant.

1
Dan Poirier