• # pareil mais avec acpid et d'autres trucs

    Posté par (site web personnel, Mastodon) . En réponse au journal Petit script pour gerer cpu_freq au demarrage de mon laptop.. Évalué à 3.

    
    ##################
    ##/etc/acpi/scripts/ac-power.sh
    ##################
    #!/bin/bash
    POWER_STATE=$(cat /proc/acpi/ac_adapter/AC/state | tr -s " " | cut -d" " -f2)
    LID_STATE=$(cat /proc/acpi/button/lid/LID/state | tr -s " " | cut -d" " -f2)
    case "$POWER_STATE" in
     on-line)
    	if [ "$LID_STATE" = "open" ]; then
    	 echo "[ac-power=on] [lid=open] setting cpu in 'performance' mode" | logger -t "acpi"
    	 echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    	else
    	 echo "[ac-power=on] [lid=closed] setting cpu in 'powersave' mode" | logger -t "acpi"
    	 echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    	fi
    	;;
     off-line)
    	echo "[ac-power=off] setting cpu in 'powersave' mode" | logger -t "acpi"
    	echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    	;;
     *)
    	echo "[ac-power=error] unknown power state" | logger -t "acpi"
    	;;
    esac
    ##################
    ##/etc/acpi/scripts/lid.sh
    ##################
    #!/bin/bash
    POWER_STATE=$(cat /proc/acpi/ac_adapter/AC/state | tr -s " " | cut -d" " -f2)
    LID_STATE=$(cat /proc/acpi/button/lid/LID/state | tr -s " " | cut -d" " -f2)
    case "$LID_STATE" in
     open)
    	if [ "$POWER_STATE" = "on-line" ]; then	 
    	 echo "[lid=open] [ac-power=on] setting cpu in 'performance' mode" | logger -t "acpi"
    	 echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    	else
    	 echo "[lid=open] [ac-power=off] setting cpu in 'powersave' mode" | logger -t "acpi"
    	 echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    	fi
    	;;
     closed)
    	echo "[lid=closed] setting cpu in 'powersave' mode" | logger -t "acpi"
    	echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    	;;
     *)
    	echo "[lid=error] unknown lid state" | logger -t "acpi"
    	;;
    esac
    ##################
    ##/etc/acpi/scripts/powerbtn.sh
    ##################
    #!/bin/sh
    # /etc/acpi/powerbtn.sh
    # Initiates a shutdown when the power putton has been
    # pressed.
    if ps -Af | grep -q '[k]desktop' && test -f /usr/bin/dcop
    then
     dcop --all-sessions --all-users ksmserver ksmserver logout 0 2 0 && exit 0
    else
     /sbin/shutdown -h now "Power button pressed"
    fi
    ##################
    ##/etc/acpi/events/lid
    ##################
    event=button/lid
    action=/etc/acpi/scripts/lid.sh
    ##################
    ##/etc/acpi/events/powerbtn
    ##################
    # /etc/acpi/events/powerbtn
    # This is called when the user presses the power button and calls
    # /etc/acpi/powerbtn.sh for further processing.
    # Optionally you can specify the placeholder %e. It will pass
    # through the whole kernel event message to the program you've
    # specified.
    # We need to react on "button power.*" and "button/power.*" because
    # of kernel changes.
    event=button[ /]power
    action=/etc/acpi/scripts/powerbtn.sh
    ##################
    ##/etc/acpi/events/ac-power
    ##################
    event=battery[ ]BAT
    action=/etc/acpi/scripts/ac-power.sh
    
    donc ça gère le couvercle et ça écrit les évenements dans /var/log/messages !
    M.
    ce bout de code est sous licence Ms-RL ;)