Ejemplo n.º 1
0
    def handler_manager(self, src=None):
        # Activate window of running instance, if any
        try:
            screen = Wnck.Screen.get_default()
            screen.force_update()
            for window in screen.get_windows():
                if window.get_class_instance_name() == "boincmgr":
                    window.activate(time.time())
                    return
        finally:
            window = None
            screen = None
            Wnck.shutdown()

        # Launch via desktop
        for desktop in xdg.load_data_paths(osp.join("applications", "boinc-manager.desktop")):
            Gio.DesktopAppInfo.new_from_filename(desktop).launch([], None)
            return

        # Launch via executable
        try:
            subprocess.Popen(["boincmgr"], cwd="/var/lib/boinc-client")
            return
        except OSError:
            pass
Ejemplo n.º 2
0
    def _activate_window_(self):
        """This function uses Wnck to set a window as the active/focused window on 
            the user's screen. It is especially useful when combined with Gdk to 
            get active window pixels. Note: Gdk has no direct way of accessing a 
            window by title.

        Returns:
            bool: True if window found and activated, else False
        """
        screen = Wnck.Screen.get_default()
        screen.force_update()  # recommended per Wnck documentation
        found_win = False
        for window in screen.get_windows():
            name = window.get_name()
            if (name == self.window_title):
                found_win = True
                window.activate(0)
                time.sleep(self.activation_delay)

                ##should be the proper solution but Wnck/Pygi is kinda trash;
                ##the active boolean never returns true and proper activate times fail.
                # window.activate(int(time.time()))
                # while(not window.is_active()):
                #     time.sleep(self.activation_delay)
                break

        # clean up Wnck (saves resources, check documentation)
        window = None
        screen = None
        Wnck.shutdown()
        return found_win
Ejemplo n.º 3
0
 def getAllWindowsPid(self):
     try:
         screen = Wnck.Screen.get_default()
         screen.force_update()
         return [win.get_pid() for win in screen.get_windows()]
     finally:
         screen = None
         Wnck.shutdown()
Ejemplo n.º 4
0
 def on_event(self, event, extension):
     for window in list_windows():
         if window.get_xid() == event.get_data():
             previous_selection = extension.selection
             extension.previous_selection = previous_selection
             extension.selection = window.get_xid()
             activate(window)
     Wnck.shutdown()
Ejemplo n.º 5
0
    def initGameCapture(self, gameWindow, monitorIndex, captureFullscreen):

        self.winCapture = mss()

        # find default monitor resolution
        if captureFullscreen:
            window = Gtk.Window()
            screen = window.get_screen()

            self.width = screen.get_monitor_geometry(monitorIndex).width
            self.height = screen.get_monitor_geometry(monitorIndex).height

            self.winGame = {
                'top': screen.get_monitor_geometry(monitorIndex).y,
                'left': screen.get_monitor_geometry(monitorIndex).x,
                'width': self.width,
                'height': self.height
            }

            self.reducedSizeSsim = (int(self.width * self.ratioSsim),
                                    int(self.height * self.ratioSsim))
            self.reducedSizeTemplate = (int(self.width * self.ratioTemplate),
                                        int(self.height * self.ratioTemplate))

        # try to find a window names after settings.gameWindow
        else:
            Gtk.init([])
            screen = Wnck.Screen.get(monitorIndex)
            screen.force_update()

            winGeometry = 0

            for window in screen.get_windows():
                if window.get_name() == gameWindow:
                    winGeometry = window.get_geometry()
                    break

            window = None
            screen = None
            Wnck.shutdown()
            assert winGeometry != 0, gameWindow + ' not found; exiting...'

            self.width = winGeometry.widthp
            self.height = winGeometry.heightp

            self.winGame = {
                'top': winGeometry.yp,
                'left': winGeometry.xp,
                'width': self.width,
                'height': self.height
            }

            self.reducedSizeSsim = (int(winGeometry.widthp * self.ratioSsim),
                                    int(winGeometry.heightp * self.ratioSsim))
            self.reducedSizeTemplate = (int(winGeometry.widthp *
                                            self.ratioTemplate),
                                        int(winGeometry.heightp *
                                            self.ratioTemplate))
