hyprland-wiki/pages/Contributing and Debugging/_index.md

109 lines
3 KiB
Markdown
Raw Normal View History

2022-08-12 20:46:36 +02:00
# Contributing guidelines
2022-09-04 13:13:24 +02:00
PR, code styling and code FAQs are [here](./PR-Guidelines)
2022-08-12 20:46:36 +02:00
For issues, please see
[the guidelines](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md)
## Build in debug mode
2022-08-12 20:46:36 +02:00
### Required packages
2022-08-12 20:46:36 +02:00
`xcb` stuff, check with your local package provider.
`wayland` - of course.
_Arch_:
2022-08-12 20:46:36 +02:00
2022-08-17 16:08:29 +02:00
`yay -S gdb ninja gcc cmake libxcb xcb-proto xcb-util xcb-util-keysyms libxfixes libx11 libxcomposite xorg-xinput libxrender pixman wayland-protocols cairo pango seatd`
2022-08-12 20:46:36 +02:00
(If any are missing hmu)
### Recommended, CMake
2022-08-12 20:46:36 +02:00
2022-08-13 19:38:30 +02:00
Install the VSCode C/C++ and CMake Tools extensions and use that.
2022-08-12 20:46:36 +02:00
2022-08-13 19:38:30 +02:00
I've attached a [example/launch.json](https://github.com/hyprwm/Hyprland/blob/main/example/launch.json)
that you can copy to your .vscode/ folder in the repo root.
2022-08-12 20:46:36 +02:00
With that, you can build in debug, go to the debugging tab and hit
`(gdb) Launch`.
### Custom, CLI
2022-08-12 20:46:36 +02:00
`make debug`
attach and profile in your preferred way.
2022-08-13 19:38:30 +02:00
{{< hint >}}
2022-08-12 20:46:36 +02:00
For all ways, make sure to `sudo make clear` to clear any root-owned files.
Also, before the first build (or after some updates, possibly)
`sudo make config`. (If you get any `missing header file "...-protocol.h"`, you
need to `make config`.)
2022-08-13 19:38:30 +02:00
{{< /hint >}}
2022-08-12 20:46:36 +02:00
2022-09-04 13:13:24 +02:00
{{< hint type=warning >}}
`make config` will overwrite wlroots headers in `/usr/`,
meaning you'll be unable to build any other wlroots compositor
without a wlroots reinstall.
{{< /hint >}}
### Meson
```console
meson setup build -Dbuildtype=debug
ninja -C build
```
### Nix
To build the package in debug mode, you have to override it like this:
```nix
hyprland.override {
debug = true;
};
```
This code can go in the `package` attribute of the NixOS/Home Manager modules.
## Running
2022-08-12 20:46:36 +02:00
when running Hyprland in Debug mode, the config is
`~/.config/hypr/hyprlandd.conf` and the logs can be found at
`/tmp/hypr/[INSTANCE SIGNATURE]/hyprlandd.conf`.
## Logs, dumps, etc
2022-08-12 20:46:36 +02:00
You can use the logs and the GDB debugger, but running Hyprland in debug compile
as a driver and using it for a while might give more insight to the more random
bugs.
When Hyprland crashes, use `coredumpctl` and then `coredumpctl info PID` to see
the dump. See the instructions below for more info about `coredumpctl`.
2022-08-12 20:46:36 +02:00
You can also use the amazing command
2022-08-12 20:46:36 +02:00
2022-08-13 19:38:30 +02:00
```sh
watch -n 0.1 "grep -v \"arranged\" /tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/hyprland.log | tail -n 40"
2022-08-13 19:38:30 +02:00
```
2022-08-12 20:46:36 +02:00
for live logs. (replace `hyprland` with `hyprlandd` for debug builds)
### How do I get a coredump?
See [`ISSUE_GUIDELINES.md`](https://github.com/hyprwm/Hyprland/blob/main/docs/ISSUE_GUIDELINES.md).
## Nesting Hyprland
2022-08-12 20:46:36 +02:00
Hyprland can run nested in a window. For that, make sure you did the following:
2022-08-13 01:47:48 +02:00
- built in debug
- removed ALL `exec=` and `exec-once=` keywords from your debug config
(`hyprlandd.conf`)
2023-02-27 13:32:56 +01:00
- set a resolution for `WL-1` and are not using `preferred`
- made sure no keybinds overlap (use a different mod for your keybinds altogether)
2022-08-12 20:46:36 +02:00
2023-02-27 13:32:56 +01:00
Once you launch, the display might be cropped. This can be fixed by setting the resolution for `WL-1` to
the exact dimensions of the window as reported by `hyprctl clients`.