Skip to content

Conversation

@xXJSONDeruloXx
Copy link
Contributor

@xXJSONDeruloXx xXJSONDeruloXx commented Oct 27, 2025

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.sh script), 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

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.

Plugin

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or provides more/alternative functionality to a plugin already on the store.

Backend

  • No: I am using a custom backend other than Python.
  • No: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
  • No: I am using a custom binary that has all of it's dependencies statically linked.

Community

  • I have tested and left feedback on two other pull requests for new or updating plugins.
  • I have commented links to my testing report in this PR.

Testing

  • Tested by a third party on SteamOS Stable or Beta update channel.

@xXJSONDeruloXx xXJSONDeruloXx requested a review from a team as a code owner October 27, 2025 15:10
@github-actions github-actions bot added the plugin-addition Adding a plugin to the Plugin Store label Oct 27, 2025
@github-actions
Copy link

Issues Found

  • Both testing boxes are present in your description. Please remove one of them per the Markdown comment above the testing section.

Next Steps

  1. If we found any issues above, please edit your pull request description to resolve them and leave a comment saying you've done so.
  2. For the quickest review, please see the Community section of the pull request template for how you can help other developers.
  3. Once your description is correct, a maintainer will review your pull request as soon as possible.

Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️

@xXJSONDeruloXx
Copy link
Contributor Author

xXJSONDeruloXx commented Oct 27, 2025

reviewed Game Theme Music = 1.7.1-4621abd

@xXJSONDeruloXx
Copy link
Contributor Author

reviewed ScreenSaver 1.1.1

@github-actions
Copy link

github-actions bot commented Nov 5, 2025

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.

@github-actions github-actions bot added the stale label Nov 5, 2025
@xXJSONDeruloXx
Copy link
Contributor Author

This is not on testing store yet, still awaiting a maintainer review

@github-actions github-actions bot removed the stale label Nov 6, 2025
@xXJSONDeruloXx
Copy link
Contributor Author

@TrainDoctor @EMERALD0874 @AAGaming00 @KP2048 anyone able to take a look?

@github-actions
Copy link

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.

Copy link
Member

@EMERALD0874 EMERALD0874 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM for testing

@github-project-automation github-project-automation bot moved this from 🆕 New to 👀 In review in SDH Tracker Nov 18, 2025
@github-actions github-actions bot removed the stale label Nov 19, 2025
@atiladpribeiro
Copy link

I'm using BazziteOS on my Steam Deck (I'm using it for specific reasons that aren't relevant here).
And when I click on setup in the plugin, it shows a "Setup Fail" error.

@xXJSONDeruloXx
Copy link
Contributor Author

xXJSONDeruloXx commented Nov 23, 2025

@atiladpribeiro yes, this solely works on steam os due to specific quirks, for bazzite hhd has its own hibernate option!

@causa-prima
Copy link
Contributor

Plugin Testing Report

Installed Plugins

  • HLTB for Deck - 2.0.4
  • SteamGridDB - 1.7.0
  • PlayTime - 3.0.6
  • Hibarnado - 1.4.0-2171368
  • CSS Loader - 2.1.2
  • ProtonDB Badges - 1.1.0
  • Decky Sunshine - 2025.10.21.1311.51cc0e0

Specifications

  • SteamOS 3.7.17 (Stable)
  • Steam 1763795278 (Stable)
  • Decky 3.2.0 (Stable)

Issues

Has the following major blocking issue(s): None
Has the following minor non-blocking issue(s):

  1. The "Suspend -> Hibernate" button did not work as expected once (see summary).
  2. The button "Setup Hibernation" is enabled again after some time (presumably when the setup is finished) before switching to the "main view", and as there is no visible progress, I pressed it again.
  3. It might be a bit confusing (at least at first) that the "Hibernate now" button turns the screen off and back on again.
  4. It's probably even more confusing that "Suspend -> Hibernate" turns on the Deck's screen after the set delay, only indicating that the Deck is about to hibernate with the buttons shwoing "Hibernating.." and "Suspending..".
  5. The texts in the notifications are cut off.

