def __new__(cls): if cls.__INSTANCE: return cls.__INSTANCE manager = object.__new__(cls) XObject.__init__(manager) cls.__INSTANCE = manager manager.update_type() return manager
def test_str2_methods_no_modifiers(self): modifiers = XObject.str2modifiers('') keycode = XObject.str2keycode('A') modifiers_keycode = XObject.str2modifiers_keycode('A') self.assertEqual(modifiers, modifiers_keycode[0]) self.assertEqual(keycode, modifiers_keycode[1]) modifiers_keycode = XObject.str2modifiers_keycode('', 'A') self.assertEqual(modifiers, modifiers_keycode[0]) self.assertEqual(keycode, modifiers_keycode[1])
def update_type(self): """Update window manager's type.""" recognize = {'compiz': Type.COMPIZ, 'metacity': Type.METACITY, 'kwin': Type.KWIN, 'xfwm': Type.XFWM, 'openbox': Type.OPENBOX, 'fluxbox': Type.FLUXBOX, 'blackbox': Type.BLACKBOX, 'icewm': Type.ICEWM, 'e1': Type.ENLIGHTMENT, 'sawfish': Type.SAWFISH, 'window maker': Type.WINDOW_MAKER, 'pekwm': Type.PEKWM, } name = self.name.lower() XObject.set_wm_type(Type.UNKNOWN) for name_part, wm_type in recognize.items(): if name_part in name: XObject.set_wm_type(wm_type)
class Type(object): """Enum of window, and window manager types.""" # Window Types DESKTOP = XObject.atom('_NET_WM_WINDOW_TYPE_DESKTOP') DOCK = XObject.atom('_NET_WM_WINDOW_TYPE_DOCK') TOOLBAR = XObject.atom('_NET_WM_WINDOW_TYPE_TOOLBAR') MENU = XObject.atom('_NET_WM_WINDOW_TYPE_MENU') UTILITY = XObject.atom('_NET_WM_WINDOW_TYPE_UTILITY') SPLASH = XObject.atom('_NET_WM_WINDOW_TYPE_SPLASH') DIALOG = XObject.atom('_NET_WM_WINDOW_TYPE_DIALOG') NORMAL = XObject.atom('_NET_WM_WINDOW_TYPE_NORMAL') NONE = -1 # Window manager Types COMPIZ = 1 METACITY = 2 KWIN = 3 XFWM = 4 OPENBOX = 5 FLUXBOX = 6 BLACKBOX = 7 ICEWM = 8 ENLIGHTMENT = 9 WINDOW_MAKER = 10 SAWFISH = 11 PEKWM = 12 UNKNOWN = -1
def test_str2_methods_case_sensitivity(self): self.assertEqual(XObject.str2keycode('a'), XObject.str2keycode('A')) self.assertEqual(XObject.str2modifiers('Alt'), XObject.str2modifiers('alt')) self.assertEqual(XObject.str2modifiers('Alt'), XObject.str2modifiers('ALT')) self.assertEqual(XObject.str2modifiers('alt'), XObject.str2modifiers('ALT'))
def test_screen_geometries__with_xinerama(self): self.display.xinerama_query_screens = lambda: Xlib_mock.ScreensQuery( (0, 0, 640, 400), (640, 0, 960, 200)) self.assertEqual(XObject.screen_geometries(), [Xlib_mock.Geometry(0, 0, 640, 400), Xlib_mock.Geometry(640, 0, 960, 200)])
def name(self): """Return window manager's name. ``''`` is returned if window manager doesn't support EWMH. """ # _NET_SUPPORTING_WM_CHECK, WINDOW/32 win_id = self.get_property('_NET_SUPPORTING_WM_CHECK') if not win_id: return '' win = XObject(win_id.value[0]) name = win.get_property('_NET_WM_NAME') if name: return name.value else: return ''
def test_screen_geometries__with_xinerama(self): self.display.xinerama_query_screens = lambda: Xlib_mock.ScreensQuery( (0, 0, 640, 400), (640, 0, 960, 200)) self.assertEqual(XObject.screen_geometries(), [ Xlib_mock.Geometry(0, 0, 640, 400), Xlib_mock.Geometry(640, 0, 960, 200) ])
class Type(object): """Enum of windows, and window managers types.""" # Window Types DESKTOP = XObject.atom('_NET_WM_WINDOW_TYPE_DESKTOP') """Desktop.""" DOCK = XObject.atom('_NET_WM_WINDOW_TYPE_DOCK') """Dock window (for example panels).""" TOOLBAR = XObject.atom('_NET_WM_WINDOW_TYPE_TOOLBAR') """Toolbar window.""" MENU = XObject.atom('_NET_WM_WINDOW_TYPE_MENU') """Menu window.""" UTILITY = XObject.atom('_NET_WM_WINDOW_TYPE_UTILITY') """Utility window.""" SPLASH = XObject.atom('_NET_WM_WINDOW_TYPE_SPLASH') """Splash dialog.""" DIALOG = XObject.atom('_NET_WM_WINDOW_TYPE_DIALOG') """Modal dialog.""" NORMAL = XObject.atom('_NET_WM_WINDOW_TYPE_NORMAL') """Normal window.""" NONE = -1 """No `Type` specified.""" # Window manager Types COMPIZ = 1 METACITY = 2 KWIN = 3 XFWM = 4 OPENBOX = 5 FLUXBOX = 6 BLACKBOX = 7 ICEWM = 8 ENLIGHTMENT = 9 WINDOW_MAKER = 10 SAWFISH = 11 PEKWM = 12 UNKNOWN = -1
def __init__(self, win_id): XObject.__init__(self, win_id)
class State(object): """Enum of window states.""" # States described by EWMH MODAL = XObject.atom('_NET_WM_STATE_MODAL') """Modal dialog.""" STICKY = XObject.atom('_NET_WM_STATE_STICKY') """Sticky - show on all :ref:`desktops <desktop>` / :ref:`viewports <viewport>`.""" MAXIMIZED_VERT = XObject.atom('_NET_WM_STATE_MAXIMIZED_VERT') """Maximized vertically.""" MAXIMIZED_HORZ = XObject.atom('_NET_WM_STATE_MAXIMIZED_HORZ') """Maximized horizontally.""" MAXIMIZED = (MAXIMIZED_VERT, MAXIMIZED_HORZ) """Maximized both vertically and horizontally.""" SHADED = XObject.atom('_NET_WM_STATE_SHADED') """Shaded (only title bar is visible).""" SKIP_TASKBAR = XObject.atom('_NET_WM_STATE_SKIP_TASKBAR') """Don't show window in the taskbar.""" SKIP_PAGER = XObject.atom('_NET_WM_STATE_SKIP_PAGER') """Don't show window in the pager.""" HIDDEN = XObject.atom('_NET_WM_STATE_HIDDEN') """Hidden window (for example when iconified).""" FULLSCREEN = XObject.atom('_NET_WM_STATE_FULLSCREEN') """Fullscreen.""" ABOVE = XObject.atom('_NET_WM_STATE_ABOVE') """Above all other windows.""" BELOW = XObject.atom('_NET_WM_STATE_BELOW') """Below all other windows.""" DEMANDS_ATTENTION = XObject.atom('_NET_WM_STATE_DEMANDS_ATTENTION') """Demands attention.""" # Window managers specific states OB_UNDECORATED = XObject.atom('_OB_WM_STATE_UNDECORATED') """Borderless (only in Openbox)."""
def test_screen_geometries__without_xinerama(self): self.display.xinerama_query_screens = AttributeError self.assertEqual(XObject.screen_geometries(), [Xlib_mock.Geometry(0, 0, 800, 600)])
def test_has_no_xinerama(self): self.display.extensions = [] self.assertEqual(XObject.has_xinerama(), False)
def test_atom(self): atom = XObject.atom('_NET_WM_NAME') name = XObject.atom_name(atom) self.assertEqual(name, '_NET_WM_NAME')
class State(object): """Enum of window states.""" # States described by EWMH MODAL = XObject.atom('_NET_WM_STATE_MODAL') STICKY = XObject.atom('_NET_WM_STATE_STICKY') MAXIMIZED_VERT = XObject.atom('_NET_WM_STATE_MAXIMIZED_VERT') MAXIMIZED_HORZ = XObject.atom('_NET_WM_STATE_MAXIMIZED_HORZ') MAXIMIZED = (MAXIMIZED_VERT, MAXIMIZED_HORZ) SHADED = XObject.atom('_NET_WM_STATE_SHADED') SKIP_TASKBAR = XObject.atom('_NET_WM_STATE_SKIP_TASKBAR') SKIP_PAGER = XObject.atom('_NET_WM_STATE_SKIP_PAGER') HIDDEN = XObject.atom('_NET_WM_STATE_HIDDEN') FULLSCREEN = XObject.atom('_NET_WM_STATE_FULLSCREEN') ABOVE = XObject.atom('_NET_WM_STATE_ABOVE') BELOW = XObject.atom('_NET_WM_STATE_BELOW') DEMANDS_ATTENTION = XObject.atom('_NET_WM_STATE_DEMANDS_ATTENTION') # Window managers specific states OB_UNDECORATED = XObject.atom('_OB_WM_STATE_UNDECORATED')
def test_has_extension(self): self.assertTrue(XObject.has_extension('XINERAMA')) self.assertFalse(XObject.has_extension('FOO_BAR'))
def test_has_xinerama(self): self.assertEqual(XObject.has_xinerama(), True)