package oxbow

  1. Overview
  2. Docs
Dynamic window manager for the river Wayland compositor

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.1.0.tar.gz
md5=a637acaa0e19046cd65fff733874eb97
sha512=76230cbecd7510de7a05b5d1f335915ef7b6c4aa557d8dbfd23591606618d2cfa25082d17b93f2f4b53a118d1cbf6a80e4ad51cf0f099b4921fb83d6df0c9801

doc/src/oxbow.runtime/send.ml.html

Source file send.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
open! Oxbow_core
open! Oxbow_state

let show (_ : Ctx.render Ctx.t) (w : Window.t) =
  if w.committed.shown <> Some true
  then (
    River.Window_management.River_window_v1.show w.obj;
    Window.set_shown w (Some true))
;;

let hide (_ : Ctx.render Ctx.t) (w : Window.t) =
  if w.committed.shown <> Some false
  then (
    River.Window_management.River_window_v1.hide w.obj;
    Window.set_shown w (Some false))
;;

let close (_ : Ctx.manage Ctx.t) (w : Window.t) =
  River.Window_management.River_window_v1.close w.obj
;;

let propose_dimensions (_ : Ctx.manage Ctx.t) (w : Window.t) ~width ~height =
  if w.committed.proposed <> Some (width, height)
  then (
    River.Window_management.River_window_v1.propose_dimensions w.obj ~width ~height;
    Window.set_proposed w (Some (width, height));
    Window.push_in_flight w (width, height))
;;

let fullscreen (_ : Ctx.manage Ctx.t) (w : Window.t) ~(output : Output.t) =
  let id = Some (Wayland.Proxy.id output.obj) in
  if w.committed.fullscreen_on <> id
  then (
    River.Window_management.River_window_v1.fullscreen w.obj ~output:output.obj;
    Window.set_fullscreen_on w id)
;;

