LINUX.ORG.RU

Как добавить дополнительные действия к уходу в спящий режим и выходу из него?

 , ,


0

1

Настраиваю у себя на домашнем компе Debian Jessie. C «железом» есть глючок, из-за которого надо временно отрубать USB2 перед гибернейтом.

Работающее решение нашел - но оно требует pm-utils (скрипт в /etc/pm/sleep.d). Однако кнопки спящего и ждущего режима в KDE не задействуют pm-utils, и при их нажатии скрипт не отрабатывает. Гугл подсказывает, что фактически кнопка запускает qdbus (в случае ждущего режима, например, это qdbus org.kde.Solid.PowerManagement /org/freedesktop/PowerManagement Suspend )

Вопрос: можно ли штатным образом вызывать свой скрипт через dbus (т. е. перехватывать действия команды от кнопки) или переопределить саму кнопку на pm-utils?

★★★

Последнее исправление: PVOzerski (всего исправлений: 1)

Точно не работают скрипты pm-utils? Глянь /var/log/, там должен быть лог что-то типа hibernate.log. Можно глянуть, какие скрипты отработали.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Не работают. Можно даже стандартные логи не смотреть: я в отладочной версии скрипта сделал своё ведение лога :)

Вообще сейчас копаюсь вот тут: https://wiki.archlinux.org/index.php/Power_management#Suspend_and_hibernate

Это, кажется, то самое - но вопрос не снимаю, поскольку и работоспособность в Дебиане не проверена, и от готового решения не отказался бы.

PVOzerski ★★★
() автор топика
Ответ на: комментарий от PVOzerski

попробуй сделать так(я не знаю, как там в кде4, если честно):

find /usr/share/ -name '*.qml' | xargs grep suspendToRam
затем там, где запускается smth("suspendToRam"), вставь plasmoid.runCommand("/path/to/script", ["arg1"]). решение очень костыльное, но другого я предложить не могу. если кто может, то хорошо

f1u77y ★★★★
()
Ответ на: комментарий от intelfx

А я свой костыль - с твоей подачи - за это время сваял. Демонстрирую.

#!/bin/bash
# /lib/systemd/system-sleep/USB2_Bug_Workaround
case "${1}" in
"pre")
# Unbind ehci for preventing error
echo -n "0000:03:00.2" | tee /sys/bus/pci/drivers/ehci-pci/unbind
true

#echo PRE !!! >/LOG-sd.1
;;
 "post")
# Bind ehci for preventing error
echo -n "0000:03:00.2" | tee /sys/bus/pci/drivers/ehci-pci/bind
true

#echo POST !!! >/LOG-sd.2
;;
esac


Насчет места в этой самой номинации - судить не берусь :)

PVOzerski ★★★
() автор топика
Ответ на: комментарий от intelfx

погоди, 2016 не закончился еще, мб ещё хуже ченить придумаю

о, так и нормальное решение есть

f1u77y ★★★★
()
Ответ на: комментарий от PVOzerski

Да нет, типичный такой костыль для бажной железки.

Кстати, можно echo ... > file. Необязательно делать -n (ядро хавает перенос строки) или скакать вокруг | tee — т. к. у тебя в этой ситуации весь экземпляр bash'а от рута работает. Ну, если только ты не хочешь, чтобы эти строчки попадали ещё и в лог.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.