mirror of
https://codeberg.org/dwl/dwl.git
synced 2026-11-03 20:02:23 +00:00
Compare commits
29
Commits
d16036e690
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6e2c155de | ||
|
|
be2bd72314 | ||
|
|
12a5856427 | ||
|
|
4ecb2a9df5 | ||
|
|
4953b7ea0c | ||
|
|
9dfaea2f79 | ||
|
|
afbafd53ab | ||
|
|
4ff9db2c40 | ||
|
|
d3fa32993c | ||
|
|
f08d8b3913 | ||
|
|
90e7c722e9 | ||
|
|
e2038450f2 | ||
|
|
4fd683cc84 | ||
|
|
d29259c26a | ||
|
|
fccce97448 | ||
|
|
d9ddaba762 | ||
|
|
f1675a4800 | ||
|
|
a75ca79630 | ||
|
|
87029e21c0 | ||
|
|
a514a928e4 | ||
|
|
242ffd7a75 | ||
|
|
f22c223cbf | ||
|
|
b83881f881 | ||
|
|
fa400c5d3d | ||
|
|
40b0ae76ae | ||
|
|
2a567195e6 | ||
|
|
cc23250527 | ||
|
|
98bea2c27f | ||
|
|
49837e985e |
+90
-7
@@ -1,12 +1,98 @@
|
||||
# Changelog
|
||||
|
||||
* [Unreleased](#unreleased)
|
||||
* [0.9](#0.9)
|
||||
* [0.8](#0.8)
|
||||
* [0.7](#0.7)
|
||||
* [0.6](#0.6)
|
||||
* [0.5](#0.5)
|
||||
|
||||
|
||||
## Unreleased
|
||||
## 0.9
|
||||
|
||||
### Added
|
||||
|
||||
* Add axis mouse bindings ([#652][652])
|
||||
* Add support for the ext-data-control protocol ([#1184][1184])
|
||||
* Add support for the ext-foreign-toplevel-list protocol ([#1223][1223])
|
||||
* Add support for the ext-image-copy-capture and ext-image-capture-source protocols (screensharing) ([#1218][1218], [#1223][1223], [#1224][1224])
|
||||
* Add support for version 4 of the layer shell protocol (on-demand keyboard interactivity) ([#674][674])
|
||||
* Add support for wlr-text-input and wlr-input-method protocols (IME) ([#1219][1219])
|
||||
* Snap windows to edges when moving or resizing them ([#608][608])
|
||||
|
||||
[1184]: https://codeberg.org/dwl/dwl/pulls/1184
|
||||
[1218]: https://codeberg.org/dwl/dwl/pulls/1218
|
||||
[1219]: https://codeberg.org/dwl/dwl/pulls/1219
|
||||
[1223]: https://codeberg.org/dwl/dwl/pulls/1223
|
||||
[1224]: https://codeberg.org/dwl/dwl/pulls/1224
|
||||
[608]: https://codeberg.org/dwl/dwl/pulls/608
|
||||
[652]: https://codeberg.org/dwl/dwl/pulls/652
|
||||
[674]: https://codeberg.org/dwl/dwl/pulls/674
|
||||
|
||||
|
||||
### Changed
|
||||
|
||||
* Update wlroots to version 0.20 ([#1218][1218])
|
||||
* Use modifier-independent key symbols in config.h keybindings ([#1075][1075])
|
||||
|
||||
[1075]: https://codeberg.org/dwl/dwl/pulls/1075
|
||||
[1218]: https://codeberg.org/dwl/dwl/pulls/1218
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
* Apply a minimum window size of 1x1 ([#1231][1231])
|
||||
* Close Xwayland submenus when changing tag or focus ([#1233][1233])
|
||||
* Don't make Firefox draw rounded corners when it is opened ([#d1ebf3c][d1ebf3c])
|
||||
* Don't send key release events to the wrong client ([#1108][1108])
|
||||
* Fix a crash when closing mpv ([#1220][1220])
|
||||
* Fix a crash when destroying an idle-inhibitor ([#1214][1214])
|
||||
* Fix choppy resizing on newer wlroots ([#1280][1280])
|
||||
* Fix the position of certain sub-menus in Xwayland applications ([#1232][1232])
|
||||
* Keep the focused border color on the regular client when opening a layer shell surface like wmenu ([#6013835][6013835])
|
||||
* Let keybindings focus and tag monitors above and below ([#5fd19fe][5fd19fe])
|
||||
* Preserve asleep disabled outputs in output config ([#1198][1198])
|
||||
* Respect size hints ([#4de32d2][4de32d2])
|
||||
* Set seat capabilities for virtual keyboards and pointers when there is no other input device ([#99cdc9a][99cdc9a])
|
||||
* Show popups in fullscreen Xwayland applications ([#1fe1b4e][1fe1b4e])
|
||||
* Show the correct cursor after moving and resizing ([#8ad2c92][8ad2c92])
|
||||
|
||||
[1108]: https://codeberg.org/dwl/dwl/pulls/1108
|
||||
[1198]: https://codeberg.org/dwl/dwl/pulls/1198
|
||||
[1214]: https://codeberg.org/dwl/dwl/pulls/1214
|
||||
[1220]: https://codeberg.org/dwl/dwl/pulls/1220
|
||||
[1231]: https://codeberg.org/dwl/dwl/pulls/1231
|
||||
[1232]: https://codeberg.org/dwl/dwl/pulls/1232
|
||||
[1233]: https://codeberg.org/dwl/dwl/pulls/1233
|
||||
[1280]: https://codeberg.org/dwl/dwl/pulls/1280
|
||||
[1fe1b4e]: https://codeberg.org/dwl/dwl/commit/1fe1b4e
|
||||
[4de32d2]: https://codeberg.org/dwl/dwl/commit/4de32d2
|
||||
[5fd19fe]: https://codeberg.org/dwl/dwl/commit/5fd19fe
|
||||
[6013835]: https://codeberg.org/dwl/dwl/commit/6013835
|
||||
[8ad2c92]: https://codeberg.org/dwl/dwl/commit/8ad2c92
|
||||
[99cdc9a]: https://codeberg.org/dwl/dwl/commit/99cdc9a
|
||||
[d1ebf3c]: https://codeberg.org/dwl/dwl/commit/d1ebf3c
|
||||
|
||||
|
||||
### Contributors
|
||||
|
||||
|
||||
* A Frederick Christensen
|
||||
* Alex Denes
|
||||
* Andrea Chiavazza
|
||||
* Diego Viola
|
||||
* Guido Cella
|
||||
* Leonardo Hernández Hernández
|
||||
* Peter Hofmann
|
||||
* Siva Mahadevan
|
||||
* julmajustus
|
||||
* klim
|
||||
* save196
|
||||
* sewn
|
||||
* thanatos
|
||||
|
||||
|
||||
## 0.8
|
||||
|
||||
### Added
|
||||
|
||||
* Support for the linux-drm-syncobj-v1 protocol ([wlroots!4715][wlroots!4715], [#685][685])
|
||||
@@ -17,15 +103,12 @@
|
||||
[646]: https://codeberg.org/dwl/dwl/pulls/646
|
||||
|
||||
|
||||
### Changed
|
||||
### Deprecated
|
||||
### Removed
|
||||
### Fixed
|
||||
|
||||
* Crash when a client is created while all outputs are disabled.
|
||||
|
||||
### Security
|
||||
### Contributors
|
||||
|
||||
Most changes in this release are not listed. See the commits for details.
|
||||
|
||||
|
||||
## 0.7
|
||||
|
||||
@@ -153,6 +153,7 @@ given the base on which it is built. Implemented default features are:
|
||||
- Support screen lockers via ext-session-lock-v1 protocol
|
||||
- Various Wayland protocols
|
||||
- XWayland support as provided by wlroots (can be enabled in `config.mk`)
|
||||
- Zero flickering - Wayland users naturally expect that "every frame is perfect"
|
||||
- Layer shell popups (used by Waybar)
|
||||
- Damage tracking provided by scenegraph API
|
||||
|
||||
|
||||
@@ -189,6 +189,7 @@ client_get_geometry(Client *c, struct wlr_box *geom)
|
||||
}
|
||||
#endif
|
||||
*geom = c->surface.xdg->geometry;
|
||||
geom->x = geom->y = 0;
|
||||
}
|
||||
|
||||
static inline Client *
|
||||
@@ -257,48 +258,6 @@ client_is_float_type(Client *c)
|
||||
(min.width == max.width || min.height == max.height));
|
||||
}
|
||||
|
||||
static inline int
|
||||
client_is_rendered_on_mon(Client *c, Monitor *m)
|
||||
{
|
||||
/* This is needed for when you don't want to check formal assignment,
|
||||
* but rather actual displaying of the pixels.
|
||||
* Usually VISIBLEON suffices and is also faster. */
|
||||
struct wlr_surface_output *s;
|
||||
int unused_lx, unused_ly;
|
||||
if (!wlr_scene_node_coords(&c->scene->node, &unused_lx, &unused_ly))
|
||||
return 0;
|
||||
wl_list_for_each(s, &client_surface(c)->current_outputs, link)
|
||||
if (s->output == m->wlr_output)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
client_is_stopped(Client *c)
|
||||
{
|
||||
int pid;
|
||||
siginfo_t in = {0};
|
||||
#ifdef XWAYLAND
|
||||
if (client_is_x11(c))
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
wl_client_get_credentials(c->surface.xdg->client->client, &pid, NULL, NULL);
|
||||
if (waitid(P_PID, pid, &in, WNOHANG|WCONTINUED|WSTOPPED|WNOWAIT) < 0) {
|
||||
/* This process is not our child process, while is very unlikely that
|
||||
* it is stopped, in order to do not skip frames, assume that it is. */
|
||||
if (errno == ECHILD)
|
||||
return 1;
|
||||
} else if (in.si_pid) {
|
||||
if (in.si_code == CLD_STOPPED || in.si_code == CLD_TRAPPED)
|
||||
return 1;
|
||||
if (in.si_code == CLD_CONTINUED)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int
|
||||
client_is_unmanaged(Client *c)
|
||||
{
|
||||
@@ -365,19 +324,36 @@ client_set_scale(struct wlr_surface *s, float scale)
|
||||
wlr_surface_set_preferred_buffer_scale(s, (int32_t)ceilf(scale));
|
||||
}
|
||||
|
||||
static inline void
|
||||
/* Returns nonzero if the client has to commit a buffer with the new size */
|
||||
static inline uint32_t
|
||||
client_set_size(Client *c, uint32_t width, uint32_t height)
|
||||
{
|
||||
#ifdef XWAYLAND
|
||||
if (client_is_x11(c)) {
|
||||
wlr_xwayland_surface_configure(c->surface.xwayland,
|
||||
c->geom.x + c->bw, c->geom.y + c->bw, width, height);
|
||||
return;
|
||||
return (int)width != client_surface(c)->current.width
|
||||
|| (int)height != client_surface(c)->current.height;
|
||||
}
|
||||
#endif
|
||||
if ((int32_t)width != c->surface.xdg->toplevel->current.width
|
||||
|| (int32_t)height != c->surface.xdg->toplevel->current.height)
|
||||
wlr_xdg_toplevel_set_size(c->surface.xdg->toplevel, (int32_t)width, (int32_t)height);
|
||||
if ((int32_t)width == c->surface.xdg->toplevel->scheduled.width
|
||||
&& (int32_t)height == c->surface.xdg->toplevel->scheduled.height)
|
||||
return 0;
|
||||
return wlr_xdg_toplevel_set_size(c->surface.xdg->toplevel, (int32_t)width, (int32_t)height);
|
||||
}
|
||||
|
||||
static inline void
|
||||
client_send_frame_done_iterator(struct wlr_surface *s, int sx, int sy, void *data)
|
||||
{
|
||||
wlr_surface_send_frame_done(s, data);
|
||||
}
|
||||
|
||||
static inline void
|
||||
client_send_frame_done(Client *c)
|
||||
{
|
||||
struct timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
wlr_surface_for_each_surface(client_surface(c), client_send_frame_done_iterator, &now);
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
||||
+4
-2
@@ -12,7 +12,6 @@ static const float rootcolor[] = COLOR(0x222222ff);
|
||||
static const float bordercolor[] = COLOR(0x444444ff);
|
||||
static const float focuscolor[] = COLOR(0x005577ff);
|
||||
static const float urgentcolor[] = COLOR(0xff0000ff);
|
||||
/* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */
|
||||
static const float fullscreen_bg[] = {0.0f, 0.0f, 0.0f, 1.0f}; /* You can also use glsl colors */
|
||||
|
||||
/* tagging - TAGCOUNT must be no greater than 31 */
|
||||
@@ -172,6 +171,9 @@ static const Button buttons[] = {
|
||||
};
|
||||
|
||||
static const Axis axes[] = {
|
||||
/* example of volume control:
|
||||
{ MODKEY, AxisUp, spawn, SHCMD("volume-up_EXAMPLE") },
|
||||
{ MODKEY, AxisDown, spawn, SHCMD("volume-down_EXAMPLE") },
|
||||
{ MODKEY, AxisDown, spawn, SHCMD("volume-down_EXAMPLE") }, */
|
||||
{ 0, 0, NULL, {0} },
|
||||
/* does nothing, but the array cannot be empty */
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
_VERSION = 0.9-dev
|
||||
_VERSION = 0.10-dev
|
||||
VERSION = `git describe --tags --dirty 2>/dev/null || echo $(_VERSION)`
|
||||
|
||||
PKG_CONFIG = pkg-config
|
||||
|
||||
Reference in New Issue
Block a user