diff --git a/README.md b/README.md index 68cdf6d..7018606 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,9 @@ comprehensive monitor management. Here's what makes Chroma stand out: - Wayland development headers - EGL/OpenGL development headers +See [development section](#development) for more details. This section might get +outdated at any given moment, so refer to the Nix shell if in doubt. + ### Building #### Quick Build @@ -66,6 +69,9 @@ make # Or build debug version make debug + +# Alternatively, create a static build +make static ``` ### Installation @@ -179,44 +185,56 @@ Chroma works with any Wayland compositor that supports: - `wl_output` interface - EGL window surface creation -Tested only on Hyprland. +Tested only on Hyprland, but should work fine with any compositor that meets the +above criteria. Which is basically all of them I think? -## Development +## Contributing -### Building Debug Version +You might want to contribute to Chroma for a variety of reasons. I usually will +not judge, however, there are some conventions I expect you to adhere to. Mainly +I would like for you to follow the project's **code style**: + +- C11 standard (I really wished for C99) +- 2-space indentation (use `make format`) +- No tabs (except for the Makefile, obviously) +- Function names: `chroma_function_name` +- Constants: `CHROMA_CONSTANT_NAME` + +Once your changes are done, fork this repository and create a feature branch. +This is not a strict requirement but I'd rather not deal with rebase failures. +Create your feature branch, make your changes, _test thoroughly_ and submit your +pull request when you are done. With your pull request, I'd _really_ like a tiny +snippet of text that explains your motive of changes. While I can infer what you +are trying to do, I'd rather _know_ what was going on in your head. + +### Development + +A Nix shell is provided within the repository. You may use both `nix-shell` and +`nix develop` to enter a development shell with all of the required dependencies +for _dynamic linking_. Additionally, [Direnv](https://direnv.net) users may use +`direnv allow` to use the shell provided by the repository. + +A few convenience commands are provided by the Makefile, which you may invoke at +your own discretion. + +#### Building Debug Version ```bash make debug ``` -### Code Formatting +#### Code Formatting ```bash make format # requires clang-format ``` -### Static Analysis +#### Static Analysis ```bash make analyze # requires cppcheck ``` -## Contributing - -1. Fork the repository -2. Create a feature branch -3. Make your changes -4. Test thoroughly -5. Submit a pull request - -### Code Style - -- C11 standard -- 2-space indentation -- No tabs (except for the Makefile, obviously) -- Function names: `chroma_function_name` -- Constants: `CHROMA_CONSTANT_NAME` - ## License