Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Можно ли прикрепить событие к переходу в спящий режим?  (Прочитано 1533 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Суть такая.
Я хочу написать простенькое GUI малой кровью для консольного приложения. Для функционирования мне достаточно фоном слать строчки в терминал. Но само приложение падает намертво после выхода из спящего режима по прошествии некоторого времени.
Т.е. мне надо послать строку при переходе в этот режим, до отключения, получить ответ и уснуть.
Можно ли это сделать? И если можно, то как?

Выход из спящего режима также интересует. Чтобы ненужный цикл не лепить.
« Последнее редактирование: 06 Декабря 2018, 09:26:20 от Барабашка »

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Я так понимаю, тебе надо воспользоваться dbus, а именно интерфейсом org.freedesktop.login1.Manager и его сигналом PrepareForSleep
А так же Inhibit чтобы залочить засыпание, пока не получил ответ.

Пример на питоне (без лока)
https://askubuntu.com/a/553705

Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Спрасибо, будем разбираться.

П.С.: думал что все много проще, что я смогу скрипт положить в нужно место, который исполнится до гибернации.

Тему пока оставляю открытой.

Оффлайн archuser

  • Активист
  • *
  • Сообщений: 695
    • Просмотр профиля
А зачем так все сложно, когда есть systemd sleep hook?

Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
archuser,
И вам спасибо.

Для убунты тоже актуально? Что-то прямых упоминаний не вижу в поисковой выдаче.

Пользователь добавил сообщение 06 Декабря 2018, 13:10:58:
http://manpages.ubuntu.com/manpages/xenial/man8/pm-action.8.html#files
Это оно? Тему можно закрывать?
« Последнее редактирование: 06 Декабря 2018, 13:10:58 от Барабашка »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Барабашка, если порыскать на форуме, то уже есть готовые решения. кое какие даже я писал (мне надо было при suspend2ram, hibernate, shutdown производить манипуляции с портами USB. сейчас найду пример и дам =)

Код: (ini) [Выделить]
[Unit]                                                                                                                                                                                                                                                                       
Description=Halt USB Power
Before=suspend.target
DefaultDependencies=no

[Service]
ExecStart=/bin/sh -c 'for i in /sys/bus/usb/devices/*/power/level;do /bin/echo suspend | tee $i;done'
Type=simple

[Install]
WantedBy=suspend.target
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Morisson

  • Гость
EvangelionDeath, я как раз ищу такое решение.. У меня при выходе с гибернации рандомно отваливается клавиатура. Если передернуть модули- то все работает. Но передернуть нельзя, т.к. набирать не на чем)
Использую suspend-then-hibernate.
Сам попытался написать, но чет не работает

Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
EvangelionDeath,
Большое спасибо, но я пока, если честно, не понимаю что Вы за табличку мне в пример привели).
Я этого не делал ни разу.

По факту, мне надо при засыпании, как минимум:
    отправить строку для консольной утилиты
как максимум:
    вызвать функцию в уже загруженном gtk-gui, которая что-то выполнит и отправит эту же самую строку.

Хочу монтирование SSH вылечить.
« Последнее редактирование: 07 Декабря 2018, 11:15:03 от Барабашка »

Morisson

  • Гость
Барабашка, это sleep хуки называется.
https://wiki.archlinux.org/index.php/Power_Management#Sleep_hooks

Оффлайн Барабашка

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Пару примерчиков было бы неплохо, типа, вот так мы можем применить CLI команду.

Morisson

  • Гость
в /usr/lib/systemd/system-sleep помещаем скрипт

#!/bin/sh
case $1/$2 in
  pre/*)
    тут_ваша_команда_которая/будет/выполняться/перед/уходом/в/сон/или/гибернацию
    можно/несколько
    ;;
  post/*)
    соответственно/тут/после/выхода/из/сна
    писать/полный/путь
    например
    /usr/bin/modprobe -i ваш_модуль_ядра
    ;;
esac

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.