Ejemplo n.º 6
0
def main(argv):

    # No arg list, pass out help
    if len(argv) == 0:
        printHelp()
        sys.exit(2)

    buff = 20

    try:
        opts, args = getopt.getopt(argv,"hudlrb:v")
    except getopt.GetoptError as err:
        printHelp()
        sys.exit(2)

    direction = ""
    verbose = False

    for opt, arg in opts:
        if opt == "-h":
            printHelp()
            sys.exit()
        elif opt == "-u":
            direction = "UP"
        elif opt == "-d":
            direction = "DOWN"
        elif opt == "-l":
            direction = "LEFT"
        elif opt == "-r":
            direction = "RIGHT"
        elif opt == "-b":
            buff = int(arg)
        elif opt == "-v":
            verbose = True

    # Grab window list and geo
    Gtk.init([])  # necessary if not using a Gtk.main() loop
    screen = Wnck.Screen.get_default()
    screen.force_update()  # recommended per Wnck documentation

    window_list = screen.get_windows()
    active_window = screen.get_active_window()

    workspace_id = screen.get_active_workspace().get_number()

    if len(window_list) > 0:
        window = findWindow( direction, window_list, workspace_id, active_window, buff, verbose )
    else:
        print( "Empty window list!" )
        sys.exit(2)

    if window != None:
        now = GdkX11.x11_get_server_time(Gdk.get_default_root_window())
        window.activate(now)

    window = None
    screen = None
    Wnck.shutdown()
Ejemplo n.º 7
0
 def close(self):
     print('close window: %s' % self.pid)
     screen = Wnck.Screen.get_default()
     screen.force_update()
     for win in screen.get_windows():
         if self.pid == win.get_pid():
             win.close(1)
     screen = None
     Wnck.shutdown()
Ejemplo n.º 8
0
def getWindowName():
    sleep(5)
    try:
        screen = Wnck.Screen.get_default()
        screen.force_update()
        window = screen.get_active_window()
        return window.get_name()
    finally:
        window = None
        screen = None
        Wnck.shutdown()
Ejemplo n.º 9
0
def getAllWindows():
    try:
        wins = []
        screen = Wnck.Screen.get_default()
        screen.force_update()
        for win in screen.get_windows():
            wins.append(win)
        return wins
    finally:
        win = None
        screen = None
        Wnck.shutdown()
Ejemplo n.º 10
0
def getAllWindowNames():
    sleep(5)
    try:
        winNames = []
        screen = Wnck.Screen.get_default()
        screen.force_update()
        for win in screen.get_windows():
            winNames.append(win.get_name())
        return winNames
    finally:
        win = None
        screen = None
        Wnck.shutdown()
Ejemplo n.º 11
0
def xgeo_wnck():
    gi.require_version('Wnck', '3.0')
    from gi.repository import Wnck
    screen = Wnck.Screen.get_default()
    screen.force_update()

    #for window in screen.get_windows():
    #    if window.is_active():
    #        print(window.get_geometry())
    #        window_name = window.get_name()
    #        print(window_name)

    screen = None
    Wnck.shutdown()
Ejemplo n.º 12
0
def findWindow(windowname):
    screen = Wnck.Screen.get_default()
    screen.force_update()

    for win in screen.get_windows():
        if windowname == win.get_name():
            screen = None
            Wnck.shutdown()
            return win

    screen = None
    win = None
    Wnck.shutdown()

    return None
def main():
    while Gtk.events_pending():
        Gtk.main_iteration()

    screen = Wnck.Screen.get_default()
    screen.force_update()
    screen.connect("window-opened", on_new_window)
    screen.change_workspace_count(1)
    screen.force_update()

    config_file = open(sys.argv[1], 'r')

    for line in config_file:
        glib.timeout_add(1000, execute, line)
        Gtk.main()

    Wnck.shutdown()
    screen.force_update()
def main():
	while Gtk.events_pending():
		Gtk.main_iteration()

	screen = Wnck.Screen.get_default()
	screen.force_update()
	screen.connect("window-opened", on_new_window)
	screen.change_workspace_count(1)
	screen.force_update()

	config_file = open(sys.argv[1], 'r')

	for line in config_file:
		glib.timeout_add(1000, execute, line)
		Gtk.main()

	Wnck.shutdown()
	screen.force_update()
