If possible by the way, see if you can find a better name for "Output". I still think there's some confusion between "Output" and "CompOutput" - the responsibility of this class seems to be finding a fullscreen window to unredirect based on which windows are not occluded.
I did mention it before, but I find that difficulty in finding a name for a class might indicate that its doing too many unrelated things. In this case, the class is checking for a window to unredirect and then offering a way to get the result. Perhaps it would be better if it stored an interface by which the window could be unredirected and then provided a method to call into the class to unredirect the saved fullscreen window. That way the class could be called "UnoccludedWindowUnredirector". Yes I know you don't like -er, but this is still a noun.
If possible by the way, see if you can find a better name for "Output". I still think there's some confusion between "Output" and "CompOutput" - the responsibility of this class seems to be finding a fullscreen window to unredirect based on which windows are not occluded.
I did mention it before, but I find that difficulty in finding a name for a class might indicate that its doing too many unrelated things. In this case, the class is checking for a window to unredirect and then offering a way to get the result. Perhaps it would be better if it stored an interface by which the window could be unredirected and then provided a method to call into the class to unredirect the saved fullscreen window. That way the class could be called "UnoccludedWind owUnredirector" . Yes I know you don't like -er, but this is still a noun.