We welcome contributions to the TinyWL-hs project! This is a Wayland compositor written in Haskell, and we're actively working on expanding its features and capabilities.
-
Ensure you have the prerequisites installed:
- Nix package manager
- Git
- Basic understanding of Wayland, Haskell, and C
-
Fork and clone the repository with submodules:
git clone --recurse-submodules https://github.com/[your-username]/tiny-wlhs.git
Current priority areas for contribution include:
-
Copy/Paste Functionality
- Implementing basic clipboard support
- Integration with wl-clipboard
-
Multi-Monitor Support
- Handling multiple displays
- Window management across screens
-
Performance Optimization
- FFI call profiling
- Performance bottleneck identification
- Optimization implementation
-
Testing
- Setting up Haskell testing framework
- Setting up C testing framework
- Writing initial test cases
-
Documentation
- Keeping documentation in sync with code changes
- Improving setup guides
- Adding configuration examples
- Check existing issues and TODO.md for current tasks
- Comment on an issue you want to work on
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- Follow standard Haskell style conventions
- Use meaningful variable names
- Document exported functions with Haddock
- Keep functions focused and modular
- Follow existing C code style in the project
- Use proper memory management
- Document functions and complex logic
- Avoid direct memory manipulation where possible
- Prefer function calls over Peek/Poke
- Implement proper getters/setters in C
- Document FFI bindings clearly
- Ensure your code builds without errors
- Update documentation if you're changing functionality
- Update CHANGELOG.md with your changes
- Submit a pull request with a clear description of changes
- Use GitHub issues for bug reports and feature discussions
- For questions or suggestions, contact: [email protected]
- Check existing issues before creating new ones
src/
- Haskell source codec/
- C source codeConfig.hs
- Main configurationSetup.hs
- Setup functionalityMain.hs
- Application entry point
By contributing, you agree that your contributions will be licensed under the project's license.
Thank you for contributing to TinyWL-hs