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.ops/window_scope.ml.html

Source file window_scope.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
open! Oxbow_core
open! Oxbow_state
open! Result.Syntax

let filter (wm : Wm.t) (seat : Seat.t) (scope : Scope.t) =
  let on_output o =
    List.filter (fun (w : Window.t) -> Phys.opt_holds o w.output) wm.windows
  in
  match scope with
  | All -> Ok wm.windows
  | Focused -> With.focused_output seat @@ fun o -> Ok (on_output o)
  | Output name ->
    (match List.find_opt (Output.matches_name name) wm.outputs with
     | None -> Error (Printf.sprintf "unknown output: %s" name)
     | Some o -> Ok (on_output o))
;;

let holds matches (w : Window.t) =
  matches ~title:w.title ~app_id:w.app_id ~identifier:w.identifier ~labels:w.labels
;;

let matching wm seat (m : Window_match.t) =
  let* matches = Window_pattern.compile m.pattern in
  let+ windows = filter wm seat m.scope in
  holds matches, List.find_all (holds matches) windows
;;