uh-wm 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +73 -8
- data/lib/uh/wm/cli.rb +1 -1
- data/lib/uh/wm/version.rb +1 -1
- data/lib/uh/wm/workers/kqueue.rb +31 -0
- data/lib/uh/wm/workers.rb +1 -0
- data/lib/uh/wm.rb +3 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9e65ddc3d9f3e3f406b624138ef47c86531380e
|
4
|
+
data.tar.gz: 095aac6361586080213412cb40d1ba6a7393150a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d3733270d72b481d05fded4c6bd0a66dcbdce5be277c639a6aba35ef613128276251f1795d70aa876ec375f85e7adc9d9da5ccf6a40576b6ff1aa1d38fa69da
|
7
|
+
data.tar.gz: ec55836544feb58833aae7168adc823640a1dc5d27531a3d1af2b6d71442f6847b7aba9fc4906b78f06382eb178ee65a891813c14b9c267386953701d2478c8b
|
data/README.md
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
uhwm
|
2
|
+
====
|
3
3
|
|
4
4
|
[![Version ][badge-version-img]][badge-version-uri]
|
5
5
|
[![Build status ][badge-build-img]][badge-build-uri]
|
6
6
|
[![Code Climate ][badge-cclimate-img]][badge-cclimate-uri]
|
7
7
|
|
8
8
|
|
9
|
-
|
9
|
+
uhwm is a minimalistic tiling and stacking window manager for X. It
|
10
10
|
shares some similarities with dwm and wmii, but is written in ruby so
|
11
11
|
you can configure and extend features directly with ruby code.
|
12
12
|
|
13
13
|
The layout strategy is interchangeable, the default one being the
|
14
14
|
`uh-layout` ruby gem. A layout is a simple ruby object responding to
|
15
|
-
specific messages.
|
15
|
+
specific messages, so it's easy to write your own layout.
|
16
16
|
|
17
17
|
Main features:
|
18
18
|
|
@@ -31,17 +31,19 @@ specific messages.
|
|
31
31
|
* very limited ICCCM support.
|
32
32
|
|
33
33
|
|
34
|
-
|
35
|
-
|
34
|
+
Installation
|
35
|
+
------------
|
36
36
|
|
37
|
-
|
37
|
+
uhwm requires ruby ~> 2.1 with rubygems, and is currently
|
38
|
+
distributed as the `uh-wm` ruby gem.
|
38
39
|
|
39
40
|
```
|
40
41
|
$ gem install uh-wm
|
41
42
|
```
|
42
43
|
|
43
44
|
|
44
|
-
|
45
|
+
Usage
|
46
|
+
-----
|
45
47
|
|
46
48
|
```
|
47
49
|
Usage: uhwm [options]
|
@@ -59,6 +61,69 @@ options:
|
|
59
61
|
```
|
60
62
|
|
61
63
|
|
64
|
+
Configuration
|
65
|
+
-------------
|
66
|
+
|
67
|
+
uhwm can be configured with a run control file, written in ruby. A
|
68
|
+
simple example is provided below, more details will be available in
|
69
|
+
the [`RunControl` class documentation][run_control_doc].
|
70
|
+
|
71
|
+
``` ruby
|
72
|
+
DMENU = 'dmenu_run -b'.freeze
|
73
|
+
VT = 'urxvt'.freeze
|
74
|
+
BROWSERS = %w[
|
75
|
+
arora chromium firebird firefox galeon iceweasel konqueror pentadactyl
|
76
|
+
phoenix vimperator
|
77
|
+
].freeze
|
78
|
+
|
79
|
+
|
80
|
+
modifier :mod1 # This key will be added to the modifier mask for
|
81
|
+
# *all* key bindings.
|
82
|
+
key(:p) { execute DMENU } # Execute given command in a shell when mod1+shift
|
83
|
+
# is pressed.
|
84
|
+
key(:Q) { quit } # Quit when mod1+shift+q is pressed (a capitalized
|
85
|
+
# key adds shift to mod mask).
|
86
|
+
key(:enter) { execute VT } # Common key names (`enter') are translated to
|
87
|
+
# their X equivalent (`return').
|
88
|
+
|
89
|
+
rule BROWSERS do # Move windows to the `www' view when their app
|
90
|
+
layout_view_set 'www' # class matches either /\Aarora/, /\Achromium/… etc
|
91
|
+
end
|
92
|
+
|
93
|
+
launch do # Execute urxvt program twice, synchronously.
|
94
|
+
execute! VT # `execute!' is a variant of `execute' which
|
95
|
+
execute! VT # will only return when a window is mapped.
|
96
|
+
layout_client_column_set :succ # Move last mapped window to next column.
|
97
|
+
end
|
98
|
+
```
|
99
|
+
|
100
|
+
Blocks given to `key`, `rule`, `launch` are executed in a special
|
101
|
+
context providing access to methods named "actions", which are
|
102
|
+
described in next section.
|
103
|
+
|
104
|
+
[run_control_doc]: http://www.rubydoc.info/gems/uh-wm/Uh/WM/RunControl
|
105
|
+
|
106
|
+
|
107
|
+
Actions
|
108
|
+
-------
|
109
|
+
|
110
|
+
The actions DSL implements a few built-in messages, but also acts as
|
111
|
+
a proxy to the layout. Any message prefixed with `layout_` will be
|
112
|
+
forwarded to the layout, with the prefix stripped. That is, if
|
113
|
+
`layout_view_sel '2'` is evaluated, then the layout will receive the
|
114
|
+
`view_sel` message with `"2"` as argument. Up to date information is
|
115
|
+
available in the [`ActionsHandler` class documentation][actions_doc]
|
116
|
+
|
117
|
+
| Message | Arguments | Description
|
118
|
+
| ------------- | --------- | -----------------------------------
|
119
|
+
| quit | | requests uhwm to terminate
|
120
|
+
| execute | command | executes given `command` in a shell
|
121
|
+
| kill_current | | kills layout current client
|
122
|
+
| layout\_\* | \*\_ | forwards messages to layout
|
123
|
+
|
124
|
+
[actions_doc]: http://www.rubydoc.info/gems/uh-wm/Uh/WM/ActionsHandler
|
125
|
+
|
126
|
+
|
62
127
|
|
63
128
|
[badge-version-img]: https://img.shields.io/gem/v/uh-wm.svg?style=flat-square
|
64
129
|
[badge-version-uri]: https://rubygems.org/gems/uh-wm
|
data/lib/uh/wm/cli.rb
CHANGED
data/lib/uh/wm/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Uh
|
2
|
+
module WM
|
3
|
+
module Workers
|
4
|
+
class KQueue < Base
|
5
|
+
TIMEOUT_DEFAULT = 1
|
6
|
+
|
7
|
+
def initialize timeout: TIMEOUT_DEFAULT
|
8
|
+
super
|
9
|
+
@queue = ::KQueue::Queue.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def watch io
|
13
|
+
@queue.watch_stream_for_read io.to_io do
|
14
|
+
@on_read.call
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def on_timeout &block
|
19
|
+
::KQueue::Watcher.new(@queue, 1, :timer, [], 1000, proc do |event|
|
20
|
+
block.call
|
21
|
+
end)
|
22
|
+
end
|
23
|
+
|
24
|
+
def work_events
|
25
|
+
@before_watch.call if @before_watch
|
26
|
+
events = @queue.process
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/uh/wm/workers.rb
CHANGED
data/lib/uh/wm.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'forwardable'
|
2
2
|
require 'logger'
|
3
3
|
require 'optparse'
|
4
|
+
require 'rb-kqueue'
|
4
5
|
require 'uh'
|
5
6
|
|
6
7
|
require 'uh/wm/env_logging'
|
@@ -15,9 +16,11 @@ require 'uh/wm/logger_formatter'
|
|
15
16
|
require 'uh/wm/manager'
|
16
17
|
require 'uh/wm/run_control'
|
17
18
|
require 'uh/wm/runner'
|
19
|
+
require 'uh/wm/version'
|
18
20
|
require 'uh/wm/workers'
|
19
21
|
require 'uh/wm/workers/base'
|
20
22
|
require 'uh/wm/workers/blocking'
|
23
|
+
require 'uh/wm/workers/kqueue'
|
21
24
|
require 'uh/wm/workers/mux'
|
22
25
|
|
23
26
|
module Uh
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uh-wm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibault Jouan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rb-kqueue
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.2.4
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.2.4
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: uh
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +150,7 @@ files:
|
|
136
150
|
- lib/uh/wm/workers.rb
|
137
151
|
- lib/uh/wm/workers/base.rb
|
138
152
|
- lib/uh/wm/workers/blocking.rb
|
153
|
+
- lib/uh/wm/workers/kqueue.rb
|
139
154
|
- lib/uh/wm/workers/mux.rb
|
140
155
|
homepage: https://rubygems.org/gems/uh-wm
|
141
156
|
licenses:
|
@@ -162,3 +177,4 @@ signing_key:
|
|
162
177
|
specification_version: 4
|
163
178
|
summary: minimalistic tiling and stacking window manager for X
|
164
179
|
test_files: []
|
180
|
+
has_rdoc:
|