]> Dogcows Code - chaz/openbox/blob - scripts/callbacks.py
no options for the callbacls
[chaz/openbox] / scripts / callbacks.py
1 ############################################################################
2 ### Functions that can be used as callbacks for mouse/keyboard bindings ###
3 ############################################################################
4
5 import ob
6 import otk
7
8 def state_above(data, add=2):
9 """Toggles, adds or removes the 'above' state on a window.
10 The second paramater should one of: 0 - removes the state, 1 - adds the
11 state, 2 - toggles the state."""
12 if not data.client: return
13 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
14 otk.Property_atoms().net_wm_state, data.client.window(),
15 add, otk.Property_atoms().net_wm_state_above)
16
17 def state_below(data, add=2):
18 """Toggles, adds or removes the 'below' state on a window.
19 The second paramater should one of: 0 - removes the state, 1 - adds the
20 state, 2 - toggles the state."""
21 if not data.client: return
22 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
23 otk.Property_atoms().net_wm_state, data.client.window(),
24 add, otk.Property_atoms().net_wm_state_below)
25
26 def state_shaded(data, add=2):
27 """Toggles, adds or removes the 'shaded' state on a window.
28 The second paramater should one of: 0 - removes the state, 1 - adds the
29 state, 2 - toggles the state."""
30 if not data.client: return
31 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
32 otk.Property_atoms().net_wm_state, data.client.window(),
33 add, otk.Property_atoms().net_wm_state_shaded)
34
35 def state_skip_taskbar(data, add=2):
36 """Toggles, adds or removes the 'skip_taskbar' state on a window.
37 The second paramater should one of: 0 - removes the state, 1 - adds the
38 state, 2 - toggles the state."""
39 if not data.client: return
40 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
41 otk.Property_atoms().net_wm_state, data.client.window(),
42 add, otk.Property_atoms().net_wm_state_skip_taskbar)
43
44 def state_skip_pager(data, add=2):
45 """Toggles, adds or removes the 'skip_pager' state on a window.
46 The second paramater should one of: 0 - removes the state, 1 - adds the
47 state, 2 - toggles the state."""
48 if not data.client: return
49 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
50 otk.Property_atoms().net_wm_state, data.client.window(),
51 add, otk.Property_atoms().net_wm_state_skip_pager)
52
53 def iconify(data):
54 """Iconifies the window on which the event occured"""
55 if not data.client: return
56 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
57 otk.Property_atoms().wm_change_state,
58 data.client.window(), 3) # IconicState
59
60 def restore(data):
61 """Un-iconifies the window on which the event occured, but does not focus
62 if. If you want to focus the window too, it is recommended that you
63 use the activate() function."""
64 if not data.client: return
65 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
66 otk.Property_atoms().wm_change_state,
67 data.client.window(), 1) # NormalState
68
69 def close(data):
70 """Closes the window on which the event occured"""
71 if not data.client: return
72 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
73 otk.Property_atoms().net_close_window,
74 data.client.window(), 0)
75
76 def focus(data):
77 """Focuses the window on which the event occured"""
78 if not data.client: return
79 # !normal windows dont get focus from window enter events
80 if data.action == ob.EventAction.EnterWindow and not data.client.normal():
81 return
82 data.client.focus()
83
84 def restart(data, other = ""):
85 """Restarts openbox, optionally starting another window manager."""
86 ob.openbox.restart(other)
87
88 def raise_win(data):
89 """Raises the window on which the event occured"""
90 if not data.client: return
91 ob.openbox.screen(data.screen).raiseWindow(data.client)
92
93 def lower_win(data):
94 """Lowers the window on which the event occured"""
95 if not data.client: return
96 ob.openbox.screen(data.screen).lowerWindow(data.client)
97
98 def toggle_shade(data):
99 """Toggles the shade status of the window on which the event occured"""
100 state_shaded(data)
101
102 def shade(data):
103 """Shades the window on which the event occured"""
104 state_shaded(data, 1)
105
106 def unshade(data):
107 """Unshades the window on which the event occured"""
108 state_shaded(data, 0)
109
110 def change_desktop(data, num):
111 """Switches to a specified desktop"""
112 root = otk.display.screenInfo(data.screen).rootWindow()
113 ob.send_client_msg(root, otk.Property_atoms().net_current_desktop,
114 root, num)
115
116 def next_desktop(data, no_wrap=0):
117 """Switches to the next desktop, optionally (by default) cycling around to
118 the first when going past the last."""
119 screen = ob.openbox.screen(data.screen)
120 d = screen.desktop()
121 n = screen.numDesktops()
122 if (d < (n-1)):
123 d = d + 1
124 elif not no_wrap:
125 d = 0
126 change_desktop(data, d)
127
128 def prev_desktop(data, no_wrap=0):
129 """Switches to the previous desktop, optionally (by default) cycling around
130 to the last when going past the first."""
131 screen = ob.openbox.screen(data.screen)
132 d = screen.desktop()
133 n = screen.numDesktops()
134 if (d > 0):
135 d = d - 1
136 elif not no_wrap:
137 d = n - 1
138 change_desktop(data, d)
139
140 def send_to_desktop(data, num):
141 """Sends a client to a specified desktop"""
142 if not data.client: return
143 ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
144 otk.Property_atoms().net_wm_desktop,
145 data.client.window(),num)
146
147 def toggle_all_desktops(data):
148 """Toggles between sending a client to all desktops and to the current
149 desktop."""
150 if not data.client: return
151 if not data.client.desktop() == 0xffffffff:
152 send_to_desktop(data, 0xffffffff)
153 else:
154 send_to_desktop(data, openbox.screen(data.screen).desktop())
155
156 def send_to_all_desktops(data):
157 """Sends a client to all desktops"""
158 if not data.client: return
159 send_to_desktop(data, 0xffffffff)
160
161 def send_to_next_desktop(data, no_wrap=0, follow=1):
162 """Sends a window to the next desktop, optionally (by default) cycling
163 around to the first when going past the last. Also optionally moving to
164 the new desktop after sending the window."""
165 if not data.client: return
166 screen = ob.openbox.screen(data.screen)
167 d = screen.desktop()
168 n = screen.numDesktops()
169 if (d < (n-1)):
170 d = d + 1
171 elif not no_wrap:
172 d = 0
173 send_to_desktop(data, d)
174 if follow:
175 change_desktop(data, d)
176
177 def send_to_prev_desktop(data, no_wrap=0, follow=1):
178 """Sends a window to the previous desktop, optionally (by default) cycling
179 around to the last when going past the first. Also optionally moving to
180 the new desktop after sending the window."""
181 if not data.client: return
182 screen = ob.openbox.screen(data.screen)
183 d = screen.desktop()
184 n = screen.numDesktops()
185 if (d > 0):
186 d = d - 1
187 elif not no_wrap:
188 d = n - 1
189 send_to_desktop(data, d)
190 if follow:
191 change_desktop(data, d)
192
193 print "Loaded callbacks.py"
This page took 0.048161 seconds and 5 git commands to generate.