web-dev-qa-db-fra.com

Comment suspendre la machine depuis la ligne de commande dans LXDE

J'utilise Lubuntu 14.04 avec Openbox 3.5.2.
Il existe une seule ligne pour verrouiller l'écran: dm-tool lock
et pour faire apparaître le menu de sortie: lxsession-default quit

Cependant, si je dois effectuer une suspension, je dois d'abord afficher le menu mentionné,
puis naviguez jusqu'à l'option 'Suspend' et appuyez sur enter.

Peut-on le faire avec une seule commande?

4
vucalur

Vous pouvez suspendre depuis le terminal avec:

Sudo pm-suspend

Dans certains cas, l'appel direct de pm-suspend peut entraîner des problèmes avec les pilotes Wi-Fi et d'autres programmes. De plus, la page de manuel de pm-suspend indique que, même s’il est correct de l’appeler à partir de la ligne de commande, il est normalement destiné à être appelé via votre gestionnaire d’alimentation de bureau.

La page de manuel ajoute que, lorsqu'il est appelé à partir de la ligne de commande, "it is not guarenteed that all of your programs in your desktop session keep working as expected."

La plupart des problèmes semblent provenir de services ou de modules non arrêtés ni déchargés avant la suspension. Pour une bonne discussion sur ce problème, ainsi que sur les moyens de le contourner, voir Suspend to Ram dans Arch wiki.

Arch Wiki suggère également de permettre à un utilisateur particulier d’exécuter pm-suspend sans Sudo à visudo pour ajouter la ligne suivante à /etc/sudoers:

username  ALL = NOPASSWD: /usr/sbin/pm-suspend

LXDE utilise le xfce4-power-manager, qui utilise pkexec pour appeler pm-suspend. pkexec permet l'exécution d'un programme en tant qu'autre utilisateur, dans ce cas root.

L'authentification est gérée par polkit. Il devrait normalement demander un mot de passe, mais comme je l’ai appris de pkexec sans mot de passe il est possible de le supprimer via un fichier dans /usr/share/polkit-1/actions.

Il y a un fichier appelé org.freedesktop.upower.policy (upower est impliqué dans l'appel de pm-suspend mais je l'ai laissé de côté pour des raisons de simplicité).

Ce fichier contient la ligne <allow_active>yes</allow-active>, qui permet de poursuivre l'action sans demander de mot de passe.

Les actions liées à l'alimentation sont beaucoup plus compliquées que de verrouiller l'écran ou d'ouvrir le menu. Il peut être préférable d’utiliser l’option de suspension dans le gestionnaire d’alimentation.

Si votre touche de fonction de suspension fonctionne, vous pourriez trouver cela pratique. Si cela ne semble pas fonctionner au premier abord, vérifiez les paramètres dans le gestionnaire d'alimentation. Dans Lubuntu, le bouton de veille n'est pas configuré pour suspendre par défaut.

Vous pouvez également travailler sur les problèmes de la page Arch pour pouvoir utiliser pm-suspend directement. Mais fais attention. J'ai utilisé la commande directement sur plusieurs autres ordinateurs portables sans aucun problème. Sur cet ordinateur portable particulier (Lenovo S10-3), il a tué le pilote wifi. J'ai dû débrancher la batterie CMOS pour qu'elle fonctionne à nouveau.

4
chaskes

Sûr,

vous pouvez essayer ceci:

echo mem > /sys/power/state 

vous devez peut-être être Sudo pour l'exécuter.

2
Kresimir Pendic

Cela peut être fait via DBus sans avoir besoin de Sudo ou de privilèges plus élevés. Vous pouvez créer un alias ou un script pour cela.

_dbus-send --session --dest=org.freedesktop.PowerManagement \
 /org/freedesktop/PowerManagement \
 org.freedesktop.PowerManagement.Suspend
_

Mieux vaut explorer toutes les options disponibles en utilisant _d-feet_.

  1. Installer d-pieds

    _Sudo apt-get install d-feet
    _
  2. Suivre

    D-Pieds → Onglet Session
    → _org.freedesktop.PowerManagement_
    → _/org/freedesktop/PowerManagement_
    → _org.freedesktop.PowerManagemenl_

    D-Pieds → onglet Système ou Session
    → _<dbus-name>_
    → _<object-path>_
    → _<interface>_: liste des méthodes, propriétés et signaux

Références:

  • man dbus-send
  • _/usr/share/dbus-1/interfaces/org.freedesktop.PowerManagement.xml_

    _/usr/share/dbus-1/services/_ pour le bus de session
    _/usr/share/dbus-1/system-services/_ pour le bus système

    _/usr/share/dbus-1/interfaces/_ interfaces des deux

    Pour accéder au service de bus système , la plupart ont besoin de privilèges root ou de règles edit polkit. Voir chaskes réponse.

1
user.dz