package oxbow
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
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/queries.ml.html
Source file queries.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 113open! Ppx_yojson_conv_lib.Yojson_conv open! Oxbow_core open! Oxbow_state open! Oxbow_ipc open! Result.Syntax let indexed_rules conv rules = `List (List.mapi (fun i rule -> match conv rule with | `Assoc fields -> `Assoc (("index", `Int i) :: fields) | `List [ `String tag; `Assoc fields ] -> `List [ `String tag; `Assoc (("index", `Int i) :: fields) ] | r -> r) rules) ;; let handle_window_rules (wm : Wm.t) = let rules = indexed_rules Window_rule.yojson_of_t wm.config.rules.window in Ok (Some rules) ;; let handle_keymaps wm seat all = Ok (Some (Bind.list wm seat ~all)) let handle_outputs (wm : Wm.t) (seat : Seat.t) = Ok (Some ([%yojson_of: Record.Output.t list] (List.map (Records.to_output seat) wm.outputs))) ;; let handle_focused seat = match Records.to_focus seat with | None -> Ok None | Some record -> Ok (Some ([%yojson_of: Record.Focus.t] record)) ;; let handle_windows wm seat m = let+ _, matching = Window_scope.matching wm seat m in Some ([%yojson_of: Record.Window.t list] (List.map (Records.to_window wm) matching)) ;; let (wm : Wm.t) output = let outs = match output with | None -> wm.outputs | Some o -> List.filter (Output.matches_name o) wm.outputs in let records = List.filter_map Records.to_tags outs in Ok (Some ([%yojson_of: Record.Tags.t list] records)) ;; let handle_layouts = let available = List.map Layout.to_string Layout.all in Ok (Some (Query.Reply.Available.yojson_of_t { available })) ;; let handle_schemes = let available = List.map Scheme.to_string Scheme.all in Ok (Some (Query.Reply.Available.yojson_of_t { available })) ;; let handle_seats (wm : Wm.t) = let records = List.filter_map (fun (s : Seat.t) -> Option.map (fun name -> Query.Reply.Seats. { name ; mode = Mode.to_string s.mode ; output = Option.bind s.output (fun o -> o.name) }) s.name) wm.seats in Ok (Some ([%yojson_of: Query.Reply.Seats.t list] records)) ;; let handle_devices (wm : Wm.t) ~pattern ~case ~role = let records = List.filter_map (fun (device : Input_device.t) -> if Input_device.matches device ~pattern ~case ~role then Some Query.Reply.Input_device. { name = device.name; role = Input_device.role_to_string device.role } else None) wm.input_devices in Ok (Some ([%yojson_of: Query.Reply.Input_device.t list] records)) ;; let handle_input_rules (wm : Wm.t) = let rules = indexed_rules Input_rule.yojson_of_t wm.config.rules.input in Ok (Some rules) ;; let handle wm seat (query : Query.t) = match query with | Focused -> handle_focused seat | Input_devices { pattern; case; role } -> handle_devices wm ~pattern ~case ~role | Input_rules -> handle_input_rules wm | Keymaps { all } -> handle_keymaps wm seat all | Layouts _ -> handle_layouts | Outputs -> handle_outputs wm seat | Schemes _ -> handle_schemes | Seats -> handle_seats wm | Tags { output } -> handle_tags wm output | Window_rules -> handle_window_rules wm | Windows { filter } -> handle_windows wm seat filter ;;
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>