Files
musicplayer/src/musicplayer.gleam
2025-11-22 21:06:41 +01:00

33 lines
955 B
Gleam

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)
}