Update some docs
This commit is contained in:
@@ -1,5 +0,0 @@
|
|||||||
Contributing
|
|
||||||
|
|
||||||
PeachWM is a completely open source project,
|
|
||||||
and grateful for any outside contributions that improve the project.
|
|
||||||
If you'd like to contribute, fork the project and create a pull request or issue.
|
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
PeachWM is a completely open source project,
|
||||||
|
and grateful for any outside contributions that improve the project.
|
||||||
|
If you'd like to contribute, fork the project and create a pull request or issue.
|
||||||
|
|
||||||
|
Before contributing, please consider the following guidelines.
|
||||||
|
|
||||||
|
## How to Contribute
|
||||||
|
|
||||||
|
1. **Discuss first** -- Open an issue to discuss significant changes before
|
||||||
|
implementing them. This avoids wasted effort if the change isn't a good fit.
|
||||||
|
2. **Keep it focused** -- Each pull request should address a single concern.
|
||||||
|
Avoid mixing bug fixes, refactors, and features in the same PR.
|
||||||
|
3. **Test your changes** -- Run `make debug` (Clang with `-Weverything` and
|
||||||
|
sanitizers) and `make release` (`-Werror`) to ensure no warnings or errors.
|
||||||
|
4. **Match the existing style** -- See the Coding Style section below.
|
||||||
|
|
||||||
|
## Coding Style
|
||||||
|
|
||||||
|
PeachWM follows a consistent style throughout the codebase. Please match it.
|
||||||
|
|
||||||
|
### Indentation and Formatting
|
||||||
|
|
||||||
|
- **2-space indentation** -- No tabs, no 4-space indents.
|
||||||
|
- **K&R brace style** -- Opening brace on the same line as the statement.
|
||||||
|
- **Return type on its own line** -- Every function declaration and definition
|
||||||
|
places the return type on a separate line:
|
||||||
|
|
||||||
|
```c
|
||||||
|
static inline int
|
||||||
|
client_is_x11(Client *c)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- **No extra spaces inside parentheses** -- `if (cond)`, `func(a, b)`.
|
||||||
|
- **Pointer asterisk attached to the name** -- `Client *c`, not `Client* c`.
|
||||||
|
|
||||||
|
### Naming Conventions
|
||||||
|
|
||||||
|
- **Functions and variables:** `snake_case`
|
||||||
|
- **Types (structs, enums, typedefs):** `PascalCase`
|
||||||
|
- **Macros:** `UPPER_SNAKE_CASE`
|
||||||
|
- **Enum values:** `PascalCase` (e.g., `CurNormal`, `XDGShell`, `LyrBg`)
|
||||||
|
|
||||||
|
### Code Patterns
|
||||||
|
|
||||||
|
- **Use `wl_list`** for intrusive linked lists (Wayland native pattern).
|
||||||
|
- **Use the `LISTEN` macro** to attach `wl_signal` handlers:
|
||||||
|
|
||||||
|
```c
|
||||||
|
LISTEN(&server->new_output, &output_listener, handle_new_output);
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Follow the `wl_container_of` pattern** in event listeners:
|
||||||
|
|
||||||
|
```c
|
||||||
|
void
|
||||||
|
handle_new_output(struct wl_listener *listener, void *data)
|
||||||
|
{
|
||||||
|
Monitor *m = wl_container_of(listener, m, frame);
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Guard X11-specific code** with `#ifdef XWAYLAND` / `#endif`.
|
||||||
|
- **Use `ecalloc()`** instead of raw `malloc()` -- it calls `die()` on OOM.
|
||||||
|
- **Prefer static inline functions in headers** over function pointers,
|
||||||
|
consistent with `include/client.h`.
|
||||||
|
|
||||||
|
### Build and Compiler
|
||||||
|
|
||||||
|
- The project uses **C11** (`-std=c11`).
|
||||||
|
- The **Makefile** is POSIX make. Do not introduce autotools, CMake, or meson.
|
||||||
|
- Ensure your code compiles cleanly with `make debug` and `make release` --
|
||||||
|
CI checks both targets.
|
||||||
|
|
||||||
|
These guidelines are suggestions, not hard rules. When in doubt, match the
|
||||||
|
style of the surrounding code.
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
# PeachWM
|
# PeachWM
|
||||||
|
|
||||||
<!--toc:start-->
|
<!--toc:start-->
|
||||||
- [peachwm](#peachwm)
|
- [PeachWM](#peachwm)
|
||||||
|
- [peachwm](#peachwm-1)
|
||||||
- [Features](#features)
|
- [Features](#features)
|
||||||
- [Dependencies](#dependencies)
|
- [Dependencies](#dependencies)
|
||||||
- [Configuration](#configuration)
|
- [Configuration](#configuration)
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Roadmap](#roadmap)
|
- [Roadmap](#roadmap)
|
||||||
- [Contributing](#contributing)
|
|
||||||
<!--toc:end-->
|
<!--toc:end-->
|
||||||
|
|
||||||
## peachwm
|
## peachwm
|
||||||
@@ -56,7 +56,7 @@ cp /etc/peachwm/config.lua $HOME/.config/peachwm/config.lua
|
|||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
- [x] No longer require exiting peachwm upon input config changes
|
- [x] No longer require exiting peachwm upon input config changes
|
||||||
- [ ] Allow status bar requests
|
- [ ] ->Allow status bar requests (swaymsg like)
|
||||||
- [ ] Add smartgaps
|
- [ ] Add smartgaps
|
||||||
- [ ] Implement scratchpad workspaces
|
- [ ] Implement scratchpad workspaces
|
||||||
- [ ] Add animations via [scenefx](https://github.com/wlrfx/scenefx)
|
- [ ] Add animations via [scenefx](https://github.com/wlrfx/scenefx)
|
||||||
|
|||||||
Reference in New Issue
Block a user