Skip to main content
  1. Writing/

PowerToys Awake Now Has Icons And Helpful Tooltips

Way overdue, but with the release of Microsoft PowerToys 0.83.0, my very own PowerToys Awake comes in tow with a bunch of improvements that I wanted to do for a long time. This release is codenamed DAISY023, in reference to, of course, Daisy-023. Rumor has it that all PowerToys Awake codenames follow some Halo theme. Go figure - who would come up with something like that?

Besides the typical “performance improvements and bug fixes” that became the de-facto changelog entries in almost all modern software, there are a few changes that I am particularly happy about.

State icons #

When I am focused and working on something, the last thing I need is spending cycles (however small) on checking the state of PowerToys Awake. One could do that by launching PowerToys Settings or opening the context menu in the tray to see what state item is checked off. Not exactly the pinnacle of convenience. Now, you can just peek at the icon to see what the actual state is and at a glance have an idea of what PowerToys Awake is doing.

Selecting the state of PowerToys Awake from the system tray.
Selecting the state of PowerToys Awake from the system tray.

There are several states that the application can take:

State Icon Description
Disabled (Passive)
Passive mode icon for PowerToys Awake
PowerToys Awake is running but does not hold any power states. That means your operating system’s power plan is in effect.
Timed (Interval)
Timed mode icon for PowerToys Awake
You set PowerToys Awake to keep your computer awake for a pre-defined time interval (e.g., 30 minutes).
Expirable
Expirable mode icon for PowerToys Awake
PowerToys Awake will be keeping the defined power request until a date and time that you’ve set through PowerToys settings or in the configuration file.
Indefinite
Indefinite mode icon for PowerToys Awake
PowerToys Awake will continue to keep your computer awake until you exit the application.

The icons will also be available even when PowerToys Awake is running in standalone mode (that is - outside the broader PowerToys suite), allowing its users to see the state even if they launched the application from the Terminal (which I do a lot).

Because this is the first version of the icons, I expect that some folks might have feedback on them. The more I use it, the more I realize that it probably needs a bit of a pop of color to make the state recognizable from afar, even at 16x16 resolution, but that’s something for a future release.

A special shout-out to Niels Laute for designing and producing the state icons!

No more Windows Forms #

Windows Forms is still a viable (albeit a bit dated) UI framework for Windows. I’ve only had a dependency on it in PowerToys Awake for the tray icon, but that felt like bringing along a table saw to cut a wooden chopstick. So, in the latest release there is no more Windows Forms binaries bundled with the tool. A hidden window is created through native Windows APIs (thank you to Brian Peek for the help here) and the tray icon is bound to it. That’s it - that’s the trick to get rid of an unnecessary dependency. Spend inordinate amounts of time figuring out how to P/Invoke the right magic Win32 incantations from C#.

Helpful tooltips #

If you remember the early versions of PowerToys Awake, you also probably remember that the tooltip in the tray was somewhat useless when it comes to providing contextual hints about the tool activity. Well, not anymore. From now on, the tooltip displays both the current state as well as the target end time for the requested power state.

PowerToys Awake showing a tooltip in the tray.
PowerToys Awake showing a tooltip in the tray.

Exit on standalone task completion #

Whenever you used PowerToys Awake in standalone mode, such as launching PowerToys.Awake.exe with command line arguments that don’t require the use of a PowerToys config file, upon the completion of the task the tool would just… hang out in the terminal. That wasn’t necessary, so I decided to explicitly terminate the process every time it completes a required state. This is more of a convenience change - it doesn’t affect the application when it runs from the suite of PowerToys tools, but it also won’t keep the process up and running when it does nothing.

DPI awareness #

No more blurry context menus. I’ve finally addressed the long-standing issue where PowerToys Awake tray context menu was not mixed DPI-aware.

Feedback & comments #

That’s it for the current build. There are a bunch of other features and fixes that I plan to implement in the upcoming releases of PowerToys Awake. If you see something that doesn’t work or there’s functionality that you’d find useful that’s not there - open an issue.

Thank you for checking out PowerToys Awake and for the continuous feedback on GitHub. It truly made the tool better compared to when I first started it.

Speaking of when things were first started, here’s a random factoid for you that you didn’t ask for - PowerToys draws its roots all the way back to Windows 95:

Original landing page for PowerToys for Windows 95.
Original landing page for PowerToys for Windows 95.

Windows XP also had its own collection of “toys” under the same brand:

Original landing page for PowerToys for Windows XP.
Original landing page for PowerToys for Windows XP.

I do wonder how we’ll look back at the current collection of PowerToys tools in two decades.