let exit_fullscreen (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.fullscreen_on <> None
  then (
    River.Window_management.River_window_v1.exit_fullscreen w.obj;
    Window.set_fullscreen_on w None;
    Window.set_proposed w None)
;;

let inform_fullscreen (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.informed_fullscreen <> Some true
  then (
    River.Window_management.River_window_v1.inform_fullscreen w.obj;
    Window.set_informed_fullscreen w (Some true))
;;

let inform_not_fullscreen (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.informed_fullscreen <> Some false
  then (
    River.Window_management.River_window_v1.inform_not_fullscreen w.obj;
    Window.set_informed_fullscreen w (Some false))
;;

let inform_maximized (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.informed_maximized <> Some true
  then (
    River.Window_management.River_window_v1.inform_maximized w.obj;
    Window.set_informed_maximized w (Some true))
;;

let inform_unmaximized (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.informed_maximized <> Some false
  then (
    River.Window_management.River_window_v1.inform_unmaximized w.obj;
    Window.set_informed_maximized w (Some false))
;;

let inform_resize_start (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.informed_resizing <> Some true
  then (
    River.Window_management.River_window_v1.inform_resize_start w.obj;
    Window.set_informed_resizing w (Some true))
;;

let inform_resize_end (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.informed_resizing <> Some false
  then (
    River.Window_management.River_window_v1.inform_resize_end w.obj;
    Window.set_informed_resizing w (Some false))
;;

let set_capabilities (_ : Ctx.manage Ctx.t) (w : Window.t) ~caps =
  if w.committed.caps <> Some caps
  then (
    River.Window_management.River_window_v1.set_capabilities w.obj ~caps;
    Window.set_caps w (Some caps))
;;

let set_tiled (_ : Ctx.manage Ctx.t) (w : Window.t) ~edges =
  if w.committed.tiled_edges <> Some edges
  then (
    River.Window_management.River_window_v1.set_tiled w.obj ~edges;
    Window.set_tiled_edges w (Some edges))
;;

let use_csd (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.ssd <> Some false
  then (
    River.Window_management.River_window_v1.use_csd w.obj;
    Window.set_ssd w (Some false))
;;

let use_ssd (_ : Ctx.manage Ctx.t) (w : Window.t) =
  if w.committed.ssd <> Some true
  then (
    River.Window_management.River_window_v1.use_ssd w.obj;
    Window.set_ssd w (Some true))
;;

let focus_window (_ : Ctx.manage Ctx.t) (s : Seat.t) (w : Window.t) =
  River.Window_management.River_seat_v1.focus_window s.obj ~window:w.obj
;;

let clear_focus (_ : Ctx.manage Ctx.t) (s : Seat.t) =
  River.Window_management.River_seat_v1.clear_focus s.obj
;;

let op_start_pointer (_ : Ctx.manage Ctx.t) (s : Seat.t) =
  River.Window_management.River_seat_v1.op_start_pointer s.obj
;;

let op_end (_ : Ctx.manage Ctx.t) (s : Seat.t) =
  River.Window_management.River_seat_v1.op_end s.obj
;;

let pointer_warp (_ : Ctx.manage Ctx.t) (s : Seat.t) ~x ~y =
  River.Window_management.River_seat_v1.pointer_warp s.obj ~x ~y;
  Seat.set_position s (x, y)
;;

let set_position (_ : Ctx.render Ctx.t) (w : Window.t) ~x ~y =
  if w.committed.position <> Some (x, y)
  then (
    River.Window_management.River_node_v1.set_position w.node ~x ~y;
    Window.set_committed_position w (Some (x, y)))
;;

let set_clip_box (_ : Ctx.render Ctx.t) (w : Window.t) ~x ~y ~width ~height =
  if w.committed.clip_box <> Some (x, y, width, height)
  then (
    River.Window_management.River_window_v1.set_clip_box w.obj ~x ~y ~width ~height;
    Window.set_clip_box w (Some (x, y, width, height)))
;;

let set_content_clip_box (_ : Ctx.render Ctx.t) (w : Window.t) ~x ~y ~width ~height =
  if w.committed.content_clip_box <> Some (x, y, width, height)
  then (
    River.Window_management.River_window_v1.set_content_clip_box
      w.obj
      ~x
      ~y
      ~width
      ~height;
    Window.set_content_clip_box w (Some (x, y, width, height)))
;;

let set_borders (_ : Ctx.render Ctx.t) (w : Window.t) ~edges ~width ~color =
  if w.committed.borders <> Some { Window.Committed.edges; width; color }
  then (
    let r, g, b, a = Color.channels color in
    River.Window_management.River_window_v1.set_borders w.obj ~edges ~width ~r ~g ~b ~a;
    Window.set_borders w (Some { Window.Committed.edges; width; color }))
;;

let place_top (_ : Ctx.render Ctx.t) (w : Window.t) =
  River.Window_management.River_node_v1.place_top w.node
;;

let set_presentation_mode (_ : Ctx.render Ctx.t) (o : Output.t) ~mode =
  River.Window_management.River_output_v1.set_presentation_mode o.obj ~mode
;;

let enable_xkb_binding (_ : Ctx.manage Ctx.t) binding =
  River.Xkb.Bindings.River_xkb_binding_v1.enable binding
;;

let disable_xkb_binding (_ : Ctx.manage Ctx.t) binding =
  River.Xkb.Bindings.River_xkb_binding_v1.disable binding
;;

let enable_pointer_binding (_ : Ctx.manage Ctx.t) pointer =
  River.Window_management.River_pointer_binding_v1.enable pointer
;;

let disable_pointer_binding (_ : Ctx.manage Ctx.t) pointer =
  River.Window_management.River_pointer_binding_v1.disable pointer
;;

let modifiers_watch (_ : Ctx.manage Ctx.t) (s : Seat.t) =
  if s.watch_sent <> s.overview_watch
  then (
    River.Xkb.Bindings.River_xkb_bindings_seat_v1.modifiers_watch
      s.xkb_seat
      ~modifiers:s.overview_watch;
    Seat.set_watch_sent s s.overview_watch)
;;