Ejemplo n.º 1
0
    def fun(name):
        names = ewmh.get_desktop_names().reply()
        if name not in names:
            names.append(name)
            ewmh.set_desktop_names_checked(names).check()
            num_desks = ewmh.get_number_of_desktops().reply()
            ewmh.request_number_of_desktops_checked(num_desks + 1).check()

        ewmh.request_wm_desktop_checked(activewin, 
                                        names.index(name), 2).check()
Ejemplo n.º 2
0
    def fun(name):
        names = ewmh.get_desktop_names().reply()
        if name not in names:
            names.append(name)
            ewmh.set_desktop_names_checked(names).check()
            num_desks = ewmh.get_number_of_desktops().reply()
            ewmh.request_number_of_desktops_checked(num_desks + 1).check()

        ewmh.request_wm_desktop_checked(activewin, names.index(name),
                                        2).check()
Ejemplo n.º 3
0
def set_or_add_desktop(name):
    names = ewmh.get_desktop_names().reply()

    if name not in names:
        names.append(name)
        ewmh.set_desktop_names_checked(names).check()
        num_desks = ewmh.get_number_of_desktops().reply()
        ewmh.request_number_of_desktops_checked(num_desks + 1).check()

    ewmh.request_current_desktop_checked(names.index(name)).check()
Ejemplo n.º 4
0
def set_or_add_desktop(name):
    names = ewmh.get_desktop_names().reply()

    if name not in names:
        names.append(name)
        ewmh.set_desktop_names_checked(names).check()
        num_desks = ewmh.get_number_of_desktops().reply()
        ewmh.request_number_of_desktops_checked(num_desks + 1).check()

    ewmh.request_current_desktop_checked(names.index(name)).check()
Ejemplo n.º 5
0
def remove_empty_current_desktop():
    # This isn't as straight-forward as decrementing _NET_NUMBER_OF_DESKTOPS.
    # We need to make sure we remove the right name, too.
    # AND only do it if there are no clients on this desktop.
    clients = ewmh.get_client_list().reply()
    cur = ewmh.get_current_desktop().reply()
    for c in clients:
        if ewmh.get_wm_desktop(c).reply() == cur:
            return

    names = ewmh.get_desktop_names().reply()
    if cur < len(names):
        names.pop(cur)
        ewmh.set_desktop_names_checked(names).check()

    # Subtract one from every client's desktop above the current one
    for c in clients:
        cdesk = ewmh.get_wm_desktop(c).reply()
        if cdesk > cur and cdesk != 0xffffffff:
            ewmh.set_wm_desktop_checked(c, cdesk - 1).check()

    ndesks = ewmh.get_number_of_desktops().reply()
    ewmh.request_number_of_desktops_checked(ndesks - 1).check()
Ejemplo n.º 6
0
def remove_empty_current_desktop():
    # This isn't as straight-forward as decrementing _NET_NUMBER_OF_DESKTOPS.
    # We need to make sure we remove the right name, too.
    # AND only do it if there are no clients on this desktop.
    clients = ewmh.get_client_list().reply()
    cur = ewmh.get_current_desktop().reply()
    for c in clients:
        if ewmh.get_wm_desktop(c).reply() == cur:
            return

    names = ewmh.get_desktop_names().reply()
    if cur < len(names):
        names.pop(cur)
        ewmh.set_desktop_names_checked(names).check()

    # Subtract one from every client's desktop above the current one
    for c in clients:
        cdesk = ewmh.get_wm_desktop(c).reply()
        if cdesk > cur and cdesk != 0xffffffff:
            ewmh.set_wm_desktop_checked(c, cdesk - 1).check()

    ndesks = ewmh.get_number_of_desktops().reply()
    ewmh.request_number_of_desktops_checked(ndesks - 1).check()
