Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tristancacqueray/pipewire.hs
Haskell bindings to Pipewire Multimedia Framework
https://github.com/tristancacqueray/pipewire.hs
haskell pipewire
Last synced: 25 days ago
JSON representation
Haskell bindings to Pipewire Multimedia Framework
- Host: GitHub
- URL: https://github.com/tristancacqueray/pipewire.hs
- Owner: TristanCacqueray
- Created: 2024-05-25T15:39:05.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-18T02:59:22.000Z (4 months ago)
- Last Synced: 2024-10-12T23:43:07.286Z (25 days ago)
- Topics: haskell, pipewire
- Language: Haskell
- Homepage:
- Size: 323 KB
- Stars: 9
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# pipewire.hs
> [Pipewire](https://pipewire.org) is a project that aims to greatly improve handling of audio and video under Linux.
> It provides a low-latency, graph-based processing engine on top of audio and video devices that can be used to support the use cases currently handled by both PulseAudio and JACK.This project contains Haskell bindings to the libpipewire.
This allows you to leverage the multimedia framework directly from your Haskell program.## Project Status
The bindings are experimental: only a small subset of the libpipewire is implemented.
A basic high level API is available (exported in camelCase).
Checkout the following examples:- `pw-mon` to watch pipewire events: [PwMon.hs](./pipewire/examples/PwMon.hs)
- `pw-link` to list/create/delete links: [PwLink.hs](./pipewire/examples/PwLink.hs)
- `pw-metadata` to list/create/delete metadatas: [PwMetadata.hs](./pipewire/examples/PwMetadata.hs)
- `tutorial4` to play a tone: [Tutorial4.hs](./pipewire/examples/Tutorial4.hs)
- `video-src` to draw a video stream: [VideoSrc.hs](./pipewire/examples/VideoSrc.hs)
- `pw-play` to play an audio file: [PwPlay.hs](./pipewire/examples/PwPlay.hs)
- `pw-controller` to apply rules to pipewire links: [pw-controller](./pw-controller)References:
- Documentation:
- Source entrypoint: [Pipewire.hs](./pipewire/src/Pipewire.hs)
- Upstream doc:## Nix
To use this library in your own Haskell projects that are built with [Nix](https://nixos.org/), this flake provides an output `haskellExtend`, which can be used to extend a collection of Haskell packages in nixpkgs. An example flake structure using this is shown below.```nix
# flake.nix
{
inputs = {
...
pipewire-hs.url = "github:TristanCacqueray/pipewire.hs;
...
};outputs = { self, nixpkgs, pipewire-hs, ...}: {
...
haskellPackages = pkgs.haskellPackages.extend (pipewire-hs.haskellExtend { pipewire = pkgs.pipewire; });
...
};
}```
## Contribute
Contribution, bug reports and feedback are welcome.
Run the tests with:
```
just ci
```