Summary

  • Installed the Plugin and pressed the button "Setup Hibernation"
  • Pressed the "Hibernate now" button - the screen turned of after a short while, then back on again, with the buttons now showing "Hibernating.." and "Suspending..". After a few more seconds, the Deck went into hibernation as expected.
  • Pressed the Power-Button to wake up the Deck, which made it resume from hibernation after a few seconds
  • Changed the value in the Dropdown "Delay Before Hibernation" to the value "1 minute", resulting in the value being changed as expected, a notification about it being changed, and the plugin section reloading
  • Pressed "Suspend -> Hibernate (1 min)". The Deck went into Suspend immediately. After a minute, the screen woke up again, not showing any indication that the Deck is about to hibernate, and did not hibernate.
  • Pressed "Suspend -> Hibernate (1 min)" again. The Deck went into Suspend immediately. After a minute, the screen woke up again, this time with the buttons now showing "Hibernating.." and "Suspending..". After a few more seconds, the Deck's screen went black, with the fans making noise for > 5 minutes. I pressed the power button shortly, but nothing happened. Thus, I held the power button until the Deck turned off. After pressing the power button again, the Deck went back to the previously-shown screen of the plugin.
  • Started a game (Hades). From the game being in the menu, pressed "Hibernate Now". Same behavior as before: The buttons changed their text, screen went off an back on after a few seconds, and after a few more seconds, the Deck went into hibernation. Pressing the power button and the Deck returned to the menu screen of the game I started.
  • Toggled the "Override Power Button" toggle and left the "Power Button Behavior" unchanged. Pressed the Power button, which showed the normal "Going to Standby" animation and turned of the screen. After a few seconds, the screen turned back on, but stayed black, and after a few more seconds, turned off again.
  • Pressed the power button again, and the Deck again returned to the screen I left it with
  • Pressed the "Remove Hibernation" button, which reported removing the swaptfile with a notification, and after a few seconds returning to the initial setup screen of the plugin with only the "Setup Hibernation" button
  • Pressed the "Setup Hibernation" button again, which disabled the button for a few second, then enabled it again for about a second, before showing the other plugin screen with the manual buttons and settings

Overall, the plugin does what it says, and I'll probably be using it once it hits the official store.

Note:

  • I tested this on a Deck with 64 GB eMMC storage
  • Being used to just pressing the power button shortly to wake up the Deck from sleep, it might be worth to note in your plugin screen somewhere that you have to press the power button longer to wake up from hibernation - I was confused at first.
  • A feature I'd love to have (but that might not be possible to implement) would be "Suspend -> Hibernate at x % battery". I regularly encountered a drained battery when I did not turn off the Deck for a while because I thought I might find time to play again later that week, but actually didn't.

@xXJSONDeruloXx
Copy link
Contributor Author

@causa-prima thanks for the detailed feedback, ill issue an update shortly to address some of these:

  • for sleep then suspend, I think this feature is not ready for prime time, given the issues you experienced as well as my own testing where sometimes this does not effectively reset boot counter and lands the user in the rollback grub menu, I think I will keep the code but hide in front end, so user only has hibernate now, and override power button to hibernate now.

  • for hibernate at X batter %, ill look into the cleanest way to do this, I think its feasible but may also have issues similar to the suspend after sleep boot counter reset as mentioned above, may be a v2 type of feature

  • Considering removing all the toasts, and just having modals for the important bits

  • similarly, will explain to user the odd behaviors that are out of our hands for the hibernate, like potential looping sfx, screen re-waking, a minute or two of fans after screen is off etc

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!

@xXJSONDeruloXx
Copy link
Contributor Author

@causa-prima updated now

@wynn1212
Copy link
Contributor

wynn1212 commented Nov 28, 2025

Plugin Testing Report

