How to Contribute
Guidelines for contributing to OXWM
Getting Started
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment
git clone https://github.com/yourusername/oxwm
cd oxwmDevelopment with Nix
If you're on NixOS or have Nix installed:
nix develop
cargo buildManual Setup
Install dependencies:
# Arch
sudo pacman -S rust cargo libx11 libxft freetype2 fontconfig pkg-config
# Build
cargo buildTesting Changes
Use Xephyr to test OXWM without affecting your current session:
just testOr manually:
Xephyr -screen 1280x800 :1 &
DISPLAY=:1 cargo runGuidelines
Never commit your personal ~/.config/oxwm/config.lua
- Only modify
templates/config.luaif adding new configuration options - Test your changes with
just testusing Xephyr - Document any new features or keybindings
- Update
templates/oxwm.luaif adding new API functions
Project Structure
src/
├── bin/main.rs # Entry point
├── window_manager.rs # Core X11 event handling
├── config/ # Lua config system
├── bar/ # Status bar
├── keyboard/ # Keybindings
├── layout/ # Window layouts
└── errors.rs # Error types
templates/
├── config.lua # Default config
└── oxwm.lua # LSP type definitionsPull Requests
- Create a branch for your feature/fix
- Make your changes
- Test thoroughly with Xephyr
- Submit a PR with a clear description
Reporting Issues
When reporting bugs, include:
- OXWM version
- Linux distribution
- Steps to reproduce
- Expected vs actual behavior
- Relevant log output