LinuxForum.Fans
Тема

Xorg ждущий режим

Автор: u_snif 17 сообщений 2996 просмотров
#129292

Всем привет. На кеде при закрытии крышки ноут переходил в ждущий режим (эти параметры я выставил в powermanager), сейчас пересаживаюсь на awesome, а там при закрытии крышки всё продолжает работать. Как реализовать что-бы при закрытии крышки система уходила в ждущий режим?

#129296

Я сделал с помощью acpid
/etc/acpi/default.sh

Показать
text

#!/bin/sh
# /etc/acpi/default.sh
# Default acpi script that takes an entry for all actions
set $*
# Читаем переменные и функции
. /etc/acpi/function.sh
#set $*

group=${1%%/*} action=${1#*/} device=$2 id=$3 value=$4

log_unhandled() { logger "ACPI event unhandled: $*" }

case "$group" in button) case "$action" in power) /sbin/init 0 ;;

# if your laptop doesnt turn on/off the display via hardware # switch and instead just generates an acpi event, you can force # X to turn off the display via dpms. note you will have to run # 'xhost +local:0' so root can access the X DISPLAY. lid) # xset dpms force off pm-suspend ;;

*) log_unhandled $* ;; esac ;;

ac_adapter) case "$value" in # Add code here to handle when the system is unplugged # (maybe change cpu scaling to powersave mode). For # multicore systems, make sure you set powersave mode # for each core! *0) # cpufreq-set -g powersave off_ac_adapter_action ;;

# Add code here to handle when the system is plugged in # (maybe change cpu scaling to performance mode). For # multicore systems, make sure you set performance mode # for each core! *1) # cpufreq-set -g performance on_ac_adapter_action ;;

*) log_unhandled $* ;; esac ;;

*) log_unhandled $* ;; esac

/etc/acpi/function.sh

Показать
text

#!/bin/sh
# Файл функций
on_ac_adapter_action() {
            ### 22.09.2008
            ### Добавил из https://nikoli.selfip.org/ru/node/417 #####
            # echo "Adapter mode ON $(date +%x%t%X)" >> /var/log/start_mode.log
            hdparm -B 255 -S 240 /dev/sda
                        echo 0 > /proc/sys/vm/laptop_mode
                        echo 10 > /proc/sys/vm/dirty_ratio
                        echo 5 > /proc/sys/vm/dirty_background_ratio
                        echo 500 > /proc/sys/vm/dirty_writeback_centisecs
            logger "${0}: AC adapter is ON"
}

off_ac_adapter_action() { ### 22.09.2008 ### Добавил из https://nikoli.selfip.org/ru/node/417 ##### ### Только заменил -S 12 на -S 24 ### (переход в standby через 2 минуты вместо 1 минуты) ### и -B 96 надо менять на что-то большее, чтобы не так быстро ### увеличивался Load_Cycle_Count в выводе `smartctl -a /dev/sda` # echo "Battery mode ON $(date +%x%t%X)" >> /var/log/start_mode.log hdparm -B 196 -S 24 /dev/sda echo 5 > /proc/sys/vm/laptop_mode echo 40 > /proc/sys/vm/dirty_ratio echo 10 > /proc/sys/vm/dirty_background_ratio echo 1500 > /proc/sys/vm/dirty_writeback_centisecs logger "${0}: AC adapter is OFF" }

В принципе, необязательно всё делать точно так, как у меня. Единственное, что вам нужно, это добавить

text

...
lid)
            #    xset dpms force off
            pm-suspend
...

ну и, разумеется, убедиться в наличии пакета pm-utils и запущенного демона acpid.

#129312

делит

#129316
Lupo Alberto написал:
В принципе, необязательно всё делать точно так, как у меня. Единственное, что вам нужно, это добавить
...
lid)
# xset dpms force off
pm-suspend
...

а куда именно и в какое место это нужно добавить?

#129317
.snif написал:
а куда именно и в какое место это нужно добавить?

Покажите файл /etc/acpi/default.sh

#129320

Lupo Alberto,
/etc/acpi/default.sh и /etc/acpi/function.sh содержат то, что вы привели выше)

#129321
.snif написал:
/etc/acpi/function.sh содержат то, что вы привели выше)

У вас этого скрипта быть не может, я его сам писал wink
Покажите все файлы, находящиеся у вас в /etc/acpi

#129323
Lupo Alberto написал:
[quote=.snif]/etc/acpi/function.sh содержат то, что вы привели выше)

У вас этого скрипта быть не может, я его сам писал wink
Покажите все файлы, находящиеся у вас в /etc/acpi[/quote]

text

