Skip to content
Cross-platform system interface for hardware IO
Rust Other
  1. Rust 99.2%
  2. Other 0.8%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
design
docs
examples
old
res
rvg
src
.gitignore
.rustfmt.toml
.travis.yml
CODEOFCONDUCT.md
Cargo.toml
LICENSE_BSL.txt
LICENSE_MIT.txt
MENU.md
QUALITY.md
README.md
_config.yml
build.rs
changelog.md

README.md

Cala

docs.rs build status crates.io Zulip Chat

About | Source | Changelog | Tutorials | Blog

Note

Cala is a complete redesign of previous library ADI. It is still in it's early stages.

About

Easily create cross-platform applications. Some common tasks are not easily portable across different platforms, and this crate hopes to fix that. That way you don't have to worry about how to port your GUI, audio, or bluetooth interface, etc. and can get straight to building your application's content!

Cala is a platform-agnostic system interface for hardware IO. This means that eventually, Cala should support all of the different hardware that's connected to your computer. Cala is designed so that it talks to the operating system to interface with the hardware, so no special permissions are needed for your application. Here's a list of all of the targeted platforms (bold means a port has been made, italic means the feature doesn't work on the platform):

  • Linux
  • MacOS - missing audio, controller, graphics
  • Windows - missing audio, controller, graphics
  • Web (WASM) - missing audio, controller, graphics, files
  • Redox
  • Android
  • iOS
  • Nintendo Switch
  • XBox
  • PlayStation
  • FreeBSD
  • Maybe FreeDOS for fun 😉️
  • Others not on this list that you will make a pull request for adding them

Motivation & Naming

The aim is to create a newer, better GTK + SDL in Rust! Why GTK + SDL? Because a lot of programs need to depend on both anyway (like totem), and they do a lot of the same things; Usually one library does each specific task better than the other. The goal of this library is to provide the common ground for video games and general GUI applications together. The name cala is derived from the fungus known as calafate rust.

Getting Started

Each hardware interface can be enabled with a feature. For example, If you want to depend on the audio feature and the clock feature, you might put this in your Cargo.toml:

[dependencies.cala]
version = "0.5"
features = ["audio", "clock"]

There is a module for each feature (feature and module names match). Module documentation may include simple tutorials. More in depth tutorials may be found here.

Features

Here's a list of the features, with links to documentation.

Contributing

Contributors are always welcome! Whether it is a bug report, bug fix, feature request, feature implementation or whatever. Don't be shy about getting involved. I always make time to fix bugs, so usually a patched version of the library will be out soon after a report. Features take me longer, though. I'll also always listen to any design critiques you have. If you have any questions you can email me at jeronlau@plopgrizzly.com. Otherwise, here's a link to the issues on GitHub.

And, as always, make sure to always follow the code of conduct. Happy coding!

License

This repository is licensed under either of the following:

at your option.

Contribution Licensing

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above without any additional terms or conditions.

You can’t perform that action at this time.