Difference between revisions of "Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado (Ubuntu 12.04)"

From Wiki de Caballero
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 43: Line 43:


if pidof x $PMS > /dev/null; then
if pidof x $PMS > /dev/null; then
# Add next if por power button shutdown if no user is logged
# Add next lines for power button shutdown if no user is logged
if [ -z "`who`" ]; then
if [ -z "`who`" ]; then
/sbin/shutdown -h now "Power button pressed"
/sbin/shutdown -h now "Power button pressed"

Latest revision as of 16:21, 11 July 2014

Para hacer que el botón de encendido y apagado del computador lo apague al hacer click se modifica el archivo /etc/acpi/powerbtn.sh. Solamente se apaga si no hay nadie loggeado al sistema.

Este archivo pertenece a Ubuntu Linux 12.04.

El resultado es el siguiente, las líneas amarillas muestran la modificación realizada.

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.

[ -r /usr/share/acpi-support/power-funcs ] && . /usr/share/acpi-support/power-funcs

# getXuser gets the X user belonging to the display in $displaynum.
# If you want the foreground X user, use getXconsole!
getXuser() {
        user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
        if [ x"$user" = x"" ]; then
                startx=`pgrep -n startx`
                if [ x"$startx" != x"" ]; then
                        user=`ps -o user --no-headers $startx`
                fi
        fi
        if [ x"$user" != x"" ]; then
                userhome=`getent passwd $user | cut -d: -f6`
                export XAUTHORITY=$userhome/.Xauthority
        else
                export XAUTHORITY=""
        fi
        export XUSER=$user
}

# Skip if we just in the middle of resuming.
test -f /var/lock/acpisleep && exit 0

# If the current X console user is running a power management daemon that
# handles suspend/resume requests, let them handle policy This is effectively
# the same as 'acpi-support's '/usr/share/acpi-support/policy-funcs' file.

[ -r /usr/share/acpi-support/power-funcs ] && getXconsole
PMS="gnome-settings-daemon kpowersave xfce4-power-manager"
PMS="$PMS guidance-power-manager.py dalston-power-applet"

if pidof x $PMS > /dev/null; then
	# Add next lines for power button shutdown if no user is logged
	if [ -z "`who`" ]; then
		/sbin/shutdown -h now "Power button pressed"
	fi
	exit
elif test "$XUSER" != "" && pidof dcopserver > /dev/null && test -x /usr/bin/dcop && /usr/bin/dcop --user $XUSER kded kded loadedModules | grep -q klaptopdaemon; then
        exit
elif test "$XUSER" != "" && test -x /usr/bin/qdbus; then
        kded4pid=$(pgrep -n -u $XUSER kded4)
        if test "$kded4pid" != ""; then
                dbusaddr=$(su - $XUSER -c "grep -z DBUS_SESSION_BUS_ADDRESS /proc/$kded4pid/environ")
                if test "$dbusaddr" != "" && su - $XUSER -c "export $dbusaddr; qdbus org.kde.kded" | grep -q powerdevil; then
                        exit
                fi
        fi
fi

# If all else failed, just initiate a plain shutdown.
/sbin/shutdown -h now "Power button pressed"

Descargar archivo