Installed Plugins

  • Hibernado - 1.4.1-2ed41e1
  • Pause Games - 1.0.1-868c9f9
  • SteamGridDB - 1.7.0-889ac0b
  • Decky-Terminal - 0.5.3-3f5bf40
  • Animation Changer - 1.3.2-01f5968
  • AutoFlatpaks - 1.6.8-4c7ad65
  • EmuDecky - 1.0.8-cca33c1
  • Game Theme Music - 1.7.1-1-4621abd
  • ProtonDB Badges - 1.1.0
  • PowerTools - 2.0.3
  • Notebook - 0.1.5
  • CSS Loader - 2.1.2
  • Battery Tracker - 0.2.0
  • Audio Loader - 1.6.1-a683513
  • NonSteamLaunchers - 1.0.1-2213950
  • DeckSettings - 1.3.0-de05be7
  • Game Sync - 1.0.2-4c23be0
  • Wine Cellar - 0.1.7-3b75411
  • Better Keyboard - 0.2.3-8c8304a
  • PlayTime - 3.0.6-c772dfc
  • Free Loader 1.5.1-ad5a11c

Specifications

  • SteamOS 3.7.19_20251124.1 (Beta)
    • Also tested on SteamOS 3.9_20251124.1000 (Main)
  • Steam 1764106918 (Beta)
  • Decky v3.2.1 (Stable)

Issues

Has the following major blocking issue(s): N/A

Has the following minor non-blocking issue(s):

  • Bluetooth does not work after waking up from hibernation.
  • The Override Power Button doesn’t seems to reset the boot counter and ends up in the rollback GRUB menu after the 3rd boot.

Summary

  • Even though I tested this on the SteamOS beta channel, I also tested it on the SteamOS main channel, and everything appears to work fine there as well.

  • For users who created a swapfile using CryoUtilities (e.g., a 32 GB swapfile), the swapfile will be removed if this plugin is uninstalled. I understand that this is the intended behavior, but some users may not realize that their swapfile has been deleted. especially if they never press "Setup hibernation".

  • The same issue can occur when updating the plugin: users may not notice that their swapfile has been removed (or recreated at a smaller size if they set up hibernation again).

  • It would be great if the swapfile were not deleted when the user selects “Remove Hibernation” or when the plugin is uninstalled. Instead, there could be an option like “Delete swapfile during removal” for users who specifically want that behavior. This would also speed up the hibernation setup process during plugin updates, since the swapfile wouldn’t need to be recreated.

Note:

  • Tested on Steam Deck OLED 1TB

@EMERALD0874
Copy link
Member

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?

@xXJSONDeruloXx
Copy link
Contributor Author

@EMERALD0874 yes, looking into this, I think I know how to fix

… button hook, restore sleep then hibernate feat
@xXJSONDeruloXx
Copy link
Contributor Author

@EMERALD0874 @wynn1212 fixed the bt issues on resume and re-added the suspend then hibernate, let me know how that performs!

@EMERALD0874
Copy link
Member

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.

@xXJSONDeruloXx
Copy link
Contributor Author

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

@wynn1212
Copy link
Contributor

wynn1212 commented Dec 9, 2025

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:

sudo systemctl start fix-bluetooth-resume.service

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.

@wynn1212
Copy link
Contributor

wynn1212 commented Dec 9, 2025

Regarding the swapfile issue mentioned in xXJSONDeruloXx/hibernado#5
(where users may not realize their swapfile gets removed during plugin removal/reinstallation/update):

I think it may be possible to avoid deleting an existing swapfile if it wasn’t originally created by Hibernado.

For example:

  • When the user presses "Setup Hibernation":
    • If the swapfile does not exist, or if it’s smaller than the physical RAM (16 GB for the Steam Deck), remove it and recreate it.
    • After creating the swapfile, generate a small marker file (like created-by-hibernado) and write the original swapfile size (if the original swapfile was remove due to smaller than physical RAM) next to it as a flag.
  • When the user presses "Remove Hibernation" or when the plugin is removed/reinstalled/updated:
    • If the created-by-hibernado file exists, remove both the swapfile and the marker file.
      • If the created-by-hibernado has the original swapfile size, recreate the swapfile with original size.
    • If the created-by-hibernado file does not exist, leave the user’s swapfile untouched.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

plugin-addition Adding a plugin to the Plugin Store

Projects

Status: 👀 In review

Development

Successfully merging this pull request may close these issues.

5 participants