Вопрос или проблема
Я пытаюсь выяснить, что вызывает это сообщение об управлении питанием в моем KDE Plasma (Kubuntu 24.04, Plasma 5.27.11):
Потому что если я запрашиваю через D-Bus, я не вижу этого:
gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --method org.freedesktop.login1.Manager.ListInhibitors
([
('sleep', 'signal-desktop', 'Очистка приложения перед приостановкой', 'delay', uint32 1000, uint32 474396),
('sleep', 'ModemManager', 'ModemManager необходимо сбросить устройства', 'delay', 0, 1829),
('sleep', 'Screen Locker', 'Обеспечение блокировки экрана перед переходом в режим сна', 'delay', 1000, 2601),
('handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch', 'PowerDevil', 'KDE обрабатывает события питания', 'block', 1000, 2713),
('sleep', 'UPower', 'Приостановка опроса устройств', 'delay', 0, 2287),
('sleep', 'NetworkManager', 'NetworkManager необходимо отключить сети', 'delay', 0, 1757),
('shutdown', 'Unattended Upgrades Shutdown', 'Прекратить текущие обновления или выполнить обновления перед завершением работы', 'delay', 0, 1984)],)
Есть ли другое место для поиска (я смотрел с помощью qdbusviewer
, но не смог найти объект с используемым вызовом для перечисления всего)?
Кроме того, несмотря на отображение, я все еще могу блокировать и переходить в режим сна…
Ответ или решение
Вопрос о нахождении блокировщиков сна/блокировки в системе D-Bus в среде KDE Plasma (Kubuntu 24.04, Plasma 5.27.11) требует внимательного анализа, так как в D-Bus осуществляется взаимодействие между различными компонентами операционной системы.
1. Понимание D-Bus
D-Bus является системой межпроцессного взаимодействия, которая позволяет различным программам обмениваться сообщениями друг с другом. В системе D-Bus есть два основных системных объекта: session bus
и system bus
. Блокировки сна, о которых вы упоминаете, скорее всего, относятся к системному шине.
2. Использование команд gdbus
Вы уже используете команду gdbus
, чтобы получить список активных блокировщиков, однако у вас не получается увидеть все возможные блокировки. Это может произойти из-за того, что некоторые блокировки могут не отображаться по умолчанию или могут не быть зарегистрированы в org.freedesktop.login1
.
Вы запрашиваете список через:
gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --method org.freedesktop.login1.Manager.ListInhibitors
Эта команда возвращает лишь тех блокировщиков, которые зарегистрированы в login1
. Ваша проблема заключается в том, что спящий режим и блокировка могут быть вызваны другим компонентом и не отражаются в текущем вызове.
3. Поиск альтернативных мест
Если вы не видите все блокировки, возможно, стоит воспользоваться следующими методами:
-
Использование
qdbus
илиqdbusviewer
: Эти инструменты позволяют исследовать шины D-Bus более графически и интуитивно. Попробуйте проверить все доступные сервисы, чтобы увидеть, есть ли дополнительные конкуренты на истолкование сообщений, обычно сервисы могут умножаться, и полезно увидеть все зарегистрированные. -
Инструменты мониторинга: Использование инструментов, таких как
d-feet
– это графический интерфейс для работы с D-Bus, может помочь вам найти дополнительные службы и возможности. -
Вызовы специфичных компонентов: Ваша проблема также может крыться в других компонентах управления энергией, таких как
UPower
илиPowerDevil
. Убедитесь, что вы исследуете их возможности через D-Bus.
4. Восприятие сообщения о блокировках
Несмотря на отображение блокировок, ваше устройство может все равно отправлять команды на усыпление или блокировку. Это происходит потому, что даже если различные деamon’ы блокируют системные вызовы, ряд из них могут просто не отображаться, а выполнять свои функции. Программы могут использовать временные задержки или ограничения, которые не фиксируются в вызовах.
5. Заключение
Возможные источники блокировок сна и блокировок не всегда легко обнаружимы через стандартные вызовы D-Bus. Рекомендуется проверять интеграцию различных компонентов управления энергией, использовать иные инструменты мониторинга D-Bus и тщательно учитывать, какие службы могут взаимодействовать между собой.
Если ваши усилия не увенчались успехом, вы можете обратиться к сообществу KDE или разработчикам, чтобы уточнить наличие known issues и потенциальных решений вашей проблемы.