import gleam/erlang/process.{type Name} import musicplayer/input/input import musicplayer/input/key.{type Key} import musicplayer/mpv/mpv import musicplayer/musicplayer pub fn main() -> Nil { let input_keys_name: Name(Key) = process.new_name("input_keys") let input_stream_name: Name(List(String)) = process.new_name("input_stream") // `input_inject` is created by name to allow the `input` process that // owns `read_input` to be able to register and receive from it, // while the any other processes can use the name reference to // inject input let input_inject_name: Name(Key) = process.new_name("input_inject_keys") input.new(input_keys_name, input_stream_name, input_inject_name) let assert Ok(mpv) = mpv.new() let exit = process.new_subject() let assert Ok(_) = musicplayer.new( mpv, input_keys_name, input_stream_name, input_inject_name, exit, ) process.receive_forever(exit) }