uh-wm 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +216 -5
- data/lib/uh/wm/actions_handler.rb +1 -1
- data/lib/uh/wm/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e40ae2e6f815683ba49a0cf70e0a2832b15198a
|
4
|
+
data.tar.gz: 2f2c5eabef44d6acfa2dbb4901d81fea647b121f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d423c12bb61f6fce43f7c2fb28b8d3a823197abb719dbe02380706dfcf4755b7e190b0fe8e8d72a683e8e883e9659272eae7d43244abe1ab3b0ef208af9ba19a
|
7
|
+
data.tar.gz: 0a21755650d31e190d9df030866a2822d9fe347dc4ed7f94b90834f5312331135fb26151ab3b4a5df9014fd1e8d7debee1cd6c468392734e174aa025c877350a
|
data/README.md
CHANGED
@@ -22,11 +22,11 @@ specific messages, so it's easy to write your own layout.
|
|
22
22
|
* configuration with a run control file;
|
23
23
|
* key bindings with user defined code as callback;
|
24
24
|
* configurable modifier key;
|
25
|
-
*
|
25
|
+
* user-defined layout strategies;
|
26
26
|
* external program execution;
|
27
27
|
* no re-parenting (therefore, no window decoration either);
|
28
28
|
* no grabbing of the modifier key alone;
|
29
|
-
* no mouse handling;
|
29
|
+
* no mouse event handling;
|
30
30
|
* no EWMH support;
|
31
31
|
* very limited ICCCM support.
|
32
32
|
|
@@ -69,12 +69,12 @@ simple example is provided below, more details are available in the
|
|
69
69
|
[`RunControl` class documentation][run_control_doc].
|
70
70
|
|
71
71
|
``` ruby
|
72
|
-
DMENU = 'dmenu_run -b'
|
73
|
-
VT = 'urxvt'
|
72
|
+
DMENU = 'dmenu_run -b'
|
73
|
+
VT = 'urxvt'
|
74
74
|
BROWSERS = %w[
|
75
75
|
arora chromium firebird firefox galeon iceweasel konqueror pentadactyl
|
76
76
|
phoenix vimperator
|
77
|
-
]
|
77
|
+
]
|
78
78
|
|
79
79
|
|
80
80
|
modifier :mod1 # This key is added to the modifier mask for *all*
|
@@ -124,6 +124,217 @@ available in the [`ActionsHandler` class documentation][actions_doc]
|
|
124
124
|
[actions_doc]: http://www.rubydoc.info/gems/uh-wm/Uh/WM/ActionsHandler
|
125
125
|
|
126
126
|
|
127
|
+
Extensive configuration example
|
128
|
+
-------------------------------
|
129
|
+
|
130
|
+
``` ruby
|
131
|
+
COLORS = {
|
132
|
+
bg: 'rgb:0c/0c/0c'.freeze,
|
133
|
+
fg: 'rgb:d0/d0/d0'.freeze,
|
134
|
+
sel: 'rgb:d7/00/5f'.freeze,
|
135
|
+
hi: 'rgb:82/00/3a'.freeze
|
136
|
+
}.freeze
|
137
|
+
DMENU = ('dmenu_run -b -nb %s -nf %s -sb %s -sf %s' %
|
138
|
+
COLORS.values_at(:bg, :fg, :sel, :fg)).freeze
|
139
|
+
VT = 'urxvt'.freeze
|
140
|
+
VT_SHELL = "#{VT} -e zsh -i -c".freeze
|
141
|
+
LOCKER = 'xautolock -locknow &'.freeze
|
142
|
+
BROWSERS = %w[
|
143
|
+
arora chrome chromium firebird firefox galeon iceweasel konqueror pentadactyl
|
144
|
+
phoenix vimperator
|
145
|
+
].freeze
|
146
|
+
DATETIME = -> { Time.new.strftime('%FT%T %a') }.freeze
|
147
|
+
|
148
|
+
|
149
|
+
worker :kqueue, timeout: 1
|
150
|
+
modifier :mod1
|
151
|
+
layout colors: COLORS, bar_status: DATETIME
|
152
|
+
|
153
|
+
key(:Q) { quit }
|
154
|
+
key(:z) { execute LOCKER }
|
155
|
+
|
156
|
+
key(:enter) { execute VT }
|
157
|
+
key(:p) { execute DMENU }
|
158
|
+
|
159
|
+
key(:c) { layout_screen_sel :succ }
|
160
|
+
key(:C) { layout_screen_set :succ }
|
161
|
+
(0..9).each { |e| key(e) { layout_view_sel e } }
|
162
|
+
(0..9).each { |e| key(e, :shift) { layout_view_set e } }
|
163
|
+
key(:w) { layout_view_sel 'www' }
|
164
|
+
key(:W) { layout_view_set 'www' }
|
165
|
+
key(:h) { layout_column_sel :pred }
|
166
|
+
key(:s) { layout_column_sel :succ }
|
167
|
+
key(:n) { layout_client_sel :pred }
|
168
|
+
key(:t) { layout_client_sel :succ }
|
169
|
+
key(:d) { layout_column_mode_toggle }
|
170
|
+
key(:N) { layout_client_swap :pred }
|
171
|
+
key(:T) { layout_client_swap :succ }
|
172
|
+
key(:H) { layout_client_column_set :pred }
|
173
|
+
key(:S) { layout_client_column_set :succ }
|
174
|
+
|
175
|
+
key(:tab) { layout_history_view_pred }
|
176
|
+
|
177
|
+
key(:e) { kill_current }
|
178
|
+
|
179
|
+
key(:apostrophe) { execute 'mocp --toggle-pause' }
|
180
|
+
key(:comma) { execute 'mixer vol -3' }
|
181
|
+
key(:period) { execute 'mixer vol +3' }
|
182
|
+
key(:Apostrophe) { execute 'mocp --seek 30' }
|
183
|
+
key(:Comma) { execute 'mocp --previous' }
|
184
|
+
key(:Period) { execute 'mocp --next' }
|
185
|
+
|
186
|
+
key(:l) { log_layout }
|
187
|
+
key(:L) { log_client }
|
188
|
+
key(:backspace) { log_separator }
|
189
|
+
|
190
|
+
if ENV['DISPLAY'] == ':42'
|
191
|
+
key(:q) { quit }
|
192
|
+
key(:f) { execute VT }
|
193
|
+
key(:F) { execute 'firefox -P test' }
|
194
|
+
end
|
195
|
+
|
196
|
+
rule BROWSERS do
|
197
|
+
layout_view_set 'www'
|
198
|
+
next unless layout.current_view.columns.size == 1
|
199
|
+
next unless layout.current_view.clients.size >= 2
|
200
|
+
next unless layout.current_view.clients.any? { |c| c.wclass =~ /\A#{VT}/i }
|
201
|
+
layout_client_column_set :succ
|
202
|
+
end
|
203
|
+
|
204
|
+
rule VT do
|
205
|
+
next unless layout.current_view.columns.size == 1
|
206
|
+
next unless layout.current_view.clients.size >= 2
|
207
|
+
if layout.current_view.clients.all? { |c| c.wclass =~ /\A#{VT}/i }
|
208
|
+
layout_client_column_set :succ
|
209
|
+
elsif layout.current_view.clients.any? { |c| c.wclass =~ /\Afirefox/i }
|
210
|
+
layout_client_column_set :pred
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
rule 'xephyr' do
|
215
|
+
if layout.current_view.clients.select { |c| c.wclass =~ /\Axephyr/i }.size > 1
|
216
|
+
layout_screen_set :succ
|
217
|
+
layout_view_set 7
|
218
|
+
layout_view_sel 7
|
219
|
+
layout_screen_sel :pred
|
220
|
+
layout_screen_set :succ
|
221
|
+
layout_column_mode_toggle
|
222
|
+
else
|
223
|
+
layout_client_column_set :succ
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
launch do
|
228
|
+
layout_screen_sel :succ
|
229
|
+
|
230
|
+
layout_view_sel '2'
|
231
|
+
execute! "#{VT_SHELL} 'tail -F ~/.uhwm.log'"
|
232
|
+
|
233
|
+
layout_view_sel '1'
|
234
|
+
execute! "#{VT_SHELL} mutt"
|
235
|
+
layout_column_mode_toggle
|
236
|
+
execute! "#{VT_SHELL} 'mtr -n foo.example; exec zsh'"
|
237
|
+
execute! "#{VT_SHELL} 'mtr -n bar.example; exec zsh'"
|
238
|
+
|
239
|
+
execute! "#{VT_SHELL} 'ssh -t foo.example zsh -i -c \\\"tmux attach -t irc\\\"; exec zsh'"
|
240
|
+
layout_client_column_set :succ
|
241
|
+
|
242
|
+
execute! "#{VT_SHELL} 'ssh -t foo.example tmux attach -t log; exec zsh'"
|
243
|
+
layout_client_column_set :succ
|
244
|
+
layout_column_mode_toggle
|
245
|
+
execute! "#{VT_SHELL} 'ssh -t bar.example tmux attach -t log; exec zsh'"
|
246
|
+
execute! "#{VT_SHELL} 'tmux attach -t log; exec zsh'"
|
247
|
+
layout_column_sel :pred
|
248
|
+
|
249
|
+
layout_screen_sel :pred
|
250
|
+
|
251
|
+
execute! "#{VT_SHELL} mutt"
|
252
|
+
execute! "#{VT_SHELL} 'vim ~/TODO; exec zsh'"
|
253
|
+
layout_client_column_set :succ
|
254
|
+
execute! VT
|
255
|
+
layout_client_column_set :succ
|
256
|
+
|
257
|
+
layout_view_sel '2'
|
258
|
+
execute! "#{VT_SHELL} 'cd ~/src/.../uh-wm; exec zsh'"
|
259
|
+
execute! "#{VT_SHELL} 'cd ~/src/.../uh-wm; exec zsh'"
|
260
|
+
layout_client_column_set :pred
|
261
|
+
|
262
|
+
layout_view_sel '4'
|
263
|
+
execute! "#{VT_SHELL} mocp; exec zsh"
|
264
|
+
execute! VT
|
265
|
+
layout_client_column_set :succ
|
266
|
+
|
267
|
+
layout_view_sel '8'
|
268
|
+
execute! "#{VT_SHELL} 'top -o res; exec zsh'"
|
269
|
+
execute! VT
|
270
|
+
layout_client_column_set :succ
|
271
|
+
|
272
|
+
layout_view_sel '1'
|
273
|
+
end if ENV['DISPLAY'] == ':0'
|
274
|
+
|
275
|
+
launch do
|
276
|
+
layout_view_sel '2'
|
277
|
+
execute! "#{VT_SHELL} 'tail -F ~/.uhwm.log'"
|
278
|
+
|
279
|
+
layout_view_sel '1'
|
280
|
+
execute! "#{VT_SHELL} 'echo hello\!; exec zsh'"
|
281
|
+
execute! VT
|
282
|
+
layout_client_column_set :succ
|
283
|
+
end if ENV['DISPLAY'] == ':42'
|
284
|
+
```
|
285
|
+
|
286
|
+
|
287
|
+
BUGS
|
288
|
+
----
|
289
|
+
|
290
|
+
* Signal handling is broken under certain undocumented conditions.
|
291
|
+
|
292
|
+
* Unicode is not supported everywhere (the `uh` ruby gem does not yet
|
293
|
+
support unicode text drawing).
|
294
|
+
|
295
|
+
* Column width in default layout is hard coded.
|
296
|
+
|
297
|
+
|
298
|
+
FAQ
|
299
|
+
---
|
300
|
+
|
301
|
+
#### uhwm is stealing focus, how can I disable it?
|
302
|
+
|
303
|
+
You can't (yet). The default layout will be modified to accept an
|
304
|
+
`autofocus: false` option in a future release.
|
305
|
+
|
306
|
+
#### What are the default key bindings?
|
307
|
+
|
308
|
+
Juste one: `mod+shift+q` is bound to the `quit` action.
|
309
|
+
|
310
|
+
#### How can I implement my own layout?
|
311
|
+
|
312
|
+
A layout is a simple ruby object responding to a set of messages:
|
313
|
+
`register`, `current_client`, `suggest_geo`, `<<`, `remove`, `update`
|
314
|
+
and `expose`. No documentation is available yet, so read the source
|
315
|
+
code or the cucumber scenarios in `features/layout/protocol.feature`.
|
316
|
+
|
317
|
+
#### Can I change the default behavior ignoring current view selection?
|
318
|
+
|
319
|
+
Yes, just test for this condition in the key binding code. For
|
320
|
+
example the following code will select the last historized view (if
|
321
|
+
you are on view `"1"`, and select view `"2"` twice, the view `"1"` is
|
322
|
+
selected.
|
323
|
+
|
324
|
+
``` ruby
|
325
|
+
# Replace the "simple" view selection key binding...
|
326
|
+
key(:m) { layout_view_sel 'my_view' }
|
327
|
+
# ...with this:
|
328
|
+
key :m do
|
329
|
+
if layout.current_view.id == 'my_view'
|
330
|
+
layout_view_sel layout.history.last_view.id
|
331
|
+
else
|
332
|
+
layout_view_sel 'my_view'
|
333
|
+
end
|
334
|
+
end
|
335
|
+
```
|
336
|
+
|
337
|
+
|
127
338
|
|
128
339
|
[badge-version-img]: https://img.shields.io/gem/v/uh-wm.svg?style=flat-square
|
129
340
|
[badge-version-uri]: https://rubygems.org/gems/uh-wm
|
data/lib/uh/wm/version.rb
CHANGED