def __init__(self, hotkeys): gobject.GObject.__init__(self) self.hotkeys = hotkeys self.connection = ooxcb.connect() self.connection2 = ooxcb.connect() self.ctx = record.Context.create(self.connection, 0, [record.CS.AllClients], [record.Range.create( self.connection, (0, 0), (0, 0), (0, 0, 0, 0), (0, 0, 0, 0), (0, 0), (xproto.KeyPressEvent.opcode, xproto.KeyReleaseEvent.opcode), (0, 0), False, False )]) self.cookie = self.ctx.enable() self.connection.flush() res = False res = gobject.io_add_watch( self.connection.get_file_descriptor(), gobject.IO_IN, self._ooxcb_callback)
def init(self): """ This method establishes a connection to the X server and turns on the synchronous checks if self.synchronous_check is True (that means that you get X exceptions synchronously). The rest: * It configures signal handlers for SIGINT, SIGTERM, SIGHUP (all these signals will gracefully shut down samurai-x) """ log.info('init') self.conn = ooxcb.connect() # add the xcb file handles to the list of handles we select fd = self.conn.get_file_descriptor() self.add_fd_handler('read', fd, self.do_xcb_events) if self.synchronous_check: self.conn.synchronous_check = True self.cursors = ooxcb.contrib.cursors.Cursors(self.conn) signal.signal(signal.SIGINT, self.stop) signal.signal(signal.SIGTERM, self.stop) signal.signal(signal.SIGHUP, self.stop)
def __init__(self, conn=None, root=None): if conn is None: conn = connect() self.conn = conn if root is None: root = conn.setup.roots[conn.pref_screen].root self.root = root
def __init__(self): gobject.GObject.__init__(self) self.keymap = gtk.gdk.keymap_get_default() self.display = ooxcb.connect() self.screen = self.display.setup.roots[self.display.pref_screen] self.root = self.screen.root self.hotkeys = []
def main(): import sys import argparse def log(logfile): exc_type, exc_value, exc_traceback = sys.exc_info() traceback.print_exception(exc_type, exc_value, exc_traceback, limit=None, file=logfile) parser = argparse.ArgumentParser( description= 'Disable dpms and screensaver, if the currently active ' 'window is a fullscreen flash window or matches a few criterias.' ) parser.add_argument( '--interval', dest='interval', type=int, default=-1, help='The interval to check if there is a matching window to either ' 'enable or disable the screensaver.' ) parser.add_argument( '--name', dest='name', action='append', default=None, help='Disable the screensaver, if the currently active fullscreen ' 'window belongs to this process (fnmatching supported). ' 'This option can be used multiple times. ' 'Defaults to: chromium, opera, firefox, mplayer, mpv and vlc.' ) parser.add_argument( '--display', dest='display', default='', help='The X display to connect to, if not specified the DISPLAY ' 'environment variable will be used.' ) parser.add_argument( '--auth', dest='auth', default=None, help='Custom authentication cookie used to connect to the display.' ) ns = parser.parse_args() connection = ooxcb.connect(ns.display, auth_string=ns.auth) ssc = ScreenSaverControl(connection, ns.name) try: ssc.run(ns.interval) except KeyboardInterrupt: pass except Exception: log(sys.stderr)
def run(): conn = ooxcb.connect() setup = conn.get_setup() import simplejson style = simplejson.loads(sys.argv[1]) try: for i in xrange(setup.roots_len): screen_info = conn.get_setup().roots[i] set_root(conn, screen_info, style) finally: conn.disconnect()
def __init__(self): simplepanel.applet.Applet.__init__(self) self.connection = ooxcb.connect() self.screensaver_timeout = 0 self.toggle_screensaver self.icon_active = rsvg.Handle("data/applets/org.cream.simplepanel.ScreensaverApplet/screensaver_active.svg") self.icon_inactive = rsvg.Handle( "data/applets/org.cream.simplepanel.ScreensaverApplet/screensaver_inactive.svg" ) self.connect("click", lambda *args: self.toggle_screensaver()) self.draw()
def __init__(self): simplepanel.applet.Applet.__init__(self) self.connection = ooxcb.connect() self.screensaver_timeout = 0 self.toggle_screensaver self.icon_active = rsvg.Handle( 'data/applets/org.cream.simplepanel.ScreensaverApplet/screensaver_active.svg' ) self.icon_inactive = rsvg.Handle( 'data/applets/org.cream.simplepanel.ScreensaverApplet/screensaver_inactive.svg' ) self.connect('click', lambda *args: self.toggle_screensaver()) self.draw()
def __init__(self, icon_size): gobject.GObject.__init__(self) self.icon_size = icon_size self.conn = ooxcb.connect() self.screen = self.conn.setup.roots[self.conn.pref_screen] self.root = self.screen.root self.pywmctrl = Screen(self.conn, self.root) self.ignore_window_types = map( lambda name: self.conn.atoms['_NET_WM_WINDOW_TYPE_%s' % name].get_internal(), IGNORE_WINDOW_TYPES) self.windows_by_desktop = self.collect_windows() with self.conn.bunch(): self.root.change_attributes(event_mask=xproto.EventMask.PropertyChange) self.root.push_handlers(on_property_notify=self.on_property_notify) self._setup_mainloop()
def __init__(self, icon_size): gobject.GObject.__init__(self) self.icon_size = icon_size self.conn = ooxcb.connect() self.screen = self.conn.setup.roots[self.conn.pref_screen] self.root = self.screen.root self.pywmctrl = Screen(self.conn, self.root) self.ignore_window_types = map( lambda name: self.conn.atoms['_NET_WM_WINDOW_TYPE_%s' % name]. get_internal(), IGNORE_WINDOW_TYPES) self.windows_by_desktop = self.collect_windows() with self.conn.bunch(): self.root.change_attributes( event_mask=xproto.EventMask.PropertyChange) self.root.push_handlers(on_property_notify=self.on_property_notify) self._setup_mainloop()
import sys sys.path.append('..') import ooxcb from ooxcb.protocol import xproto conn = ooxcb.connect() screen = conn.pref_screen_object active = screen.get_active_window() reply = active.get_property('_NET_WM_NAME', 'UTF8_STRING').reply() if reply.exists: print 'The property exists.' else: print 'The property does not exist.' print 'Value: %s' % repr(reply.typed_value) for atom in screen.root.list_properties().reply().atoms: prop = screen.root.get_property(atom, xproto.GetPropertyType.Any).reply() print '%s(%s) = %r' % (atom.name, prop.type.name, prop.typed_value)
def __init__(self, **kwargs): display = kwargs.get('display', ':0') self._display = display self._conn = ooxcb.connect(display) self._root = self._conn.setup.roots[self._conn.pref_screen].root
def __init__(self): self.connection = ooxcb.connect() self.root = self.connection.setup.roots[self.connection.pref_screen].root
def __init__(self): cream.Module.__init__(self, 'org.sbillaudelle.Fuss') self.screensaver = XScreenSaverSession() self.window = gtk.Window() self.window.fullscreen() self.window.set_opacity(0) self.display = self.window.get_display() self.screen = self.display.get_default_screen() self.width, self.height = self.screen.get_width(), self.screen.get_height() self.window.resize(self.width, self.height) self.window.set_property('skip-pager-hint', True) self.window.set_property('skip-taskbar-hint', True) self.window.set_property('accept-focus', False) self.window.stick() self.window.set_keep_above(True) self.embed = cluttergtk.Embed() self.window.add(self.embed) self.embed.realize() self.stage = self.embed.get_stage() self.stage.set_color(clutter.Color(50, 50, 50)) self.background = clutter.texture_new_from_file(os.path.expanduser(self.config.background_image)) self.stage.add(self.background) # Display the time... self.time = Text('10:15', blur=True, font=pango.FontDescription('Droid Sans 220')) self.time.set_position((self.width - self.time.get_width()) / 2, 400) self.time.connect('allocation-changed', self.time_allocation_changed_cb) self.stage.add(self.time) # Display the date... self.date = Text('Montag, 6. Dezember 2010', blur=True, font=pango.FontDescription('Droid Sans 36')) self.date.set_position((self.width - self.date.get_width()) / 2, 700) self.date.connect('allocation-changed', self.date_allocation_changed_cb) self.stage.add(self.date) self.window.show_all() self.window.window.input_shape_combine_region(gtk.gdk.Region(), 0, 0) pixmap = gtk.gdk.Pixmap(None, 1, 1, 1) color = gtk.gdk.Color() cursor = gtk.gdk.Cursor(pixmap, pixmap, color, color, 0, 0) self.window.window.set_cursor(cursor) self.update() gobject.timeout_add(333, self.update) self.connection = ooxcb.connect() self.root = self.connection.setup.roots[self.connection.pref_screen].root self.cow = gtk.gdk.window_foreign_new(composite.WindowMixin.get_overlay_window(self.root).reply().overlay_win.xid) self.window.window.redirect_to_drawable(self.cow, 0, 0, 0, 0, self.window.get_allocation().width, self.window.get_allocation().height)
returns the active window object """ return self.root.get_active_window() def change_desktop(self, desktop): """ changes the current desktop. The desktops' count is starting at 0. """ self._send_clientmessage(self.root, "_NET_CURRENT_DESKTOP", 32, [desktop]) def get_current_desktop(self): """ returns the index of the current desktop, starting at 0, or None if it couldn't be fetched. """ property = self.root.get_property("_NET_CURRENT_DESKTOP", "CARDINAL") \ .reply() if property.exists: return property.value[0] else: return None if __name__ == '__main__': conn = connect() wmctrl = WMControl(conn, conn.setup.roots[0].root) wmctrl.change_desktop(1) print wmctrl.get_current_desktop()