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)"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
 (Created page with "File:Powerbtn.sh.zip")  | 
				|||
| (3 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[[  | Para hacer que el botón de encendido y apagado del computador lo apague al hacer click se modifica el archivo <code>/etc/acpi/powerbtn.sh</code>. 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.  | |||
<syntaxhighlight lang="bash" highlight="39-42" enclose="div">  | |||
#!/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"  | |||
</syntaxhighlight>  | |||
[[Media:Powerbtn.sh.zip|Descargar archivo]]  | |||
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"