]>
Dogcows Code - chaz/openbox/blob - scripts/builtins.py
1 ###########################################################################
2 ### Functions that can be used as callbacks for mouse/keyboard bindings ###
3 ###########################################################################
5 def state_above(data
, add
=2):
6 """Toggles, adds or removes the 'above' state on a window."""
7 if not data
.client
: return
8 send_client_msg(OBDisplay_screenInfo(data
.screen
).rootWindow(),
9 OBProperty
.net_wm_state
, data
.client
.window(), add
,
10 openbox
.property().atom(OBProperty
.net_wm_state_above
))
12 def state_below(data
, add
=2):
13 """Toggles, adds or removes the 'below' state on a window."""
14 if not data
.client
: return
15 send_client_msg(OBDisplay_screenInfo(data
.screen
).rootWindow(),
16 OBProperty
.net_wm_state
, data
.client
.window(), add
,
17 openbox
.property().atom(OBProperty
.net_wm_state_below
))
19 def state_shaded(data
, add
=2):
20 """Toggles, adds or removes the 'shaded' state on a window."""
21 if not data
.client
: return
22 send_client_msg(OBDisplay_screenInfo(data
.screen
).rootWindow(),
23 OBProperty
.net_wm_state
, data
.client
,window(), add
,
24 openbox
.property().atom(OBProperty
.net_wm_state_shaded
))
27 """Closes the window on which the event occured"""
28 if not data
.client
: return
29 send_client_msg(OBDisplay_screenInfo(data
.screen
).rootWindow(),
30 OBProperty
.net_close_window
, data
.client
.window(), 0)
33 """Focuses the window on which the event occured"""
34 if not data
.client
: return
35 # !normal windows dont get focus from window enter events
36 if data
.action
== EventEnterWindow
and not data
.client
.normal():
41 """Moves the window interactively. This should only be used with
43 if not data
.client
: return
45 # !normal windows dont get moved
46 if not data
.client
.normal(): return
48 dx
= data
.xroot
- data
.pressx
49 dy
= data
.yroot
- data
.pressy
50 data
.client
.move(data
.press_clientx
+ dx
, data
.press_clienty
+ dy
)
53 """Resizes the window interactively. This should only be used with
55 if not data
.client
: return
57 # !normal windows dont get moved
58 if not data
.client
.normal(): return
65 # pick a corner to anchor
66 if not (resize_nearest
or data
.context
== MC_Grip
):
67 corner
= OBClient
.TopLeft
69 x
= px
- data
.press_clientx
70 y
= py
- data
.press_clienty
71 if y
< data
.press_clientheight
/ 2:
72 if x
< data
.press_clientwidth
/ 2:
73 corner
= OBClient
.BottomRight
76 corner
= OBClient
.BottomLeft
79 if x
< data
.press_clientwidth
/ 2:
80 corner
= OBClient
.TopRight
83 corner
= OBClient
.TopLeft
85 data
.client
.resize(corner
,
86 data
.press_clientwidth
+ dx
,
87 data
.press_clientheight
+ dy
);
90 """Restarts openbox"""
94 """Raises the window on which the event occured"""
95 if not data
.client
: return
96 openbox
.screen(data
.screen
).restack(1, data
.client
)
99 """Lowers the window on which the event occured"""
100 if not data
.client
: return
101 openbox
.screen(data
.screen
).restack(0, data
.client
)
103 def toggle_shade(data
):
104 """Toggles the shade status of the window on which the event occured"""
108 """Shades the window on which the event occured"""
109 state_shaded(data
, 1)
112 """Unshades the window on which the event occured"""
113 state_shaded(data
, 0)
115 def change_desktop(data
, num
):
116 """Switches to a specified desktop"""
117 root
= OBDisplay_screenInfo(data
.screen
).rootWindow()
118 send_client_msg(root
, OBProperty
.net_current_desktop
, root
, num
)
120 def next_desktop(data
, no_wrap
=0):
121 """Switches to the next desktop, optionally (by default) cycling around to
122 the first when going past the last."""
123 screen
= openbox
.screen(data
.screen
)
125 n
= screen
.numDesktops()
130 change_desktop(data
, d
)
132 def prev_desktop(data
, no_wrap
=0):
133 """Switches to the previous desktop, optionally (by default) cycling around
134 to the last when going past the first."""
135 screen
= openbox
.screen(data
.screen
)
137 n
= screen
.numDesktops()
142 change_desktop(data
, d
)
144 def send_to_desktop(data
, num
):
145 """Sends a client to a specified desktop"""
146 if not data
.client
: return
147 send_client_msg(OBDisplay_screenInfo(data
.screen
).rootWindow(),
148 OBProperty
.net_wm_desktop
, data
.client
.window(), num
)
150 def send_to_next_desktop(data
, no_wrap
=0, follow
=1):
151 """Sends a window to the next desktop, optionally (by default) cycling
152 around to the first when going past the last. Also optionally moving to
153 the new desktop after sending the window."""
154 if not data
.client
: return
155 screen
= openbox
.screen(data
.screen
)
157 n
= screen
.numDesktops()
162 send_to_desktop(data
, d
)
164 change_desktop(data
, d
)
166 def send_to_prev_desktop(data
, no_wrap
=0, follow
=1):
167 """Sends a window to the previous desktop, optionally (by default) cycling
168 around to the last when going past the first. Also optionally moving to
169 the new desktop after sending the window."""
170 if not data
.client
: return
171 screen
= openbox
.screen(data
.screen
)
173 n
= screen
.numDesktops()
178 send_to_desktop(data
, d
)
180 change_desktop(data
, d
)
182 #########################################
183 ### Convenience functions for scripts ###
184 #########################################
186 def execute(bin
, screen
= 0):
187 """Executes a command on the specified screen. It is recommended that you
188 use this call instead of a python system call. If the specified screen
189 is beyond your range of screens, the default is used instead."""
190 openbox
.execute(screen
, bin
)
192 print "Loaded builtins.py"
This page took 0.041168 seconds and 4 git commands to generate.