asus-brn-down.sh  ejectbtn.sh      lockbtn.sh   powerbtn.sh      sleep.sh                       voldownbtn.sh
asus-brn-up.sh    events           mailbtn.sh   power.sh         stopbtn.sh                     volupbtn.sh
asus-touchpad.sh  function.sh      mediabtn.sh  prevbtn.sh       thinkpad-stretchortouchpad.sh  webbtn.sh
asus-wireless.sh  hibernate.sh     mutebtn.sh   rotatescreen.sh  tosh-wireless.sh
batterybtn.sh     ibm-wireless.sh  nextbtn.sh   screenblank.sh   undock.sh
default.sh        lid.sh           playbtn.sh   sleepbtn.sh      videobtn.sh
#129324

Покажите полностью ваш скрипт /etc/acpi/default.sh
P.S. Если не лень, заtarьте весь каталог /etc/acpi и скиньте куда-нибудь. smile

#129329
Lupo Alberto написал:
Покажите полностью ваш скрипт /etc/acpi/default.sh
P.S. Если не лень, заtarьте весь каталог /etc/acpi и скиньте куда-нибудь. smile

http://rghost.ru/4360465

#129331

Попробуйте переместив куда-либо каталог /etc/acpi, скачать http://rghost.ru/4360686 и установить используемые мной скрипты. Убедитесь, что демон acpid запущен и у вас есть команда pm-suspend.

#129333
Lupo Alberto написал:
Попробуйте переместив куда-либо каталог /etc/acpi, скачать http://rghost.ru/4360686 и установить используемые мной скрипты. Убедитесь, что демон acpid запущен и у вас есть команда pm-suspend.

спасибо, работает. Там какие-то заморочки есть, раз ваши скрипты? Наверняка под вас заточены. Скажите на что обратить внимание wink

#129338
.snif написал:
ам какие-то заморочки есть, раз ваши скрипты? Наверняка под вас заточены. Скажите на что обратить внимание wink

Не совсем, чтобы все мои :o
В function.sh я определил, как я понимал их правильными три года назад, настройки для режимов работы от сети и от батареи. Возможно, они не идеальны, их легко изменить.
Скрипт pm_switch.sh я написал, чтобы уже при включении ноутбука acpid правильно определял его состояние.
Помню, я тогда ещё добавил скрипт /etc/pm/sleep.d/03pm-switch

Показать
text

#!/bin/sh
# 24.09.2008
# My own specific hook to handle the suspend AC adapter state.
# TODO: Merge with 93pm-switch.
on_ac_adapter_action() {
    hdparm -B 255 -S 240 /dev/sda
    echo 0 > /proc/sys/vm/laptop_mode
    echo 10 > /proc/sys/vm/dirty_ratio
    echo 5 > /proc/sys/vm/dirty_background_ratio
    echo 500 > /proc/sys/vm/dirty_writeback_centisecs
    logger "${0}: AC adapter is ON"
}
#
off_ac_adapter_action() {
    hdparm -B 196 -S 24 /dev/sda
    echo 5 > /proc/sys/vm/laptop_mode
    echo 40 > /proc/sys/vm/dirty_ratio
    echo 10 > /proc/sys/vm/dirty_background_ratio
    echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
    logger "${0}: AC adapter is OFF"
}

case "$1" in thaw|resume) if on_ac_power then on_ac_adapter_action >/dev/null 2>&1 else off_ac_adapter_action >/dev/null 2>&1 fi ;; *) ;; esac

#exit $NA

чтобы при пробуждении ноутбука правильно определялся его режим подключения к электросети.
Возможно, сейчас это уже и не надо... Но лень проверять :o Работает же smile

#129342

Lupo Alberto, ну спасибо smile
а что означают эти значения:

text

on_ac_adapter_action() {
            ### 22.09.2008
            ### Добавил из https://nikoli.selfip.org/ru/node/417 #####
            # echo "Adapter mode ON $(date +%x%t%X)" >> /var/log/start_mode.log
            hdparm -B 255 -S 240 /dev/sda
                        echo 0 > /proc/sys/vm/laptop_mode
                        echo 10 > /proc/sys/vm/dirty_ratio
                        echo 5 > /proc/sys/vm/dirty_background_ratio
                        echo 500 > /proc/sys/vm/dirty_writeback_centisecs
            logger "${0}: AC adapter is ON"
}

это я так понимаю режим работы от сети.

#129348

hdparm -B 255 -S 240 /dev/sda — это я был напуган слухами о том, что у ноутбучных дисков ограниченное количество парковок головок, уменьшал, как мог :D
Остальные настройки связаны со снижением энергопотребления в режиме питания от батареи, но увеличением быстродействия дисковой системы при работе от сети.
Давно было...

#129369

Lupo Alberto,
а можно как то реализовать что-бы через 10 минут простоя монитор выключался? или это уже в иксы лезть надо?

#129388
.snif написал:
или это уже в иксы лезть надо?

Да.
Почитайте man xset. Должно получиться.
Либо в самом xorg.conf настроить опции, относящиеся к DPMS.
Либо установить и настроить xscreensaver, что чуть проще.

Войдите или зарегистрируйтесь, чтобы ответить.