Control when your Mac sleeps as well as having a detailed view of which apps and are preventing sleep. Keep your Mac awake on a schedule, using a timer or based on how busy your computer is. You can even keep your Mac awake dependant on whether another computer is on and running a certain service! Wimoweh gives you complete control over your Mac’s sleep!
Wimoweh’s main window provides both an overview of system’s current power situation as well a quick and and easy way to choose when your Mac will sleep.
The top left pane shows the programs currently running on your Mac. By default this list shows applications with windows that appear on the desktop. If you want to be able to see every process (system daemons etc) then check the box marked Show all Processes.
There are 5 columns in this pane:
Icon: The icon (if any) associted with the application – this can help you quickly locate the program you’re looking for
Name: The name of the application
PID: The Process ID, this is the unique number that OS X uses to keep track of each program running on the system. For example, if you had two copies of the same program running their PIDs would be different. This allows you to make sure you’re choosing the correct program.
Never Sleep: Ticking this checkbox tells Wimoweh to prevent your Mac from sleeping whenever this program is running.
Display Sleep: This tick box is enable only when Never Sleep has been checked. This option keeps your Mac awake but allow the display to sleep which saves energy and can be less distracting when running at night.
Current Network Services
This pane shows all the computers on your local network that are advertising services using the Bonjour Service used by OS X and iOS as well as many Linux and (some) Windows computers. You might want your Mac to stay awake not just when something is running on it (locally) but also when another computer is running a particualr program or providing a service. For example, you might want your Mac to stay awake whenever your network aware TV is or media player is on. There are three columns here:
Host: Each computer or device on your network has a name associated with it to make it easier to identify. This is sometimes known as the the hostname. Each computer or host may have several services.
Service: A service, as far as Wimoweh is concerned, is a type of program that provides some kind of functionality that might be useful over a network. File sharing, media servers and the sshd system are examples of services.
Stay Awake: Ticking this box will keep your Mac awake whenever the service is available on the network.
No Sleep if Average CPU > X%
Wimoweh can stay awake if it detects that your system is busy. Every few seconds Wimoweh checks to see how busy the processor (CPU) in your Mac is and if it exceeds a user defined percentage over a user defined period of time then Wimoweh can keep your Mac awake.
This can be a useful alternative to the Current Processes pane if you have a job that will take an unknown period of time to complete but you’d like your Mac to sleep afterwards even if the program is still running. Ripping and encoding programs are good examples of this type of job.
Checking the tick box enables two sliders, the first alters the average % usage the processor – 0% is idle and 100% is fully utilised. The second slider alters the period of time we’re interested in, from one minute to one hour.
You can also see the current average CPU usage over time here as well.
Current Power Assertions
This bottom pane provides an overview of all the programs on your Mac that are currently making demands on the OS X power system.
Assertion is the name that Apple use to describe these demands. The concept is perhaps best explained with an example.
Imagine that you have written a program that converts music files from one format to another. If the user has selected 100 files then it might take some time to complete the conversion – it would be a bad experience for the user if they set the conversion running, went and made cup of tea and came back to find that in the meantime their Mac had gone to sleep and not completed the job or aborted partway through.
As a good programmer you might want to prevent the Mac from sleeping to allow your job to complete. Historically this has been difficult for a number of technical reasons but the Assertion model makes it easy from a programmer’s perspective. Rather than have to understand and fiddle with the Mac’ sleep subsystem you simple create an Assertion which effectively says to OS X ‘my program is currently doing some useful work, if it’s OK then don’t sleep until I remove the assertion’. Once our conversion job is finished we ask OS X to remove the assertion. You’ll note that we say to OS X ‘if it’s OK’ – ultimately OS X retains full control over when sleep happens and will always override applications if it needs to if, for example, the battery runs out, the lid of a portable is closed or the intriguing ‘unplanned thermal events’.
There are five columns used to describe assertions:
Application: The name of the application that created the assertion. Some of these might not be immediately recognisable to you as they are system processes that handle things to do with hardware or network services.
Any application you tick in Current Processes will appear here.
You’ll often see Wimoweh listed here as we create assertions for network services, timers etc.
Assertion Name: This is the name associated with the assertion – the format varies as it’s set by the application programmer. Apple stuff normally follows the com.apple.subsystem.interesting.things pattern as does Wimoweh. If the programmer didn’t put anything here we’ll indicate that.
Reason: This is another application provided field which (should / normally ) provides details as to why the assertion was created, for example, ‘Playing Music’, ‘Converting files’. If this isn’t provided we’ll say so here
Detail: Another application provided field which normally provides a little extra detail about the assertion. If this isn’t provided we’ll say so here
Type: This column shows which type of assertion this is – UserIsActive is used when for example keyboard and mouse movement is detected.