Code Monkey home page Code Monkey logo

waketimed's Introduction

crates.io license test suite

waketimed

Project summary

Waketimed is an experimental daemon for managing the sleep/wake cycle of Linux phones and similar devices. It aims to keep the device sleeping as much as possible to preserve battery life. It is perhaps a bit structurally overengineered :) but it is light on resources.

Implementation status

When using waketimed currently, please be aware that it's in early development phase. The design and feature set are being figured out. Seamless non-breaking upgrades (e.g. config file compatibility between versions) are a nice to have but not the main priority right now.

The project idea is that waketimed could put the device to sleep and also wake it up periodically. However, only putting the device to sleep is implemented right now. If you want periodic system wake-ups in addition to wake-ups caused by the user or the modem, it is presently recommended to create a systemd timer.

Documentation

waketimed user documentation

Context

Without waketimed, Linux phones typically rely on automatic suspend functionality inherited from desktop and laptop computers. While this is a working solution, having the auto-suspend timer at e.g. 3 minutes often leaves the phone idle but not suspended for longer time than necessary, shortening precious battery life. Setting the idle and suspend timers to something more aggressive like 20 seconds is possible, but it is disturbing when the user wants to read something longer on the screen. Additionally, when testing these short timeouts, they seemed somewhat unreliable in actually suspending the device after the specified time.

Waketimed allows you to have generous idle timers in the desktop environment, but once it detects the device is not being used (screen off, no active/ringing call etc.), it suspends the device after a rather short time (10 seconds by default).

waketimed's People

Contributors

jistr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

waketimed's Issues

Thread race condition on shutdown

[2022-10-30T16:59:48Z ERROR waketimed::worker::var_worker] Could not send EngineMsg::ReturnVarPoll
    
    Caused by:
        channel closed

This doesn't cause any trouble since it only happens on termination of the daemon, but still it would be nice to get rid of this error, to keep logs clean. We should make sure that the engine message receiver outlives the worker thread.

Object does not exist at path “/org/freedesktop/ModemManager1/Modem/1”

It seems that now on PinePhone the modem number in DBus API gets incremented with each sleep/wake cycle. Previously the rule relied on listing Modems only when waketimed started, and it seemed to work, but now the modem number gets incremented at device runtime. E.g. now my phone doesn't have /org/freedesktop/ModemManager1/Modem/1 anymore as when it booted up, but it has /org/freedesktop/ModemManager1/Modem/6. I guess we should just query the modems each time we poll the variable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.