mirror of
https://github.com/labwc/labwc.git
synced 2026-06-14 14:33:17 -04:00
Compare commits
8 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07e1053a8d | ||
|
|
2135fb0d35 | ||
|
|
bbfa6bbddb | ||
|
|
a814dd1e38 | ||
|
|
28d03b0893 | ||
|
|
f4b9bdab65 | ||
|
|
78227f1724 | ||
|
|
579e532908 |
8 changed files with 110 additions and 8 deletions
13
.github/workflows/build.yml
vendored
13
.github/workflows/build.yml
vendored
|
|
@ -93,10 +93,15 @@ jobs:
|
|||
sed -i '/^Types/ s/deb/& deb-src/' /etc/apt/sources.list.d/debian.sources
|
||||
apt-get update
|
||||
apt-get upgrade -y
|
||||
apt-get install -y git gcc clang gdb xwayland
|
||||
apt-get build-dep -y labwc
|
||||
apt-get build-dep -y libwlroots-0.19-dev
|
||||
apt-get build-dep -y libxkbcommon-dev
|
||||
apt-get install -y git gcc clang gdb xwayland meson pkgconf
|
||||
apt-get build-dep -y libwlroots-0.20-dev
|
||||
# Debian Testing temporarily removed labwc due to wlroots 0.20 transition
|
||||
#apt-get build-dep -y labwc
|
||||
# Install the deps manually
|
||||
apt-get install -y libxml2-dev liblzma-dev libglib2.0-dev \
|
||||
libcairo2-dev libpango1.0-dev libinput-dev libpng-dev \
|
||||
librsvg2-dev wayland-protocols libxkbcommon-dev libdrm-dev \
|
||||
scdoc gettext libwlroots-0.20-dev libsfdo-dev
|
||||
|
||||
- name: Install FreeBSD dependencies
|
||||
if: matrix.name == 'FreeBSD'
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@
|
|||
- [6. Unit Tests](#unit-tests)
|
||||
- [7. Submitting Patches](#submitting-patches)
|
||||
- [8. Native Language Support](#native-language-support)
|
||||
- [9. Upversion](#upversion)
|
||||
- [9. Tools](#tools)
|
||||
- [10. Upversion](#upversion)
|
||||
|
||||
# How to Contribute
|
||||
|
||||
|
|
@ -472,6 +473,29 @@ This generates a new pot file at `po/labwc.pot`
|
|||
3. Copy the header from the original `labwc.pot` to the new one, keeping
|
||||
the newly generated dates, check for sanity and commit.
|
||||
|
||||
# Tools
|
||||
|
||||
We permit LLM and AI-assisted tooling, but only on the basis that humans remain
|
||||
fully accountable. Contributors must use an `Assisted-by:` tag in the commit
|
||||
logs if AI tools generated or significantly assisted with any part of the code
|
||||
or documentation. Humans retain full legal and technical responsibility for the
|
||||
resulting work, including any defects.
|
||||
|
||||
We have received Pull Requests where the submitter clearly did not understand
|
||||
the code, could not reason about it, and would be unable to maintain it. This
|
||||
is not acceptable.
|
||||
|
||||
Any AI-generated code contribution must be compatible with the GPL-2.0-only
|
||||
license.
|
||||
|
||||
While LLMs can be useful for triage, review, clean-up, API refactoring and
|
||||
similar tasks, we strongly discourage AI slop. Code review effort is usually the
|
||||
project's primary bottleneck, and submitting unreviewed, AI-generated garbage
|
||||
wastes reviewer time, slows development, and harms the overall health of the
|
||||
project. Likewise, AI-generated commit messages and AI-written text in issues
|
||||
and discussions are strongly discouraged and may be treated as sabotage on this
|
||||
basis.
|
||||
|
||||
# Upversion
|
||||
|
||||
It is generally only the lead-maintainer who will upversion, but in order
|
||||
|
|
|
|||
36
NEWS.md
36
NEWS.md
|
|
@ -10,6 +10,7 @@ The format is based on [Keep a Changelog]
|
|||
| Date | All Changes | wlroots version | lines-of-code |
|
||||
|------------|---------------|-----------------|---------------|
|
||||
| 2026-05-25 | [0.20.0] | 0.20.1 | 28313 |
|
||||
| 2026-06-11 | [0.9.8] | 0.19.3 | 29284 |
|
||||
| 2026-04-17 | [0.9.7] | 0.19.2 | 29277 |
|
||||
| 2026-03-15 | [0.9.6] | 0.19.2 | 29271 |
|
||||
| 2026-03-04 | [0.9.5] | 0.19.2 | 29251 |
|
||||
|
|
@ -46,6 +47,7 @@ The format is based on [Keep a Changelog]
|
|||
|
||||
[unreleased]: NEWS.md#unreleased
|
||||
[0.20.0]: NEWS.md#0200---2026-05-25
|
||||
[0.9.8]: NEWS.md#098---2026-06-11
|
||||
[0.9.7]: NEWS.md#097---2026-04-17
|
||||
[0.9.6]: NEWS.md#096---2026-03-15
|
||||
[0.9.5]: NEWS.md#095---2026-03-04
|
||||
|
|
@ -84,6 +86,19 @@ The format is based on [Keep a Changelog]
|
|||
|
||||
[unreleased-commits]
|
||||
|
||||
## Notes on wlroots-0.20
|
||||
|
||||
There are some regression warnings worth noting for the switch to wlroots 0.20:
|
||||
|
||||
- lxqt-panel auto-hiding does not work with a panel size greater than 40 [#3600]
|
||||
[wlroots-5392]
|
||||
- Some Wine game windows disappear after alt-tab. It is not yet clear where the
|
||||
bug is, but the issue manifests itself when running wlroots-0.20 [#3615]
|
||||
[wlroots-4103]
|
||||
|
||||
[wlroots-5392]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5392
|
||||
[wlroots-4103]: https://gitlab.freedesktop.org/wlroots/wlroots/-/work_items/4103
|
||||
|
||||
## 0.20.0 - 2026-05-25
|
||||
|
||||
[0.20.0-commits]
|
||||
|
|
@ -217,6 +232,16 @@ There are some regression warnings worth noting for the switch to wlroots 0.19:
|
|||
[wlroots-5098]:https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5098
|
||||
[gtk-8792]: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8792
|
||||
|
||||
## 0.9.8 - 2026-06-11
|
||||
|
||||
[0.9.8-commits]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Handle titles with no visible characters @Consolatis [#3631]
|
||||
- Save window position on initial placement to fix Raspberry Pi pygame SDL
|
||||
XWayland window starting off-screen. @tokyo4j [#3433] [#3625] [#3616]
|
||||
|
||||
## 0.9.7 - 2026-04-17
|
||||
|
||||
[0.9.7-commits]
|
||||
|
|
@ -2772,6 +2797,7 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16
|
|||
[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
|
||||
[unreleased-commits]: https://github.com/labwc/labwc/compare/0.20.0...HEAD
|
||||
[0.20.0-commits]: https://github.com/labwc/labwc/compare/0.9.5..0.20.0
|
||||
[0.9.8-commits]: https://github.com/labwc/labwc/compare/0.9.7...0.9.8
|
||||
[0.9.7-commits]: https://github.com/labwc/labwc/compare/0.9.6...0.9.7
|
||||
[0.9.6-commits]: https://github.com/labwc/labwc/compare/0.9.5...0.9.6
|
||||
[0.9.5-commits]: https://github.com/labwc/labwc/compare/0.9.4...0.9.5
|
||||
|
|
@ -3223,6 +3249,7 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16
|
|||
[#2956]: https://github.com/labwc/labwc/pull/2956
|
||||
[#2965]: https://github.com/labwc/labwc/pull/2965
|
||||
[#2967]: https://github.com/labwc/labwc/pull/2967
|
||||
[#2968]: https://github.com/labwc/labwc/pull/2968
|
||||
[#2970]: https://github.com/labwc/labwc/pull/2970
|
||||
[#2971]: https://github.com/labwc/labwc/pull/2971
|
||||
[#2972]: https://github.com/labwc/labwc/pull/2972
|
||||
|
|
@ -3317,6 +3344,7 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16
|
|||
[#3428]: https://github.com/labwc/labwc/pull/3428
|
||||
[#3429]: https://github.com/labwc/labwc/pull/3429
|
||||
[#3430]: https://github.com/labwc/labwc/pull/3430
|
||||
[#3433]: https://github.com/labwc/labwc/pull/3433
|
||||
[#3439]: https://github.com/labwc/labwc/pull/3439
|
||||
[#3440]: https://github.com/labwc/labwc/pull/3440
|
||||
[#3441]: https://github.com/labwc/labwc/pull/3441
|
||||
|
|
@ -3343,4 +3371,12 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16
|
|||
[#3543]: https://github.com/labwc/labwc/pull/3543
|
||||
[#3547]: https://github.com/labwc/labwc/pull/3547
|
||||
[#3567]: https://github.com/labwc/labwc/pull/3567
|
||||
[#3576]: https://github.com/labwc/labwc/pull/3576
|
||||
[#3577]: https://github.com/labwc/labwc/pull/3577
|
||||
[#3581]: https://github.com/labwc/labwc/pull/3581
|
||||
[#3595]: https://github.com/labwc/labwc/pull/3595
|
||||
[#3600]: https://github.com/labwc/labwc/pull/3600
|
||||
[#3615]: https://github.com/labwc/labwc/pull/3615
|
||||
[#3616]: https://github.com/labwc/labwc/pull/3616
|
||||
[#3625]: https://github.com/labwc/labwc/pull/3625
|
||||
[#3631]: https://github.com/labwc/labwc/pull/3631
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ Build dependencies include:
|
|||
- meson, ninja, gcc/clang
|
||||
- wayland-protocols
|
||||
|
||||
Disable xwayland with `meson -Dxwayland=disabled build/`
|
||||
Disable xwayland with `meson setup -Dxwayland=disabled build/`
|
||||
|
||||
For OS/distribution specific details see [wiki].
|
||||
|
||||
|
|
|
|||
12
src/buffer.c
12
src/buffer.c
|
|
@ -95,6 +95,7 @@ buffer_adopt_cairo_surface(cairo_surface_t *surface)
|
|||
|
||||
buffer->surface = surface;
|
||||
buffer->data = cairo_image_surface_get_data(buffer->surface);
|
||||
assert(buffer->data);
|
||||
buffer->format = DRM_FORMAT_ARGB8888;
|
||||
buffer->stride = cairo_image_surface_get_stride(buffer->surface);
|
||||
buffer->logical_width = width;
|
||||
|
|
@ -107,6 +108,12 @@ buffer_adopt_cairo_surface(cairo_surface_t *surface)
|
|||
struct lab_data_buffer *
|
||||
buffer_create_cairo(uint32_t logical_width, uint32_t logical_height, float scale)
|
||||
{
|
||||
if (!logical_width || !logical_height) {
|
||||
wlr_log(WLR_ERROR, "Failed to create cairo buffer of %ux%u: dimensions must be > 0",
|
||||
logical_width, logical_height);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Create an image surface with the scaled size */
|
||||
cairo_surface_t *surface =
|
||||
cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
|
||||
|
|
@ -142,6 +149,7 @@ buffer_create_from_data(void *pixel_data, uint32_t width, uint32_t height,
|
|||
buffer->logical_width = width;
|
||||
buffer->logical_height = height;
|
||||
buffer->data = pixel_data;
|
||||
assert(buffer->data);
|
||||
buffer->format = DRM_FORMAT_ARGB8888;
|
||||
buffer->stride = stride;
|
||||
buffer->surface = cairo_image_surface_create_for_data(
|
||||
|
|
@ -188,6 +196,10 @@ buffer_resize(struct lab_data_buffer *src_buffer, int width, int height,
|
|||
|
||||
struct lab_data_buffer *buffer =
|
||||
buffer_create_cairo(width, height, scale);
|
||||
if (!buffer) {
|
||||
wlr_log(WLR_INFO, "Failed to resize buffer to %dx%d", width, height);
|
||||
return NULL;
|
||||
}
|
||||
cairo_t *cairo = cairo_create(buffer->surface);
|
||||
|
||||
struct wlr_box container = {
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ font_buffer_create(struct lab_data_buffer **buffer, int max_width,
|
|||
cairo_pattern_t *bg_pattern, double scale, bool use_markup)
|
||||
{
|
||||
if (string_null_or_empty(text)) {
|
||||
*buffer = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -91,6 +92,13 @@ font_buffer_create(struct lab_data_buffer **buffer, int max_width,
|
|||
height = computed_height;
|
||||
}
|
||||
|
||||
if (height <= 0 || width <= 0) {
|
||||
wlr_log(WLR_INFO, "Refusing to create invisible font buffer of %dx%d",
|
||||
width, height);
|
||||
*buffer = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
*buffer = buffer_create_cairo(width, height, scale);
|
||||
if (!*buffer) {
|
||||
wlr_log(WLR_ERROR, "Failed to create font buffer");
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ _create_buffer(struct scaled_buffer *scaled_buffer, double scale)
|
|||
&self->font, self->color, bg_pattern, scale, self->use_markup);
|
||||
|
||||
if (!buffer) {
|
||||
wlr_log(WLR_ERROR, "font_buffer_create() failed");
|
||||
wlr_log(WLR_INFO, "font_buffer_create() failed");
|
||||
}
|
||||
|
||||
zfree_pattern(solid_bg_pattern);
|
||||
|
|
|
|||
19
src/xdg.c
19
src/xdg.c
|
|
@ -621,7 +621,24 @@ xdg_toplevel_view_configure(struct view *view, struct wlr_box geo)
|
|||
if (geo.width != view->pending.width
|
||||
|| geo.height != view->pending.height) {
|
||||
if (toplevel->base->initialized) {
|
||||
serial = wlr_xdg_toplevel_set_size(toplevel, geo.width, geo.height);
|
||||
/*
|
||||
* geo.{width,height} are checked here to guard against
|
||||
* an odd edge-case reported in #3608 which involves TTY
|
||||
* switching between labwc and Xfce running on X.Org on
|
||||
* another TTY. It is not yet clear what causes this,
|
||||
* but hitting wlroots assert() is not great, so let's
|
||||
* protect against it.
|
||||
*
|
||||
* Ref:
|
||||
* - https://github.com/labwc/labwc/issues/3608
|
||||
*/
|
||||
if (geo.width > 0 && geo.height > 0) {
|
||||
serial = wlr_xdg_toplevel_set_size(toplevel,
|
||||
geo.width, geo.height);
|
||||
} else {
|
||||
wlr_log(WLR_ERROR, "cannot set size %dx%d",
|
||||
geo.width, geo.height);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* This may happen, for example, when a panel resizes because a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue