示例#1
0
 def _do_kill(process_id):
     os.system("kill %d" % process_id)
     time.sleep(0.5)
     if process_id in gtop.proclist():
         time.sleep(5.0)
         if process_id in gtop.proclist():
             os.system("kill -9 %d" % process_id)
示例#2
0
    def _do_reload_menu(self):
        if not self.active:
            return

        this_items = {}
        if self._mode == "applications":
            if self.bamf_matcher is not None:
                for window in self.bamf_matcher.RunningApplications():
                    try:
                        item = self._get_item_for_bamf_application(window)
                        this_items[item.id] = item
                    except Exception as e:
                        logger.debug("Could not get info from BAMF",
                                     exc_info=e)
                        pass
            else:
                from gi.repository import Wnck as wnck
                screen = wnck.Screen.get_default()
                for window in screen.get_windows():
                    pid = window.get_pid()
                    if pid > 0:
                        item = self._get_menu_item(pid)
                        item.process_name = window.get_name()
                        this_items[item.id] = item
                        pixbuf = window.get_icon()
                        if pixbuf:
                            item.icon = g15cairo.pixbuf_to_surface(pixbuf)

        else:
            for process_id in gtop.proclist():
                process_id = "%d" % process_id
                try:
                    pid = int(process_id)
                    proc_state = gtop.proc_state(pid)
                    proc_args = gtop.proc_args(pid)
                    if self._mode == "all" or (self._mode != "all" and
                                               proc_state.uid == os.getuid()):
                        item = self._get_menu_item(pid)
                        item.icon = None
                        item.process_name = self._get_process_name(
                            proc_args, proc_state.cmd)
                        this_items[item.id] = item
                except Exception as e:
                    logger.debug("Process may have disappeared", exc_info=e)
                    # In case the process disappears
                    pass

        # Remove any missing items
        for item in self.menu.get_children():
            if item.id not in this_items:
                self.menu.remove_child(item)

        # Make sure selected still exists
        if self.menu.selected is not None and self.menu.get_child_by_id(
                self.menu.selected.id) is None:
            if len(self.menu.get_child_count()) > 0:
                self.menu.selected = self.menu.get_children()[0]
            else:
                self.menu.selected = None

        self.page.mark_dirty()
        self.screen.redraw(self.page)