Ejemplo n.º 7
0
def cb_prop_change(widget, e):
    global activewin, desk_names, desk_num, desktop, stacking, visibles

    if e.atom == '_NET_DESKTOP_GEOMETRY':
        root_geom = ewmh.get_desktop_geometry().reply()
        update_monitor_area()
    elif e.atom == '_NET_ACTIVE_WINDOW':
        activewin = ewmh.get_active_window().reply()
    elif e.atom == '_NET_CURRENT_DESKTOP':
        desktop = ewmh.get_current_desktop().reply()
    elif e.atom == '_NET_CLIENT_LIST_STACKING':
        stacking = ewmh.get_client_list_stacking().reply()
    elif e.atom == '_NET_VISIBLE_DESKTOPS':
        visibles = ewmh.get_visible_desktops().reply()
    elif e.atom in ('_NET_DESKTOP_NAMES', '_NET_NUMBER_OF_DESKTOPS'):
        desk_num = ewmh.get_number_of_desktops().reply()
        desk_names = ewmh.get_desktop_names().reply()

        # This works around what I think is weird behavior in Openbox.
        # Sometimes Openbox will "fix" the desktop names... please don't!
        if len(desk_names) > desk_num:
            names = desk_names[0:desk_num]
            ewmh.set_desktop_names_checked(names).check()
        desk_names = ewmh.get_desktop_names().reply()
Ejemplo n.º 8
0
def cb_prop_change(widget, e):
    global activewin, desk_names, desk_num, desktop, stacking, visibles

    if e.atom == '_NET_DESKTOP_GEOMETRY':
        root_geom = ewmh.get_desktop_geometry().reply()
        update_monitor_area()
    elif e.atom == '_NET_ACTIVE_WINDOW':
        activewin = ewmh.get_active_window().reply()
    elif e.atom == '_NET_CURRENT_DESKTOP':
        desktop = ewmh.get_current_desktop().reply()
    elif e.atom == '_NET_CLIENT_LIST_STACKING':
        stacking = ewmh.get_client_list_stacking().reply()
    elif e.atom == '_NET_VISIBLE_DESKTOPS':
        visibles = ewmh.get_visible_desktops().reply()
    elif e.atom in ('_NET_DESKTOP_NAMES', '_NET_NUMBER_OF_DESKTOPS'):
        desk_num = ewmh.get_number_of_desktops().reply()
        desk_names = ewmh.get_desktop_names().reply()

        # This works around what I think is weird behavior in Openbox.
        # Sometimes Openbox will "fix" the desktop names... please don't!
        if len(desk_names) > desk_num:
            names = desk_names[0:desk_num]
            ewmh.set_desktop_names_checked(names).check()
        desk_names = ewmh.get_desktop_names().reply()
Ejemplo n.º 9
0
import config
from keymousebind import keybinds

xinerama = xpybutil.conn(xinerama.key)

gtk_display = gtk.gdk.display_get_default()
gtk_screen = gtk_display.get_default_screen()
gtk_root = gtk_screen.get_root_window()
gtk_rootwin = gtk.Invisible()

gtk_root.set_user_data(gtk_rootwin)
gtk_root.set_events(gtk.gdk.PROPERTY_CHANGE_MASK | gtk.gdk.KEY_PRESS_MASK)

# Initial setup
if config.desktops:
    ewmh.set_desktop_names_checked(config.desktops).check()
    ewmh.set_desktop_layout_checked(ewmh.Orientation.Horz, 
                                    len(config.desktops), 1, 
                                    ewmh.StartingCorner.TopLeft).check()
    ewmh.request_number_of_desktops_checked(len(config.desktops)).check()

# Is this a horizontal or vertical pager?
if config.width > config.height:
    orient = 'H'
elif config.width < config.height:
    orient = 'V'
else: # weirdo, could go either way
    orient = 'V'

# Grab keybindings
for key_string, fun in keybinds.iteritems():
Ejemplo n.º 10
0
import config
from keymousebind import keybinds

xinerama = xpybutil.conn(xinerama.key)

gtk_display = gtk.gdk.display_get_default()
gtk_screen = gtk_display.get_default_screen()
gtk_root = gtk_screen.get_root_window()
gtk_rootwin = gtk.Invisible()

gtk_root.set_user_data(gtk_rootwin)
gtk_root.set_events(gtk.gdk.PROPERTY_CHANGE_MASK | gtk.gdk.KEY_PRESS_MASK)

# Initial setup
if config.desktops:
    ewmh.set_desktop_names_checked(config.desktops).check()
    ewmh.set_desktop_layout_checked(ewmh.Orientation.Horz,
                                    len(config.desktops), 1,
                                    ewmh.StartingCorner.TopLeft).check()
    ewmh.request_number_of_desktops_checked(len(config.desktops)).check()

# Is this a horizontal or vertical pager?
if config.width > config.height:
    orient = 'H'
elif config.width < config.height:
    orient = 'V'
else:  # weirdo, could go either way
    orient = 'V'

# Grab keybindings
for key_string, fun in keybinds.iteritems():