Ejemplo n.º 15
0
def selectCharacterWindow(window_to_select):
    """Select the characters window."""
    Gtk.init([])  # necessary only if not using a Gtk.main() loop
    screen = Wnck.Screen.get_default()
    screen.force_update()  # recommended per Wnck documentation

    # loop all windows
    for window in screen.get_windows():
        if window.get_name() == window_to_select:
            print ' - Getting window %s info' % window_to_select
            window.get(window.get_xid())
            print ' - Activating window %s' % window_to_select
            window.activate(int(time.time()))
            print ' - Setting window %s fullscreen' % window_to_select
            window.set_fullscreen(True)

    # clean up Wnck (saves resources, check documentation)
    window = None
    screen = None
    Wnck.shutdown()
Ejemplo n.º 16
0
def get_active_windows():
    Gtk.init([])  # necessary only if not using a Gtk.main() loop

    screen = Wnck.Screen.get_default()
    screen.force_update()  # recommended per Wnck documentation

    windows = screen.get_windows_stacked()
    for i, window in enumerate(windows):
        try:
            window.workspace_id = window.get_workspace().get_number() + 1
        except AttributeError:
            logger.debug("A window ({}) is not attached to any workspace".format(window.get_name()))
            # remove the window from the list to avoid NoneType on workspace_id
            del(windows[i])

    # clean up Wnck (saves resources, check documentation)
    screen = None
    Wnck.shutdown()

    return windows
Ejemplo n.º 17
0
def findWindowList(windowname, comparetype="equal"):
    screen = Wnck.Screen.get_default()
    screen.force_update()

    winlist = []

    for win in screen.get_windows():
        if "equal" == comparetype:
            if windowname == win.get_name():
                winlist.append(win)
        else:
            if windowname in win.get_name():
                winlist.append(win)

    screen = None
    Wnck.shutdown()

    if len(winlist) > 0:
        return winlist

    return None
Ejemplo n.º 18
0
def _findWindow(windowname, comparetype):
    screen = Wnck.Screen.get_default()
    screen.force_update()

    for win in screen.get_windows():
        if "equal" == comparetype:
            if windowname == win.get_name():
                screen = None
                Wnck.shutdown()
                return win
        else:
            if windowname in win.get_name():
                screen = None
                Wnck.shutdown()
                return win

    screen = None
    win = None
    Wnck.shutdown()

    return None
Ejemplo n.º 19
0
def _findWindowByAppName(applicationName, comparetype):
    screen = Wnck.Screen.get_default()
    screen.force_update()

    for win in screen.get_windows():
        #if "equal" == comparetype:
        if applicationName == (win.get_application()).get_name():
            print((win.get_application()).get_name())
            print(len((win.get_application()).get_name()))
            print(len(applicationName))
            screen = None
            Wnck.shutdown()
            return win
    #else:
        if applicationName in (win.get_application()).get_name():
            screen = None
            Wnck.shutdown()
            return win

    screen = None
    win = None
    Wnck.shutdown()

    return None
Ejemplo n.º 20
0
from gi.repository import Gtk, Wnck

Gtk.init([])  # necessary only if not using a Gtk.main() loop
screen = Wnck.Screen.get_default()
screen.force_update()  # recommended per Wnck documentation

visibility = False

# loop all windows
for window in screen.get_windows():
    if window.get_name() == 'Guake!':
        visibility = True

# clean up Wnck (saves resources, check documentation)
window = None
screen = None
Wnck.shutdown()

print visibility
Ejemplo n.º 21
0
 def exit(self, *args):
     # I don't know if this is actually necessary...
     self.screen = None
     
     Wnck.shutdown()
     Gtk.main_quit()
Ejemplo n.º 22
0
from gi.repository import Gtk, Wnck

Gtk.init([])  # necessary only if not using a Gtk.main() loop
screen = Wnck.Screen.get_default()
screen.force_update()  # recommended per Wnck documentation

# loop all windows
for window in screen.get_windows():
    name = window.get_name()
    print(name)
    if name == "Rad Racer (U)":
        print("Right window founded")
        window.set_geometry(0,Wnck.WindowMoveResizeMask.X | \
                          Wnck.WindowMoveResizeMask.Y | \
                          Wnck.WindowMoveResizeMask.WIDTH | \
Wnck.WindowMoveResizeMask.HEIGHT,100,100,800,600)

    # ... do whatever you want with this window

# clean up Wnck (saves resources, check documentation)
window = None
screen = None
Wnck.shutdown()
Ejemplo n.º 23
0
 def __exit__(self, exc_type, exc_value, traceback):
     screen = None
     Wnck.shutdown()