-
Notifications
You must be signed in to change notification settings - Fork 146
feat: add hibernado plugin #892
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: add hibernado plugin #892
Conversation
Issues Found
Next Steps
Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️ |
|
reviewed Game Theme Music = 1.7.1-4621abd |
|
reviewed ScreenSaver 1.1.1 |
|
This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy. |
|
This is not on testing store yet, still awaiting a maintainer review |
|
@TrainDoctor @EMERALD0874 @AAGaming00 @KP2048 anyone able to take a look? |
|
This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy. |
EMERALD0874
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM for testing
|
I'm using BazziteOS on my Steam Deck (I'm using it for specific reasons that aren't relevant here). |
|
@atiladpribeiro yes, this solely works on steam os due to specific quirks, for bazzite hhd has its own hibernate option! |
Plugin Testing ReportInstalled Plugins
Specifications
IssuesHas the following major blocking issue(s): None
Summary
Overall, the plugin does what it says, and I'll probably be using it once it hits the official store. Note:
|
|
@causa-prima thanks for the detailed feedback, ill issue an update shortly to address some of these:
I think the direct hibernate is mostly solid, the rest is experimental and needs some re-thinking in terms of scripting. Thanks for the dogfooding! |
|
@causa-prima updated now |
Plugin Testing ReportInstalled Plugins
Specifications
IssuesHas the following major blocking issue(s): N/A Has the following minor non-blocking issue(s):
Summary
Note:
|
|
Bluetooth not working overall is likely a major issue, as it could cause numerous problems for users who primarily play their Deck with a dock. Can you please look into this, @xXJSONDeruloXx? |
|
@EMERALD0874 yes, looking into this, I think I know how to fix |
… button hook, restore sleep then hibernate feat
|
@EMERALD0874 @wynn1212 fixed the bt issues on resume and re-added the suspend then hibernate, let me know how that performs! |
|
Deployed latest update to testing store, sorry for the delay. I think I marked your reply as read by accident and didn't run the pipeline. |
|
No worries, thanks for the update! Feeling good about this one. I considered the hibernate at battery level approach but not happy with it yet, I'll leave that for a future feature I think |
|
After the update, initial testing confirms that the boot counter is now being reset correctly. However, I just noticed that the Bluetooth issue still occurs when using “Hibernate Now.” After waking up, Bluetooth does not work, the service doesn’t seem to trigger on resume. I have to manually run: in the terminal to restore Bluetooth functionality. Strangely, this issue does not occur when "Override Power Button" is enabled. If I set the power button to "hibernate immediately", then press it to suspend, the system enters hibernation and wakes up with Bluetooth working normally. In this case, the service appears to run correctly, and I can reconnect to my Bluetooth devices without any issue. I’ll need a bit more time to fully test the plugin so I can provide a complete test report. |
|
Regarding the swapfile issue mentioned in xXJSONDeruloXx/hibernado#5 I think it may be possible to avoid deleting an existing swapfile if it wasn’t originally created by Hibernado. For example:
|
Add Hibernado to Plugin Store
Hibernado is a decky plugin that lets Steam Deck hibernate or suspend-then-hibernate from within game mode/gamescope session.
On first plugin install, user must click the setup button, where a few things like swapfile creation, symlink creation, some systemd helpers etc. The bulk of the implementation here mirrors the guide from: Steam Deck Hibernation Guide by nazar256 (credited in readme and
hibernation-helper.shscript), with some key changes to fix things from their guide like boot count incrementing incorrectly after multiple successful hibernate and resumes.Once all is configured, user can choose either manually executing hibernation, or sleep then hibernate from buttons inside the plugin, with a drop down to choose the time between suspend and hibernate (default 60 min).
Additionally they can toggle on a power button override, where they can set the deck's power button to either hibernate or suspend > hibernate on button press. Suspend-then-hibernate mirrors the manual button setting for span between sleep and hibernate setting.
If user presses "remove setup" button at the bottom of the plugin, or on the even the plugin is uninstalled or reinstalled through decky, all the above setup files and symlinks are removed and undone, so the plugin is sure to "clean up after itself" and be a good citizen.
Per our Discord discussions, this has been fully re-worked from my earlier version that relied on system file unlocking. I believe the current implementation should be safe and compliant with decky store policy. Looking forward to your review!
Task Checklist
Developer
Plugin
Backend
Community
Testing