xpra icon
Bug tracker and wiki

Ticket #489: choose-windows-by-pid.patch

File choose-windows-by-pid.patch, 2.3 KB (added by Antoine Martin, 5 years ago)

hacked patch to only show certain windows

  • xpra/server/server_base.py

     
    138138                    "suspend", "resume", "name", "ungrab",
    139139                    "key", "focus", "workspace", "idle-timeout",
    140140                    "client", "start", "start-child",
    141                     "send-file", "print"]
     141                    "send-file", "print", "restrict"]
    142142
    143143        self.init_encodings()
    144144        self.init_packet_handlers()
     
    13671367                assert ss.printing
    13681368                ss.send_file(filename, True, True, ss, maxbitrate, printer, title, options)
    13691369            return 0, "printing to %s initiated" % client_uuids
     1370        elif command=="restrict":
     1371            if len(args)<1:
     1372                return argn_err(1)
     1373            client_uuids = args[0]
     1374            pids = [int(x) for x in args[1:]]
     1375            sources = get_sources(client_uuids, "file_transfer")
     1376            if not sources:
     1377                return arg_err("no clients found matching: %s" % client_uuids)
     1378            for csource in sources:
     1379                csource.only_pids = pids
     1380            return 0, "%s sources restricted to pids %s" % (len(sources), pids)
    13701381        else:
    13711382            return ServerCore.do_handle_command_request(self, command, args)
    13721383
  • xpra/server/source.py

     
    273273
    274274        self.window_sources = {}                    #WindowSource for each Window ID
    275275        self.suspended = False
     276        self.only_pids = None
    276277
    277278        self.uuid = ""
    278279        self.machine_id = ""
     
    15491550                self.send("window-metadata", wid, metadata)
    15501551
    15511552    def can_send_window(self, window):
     1553        if self.only_pids:
     1554            try:
     1555                pid = window.get_property("pid")
     1556                log.info("can_send_window(%s) pid=%s, only_pids=%s", window, pid, self.only_pids)
     1557                if pid and pid not in self.only_pids:
     1558                    return False
     1559            except:
     1560                pass
    15521561        if self.send_windows and self.system_tray:
    15531562            #common case shortcut
    15541563            return True