def findXScreens(self):
        qapp = QtCore.QCoreApplication.instance()
        if not qapp: # QApplication has not been started
            return
        
        screens = qapp.screens()
        """
        let's find out which screens are virtual

        screen, siblings:

        One big virtual desktop:

        A [A, B, C]
        B [A, B, C]
        C [A, B, C]

        A & B in one xscreen, C in another:

        A [A, B]
        B [A, B]
        C [C]

        """
        virtual_screens = set()
        for screen in screens:
            # if screen has been deemed as "virtual", don't check its siblings
            if (screen not in virtual_screens):
                siblings = screen.virtualSiblings()
                # remove the current screen under scrutiny from the siblings
                # list
                virtual_screens.update(set(siblings).difference(set([screen])))
                # .. the ones left over are virtual

        # print("GPUHandler: findXScreens: virtual screens",virtual_screens)
        true_screens = list(set(screens) - virtual_screens)

        # sort'em
        for screen in true_screens:
            self.true_screens.insert(screens.index(screen), screen)

        print("GPUHandler: findXScreens: true screens:", self.true_screens)