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
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
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()
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()
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))
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()
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()
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()
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()
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()
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()
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 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()
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
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
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
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
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
def exit(self, *args): # I don't know if this is actually necessary... self.screen = None Wnck.shutdown() Gtk.main_quit()
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()
def __exit__(self, exc_type, exc_value, traceback): screen = None Wnck.shutdown()