35 Commits

Author SHA1 Message Date
Silvan Jegen f9bedb7908 dwl: don't show input popup if client is not enabled
We link clients and their input popups which lets us disable the popups'
scene nodes in case the associated client's scene is not enabled on a tag.
2022-06-26 14:04:34 +02:00
Silvan Jegen a92504d8bf dwl: don't destroy popup scene on unmap
Instead we disable it and destroy it at destroy time.
2022-06-26 13:48:59 +02:00
Silvan Jegen 5493e0bbf2 dwl: use a dedicated layer for input popups
Otherwise we seem to have conflicts with other floating clients.
2022-06-12 14:50:47 +02:00
Silvan Jegen f342b7d412 Merge branch 'main' into input-protocols-v2-before-merge 2022-06-06 13:12:27 +02:00
Leonardo Hernández Hernández 4dfa45659a fix compiler error with gcc complaining about parentheses
dwl.c: In function ‘unmaplayersurface’:
dwl.c:2253:9: error: suggest parentheses around assignment used as truth value [-Werror=parentheses]
 2253 |         layersurface->layer_surface->mapped = layersurface->mapped = 0;
      |         ^~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [<builtin>: dwl.o] Error 1

clang not affected
2022-06-05 16:57:20 -05:00
Leonardo Hernández Hernández b91017e713 disable scene node at unmaplayersurface() 2022-06-05 15:27:40 -05:00
Leonardo Hernández Hernández 2623a96ebf call client_set-size() if client has a resize 2022-05-27 00:19:17 -05:00
Leonardo Hernández Hernández 52e0d00942 check client_surface() returning NULL
now client_surface()->data is a pointer to the wlr_scene_tree of clients
which allows us to not call wlr_scene_node_lower_to_bottom() for every clients
2022-05-25 17:12:44 -05:00
Leonardo Hernández Hernández 7018b9b65c correct libinput function name for drag_lock 2022-05-25 15:01:38 -05:00
Leonardo Hernández Hernández 48ec914f43 destroy layersurface's scene node in destroylayersurfacenotify() 2022-05-25 14:49:32 -05:00
Leonardo Hernández Hernández 40449fa64f add a new function to get a client from a wlr_surface 2022-05-23 10:55:28 -05:00
Ben Jargowsky ecbc2c61db Add configuration options for touchpads 2022-05-23 00:01:47 +02:00
Silvan Jegen cc9f4a3dc4 Remove now unused input_popup lists 2022-05-22 15:35:13 +02:00
Silvan Jegen 8841d17ec8 Use the LISTEN macro everywhere 2022-05-22 14:59:27 +02:00
Silvan Jegen 491fa291fa Free input_relay 2022-05-22 14:18:06 +02:00
Silvan Jegen 561acf650a Fix whitespace issue 2022-05-22 14:08:53 +02:00
Silvan Jegen fe8280bf39 Remove now unneeded render_data struct definition 2022-05-22 14:06:54 +02:00
Silvan Jegen fbd698479a Fix imports 2022-05-22 14:06:22 +02:00
Leonardo Hernández Hernández 8870ba0bb8 implement urgency hints for xwayland clients 2022-05-17 14:38:18 -05:00
Leonardo Hernández Hernández 5de68ba713 sync manpage and help info
Signed-off-by: Leonardo Hernández Hernández <leohdz172@protonmail.com>
2022-05-17 13:26:57 -05:00
Ben Jargowsky 2f8736b986 Check if XWayland client size_hints are NULL 2022-05-15 23:09:21 +02:00
Silvan Jegen ac1aef7ead implement input method keyboard grab 2022-05-15 16:06:46 +02:00
Silvan Jegen 27bf627a97 implement input popup rendering
Based on https://github.com/swaywm/sway/pull/5890
2022-05-15 16:06:46 +02:00
Silvan Jegen c86f2f73fd implement text-input and input-method protocol support
This is mostly copied from the sway implementation here:

https://github.com/swaywm/sway/pull/4740/files
2022-05-15 15:54:02 +02:00
Leonardo Hernández Hernández 3c11ad9aa6 fix segfault when dragging chromium tabs 2022-05-14 00:29:35 -05:00
Ben Jargowsky 06d9230a96 Run focusclient when switching to monocle layout 2022-05-13 10:20:28 +02:00
Leonardo Hernández Hernández 22bd75226b remove trailing whitespaces 2022-05-10 11:42:40 -05:00
Leonardo Hernández Hernández 063736f898 add -v flag to the manpage
Thanks @Humm42
2022-05-10 11:39:33 -05:00
Leonardo Hernández Hernández d5a741c9b4 add dist target 2022-05-09 16:25:03 -05:00
Leonardo Hernández Hernández 5d8084daa7 add flag to print version and exit 2022-05-09 16:24:36 -05:00
Sevz 07d56c6d7b Merge pull request #230 from BenJarg/null-wlr_seat_get_keyboard
Handle 'wlr_seat_get_keyboard' possibly returning null.
2022-05-09 13:18:19 -05:00
Ben Jargowsky e0d310fd84 Handle 'wlr_seat_get_keyboard' possibly returning null. 2022-05-09 14:00:21 +02:00
Leonardo Hernández Hernández 3a4b7d104f restack xwayland surface on focusclient() 2022-04-29 17:45:02 -05:00
Ben Jargowsky d071a899f3 Run printstatus() when a monitor is removed 2022-04-25 13:50:53 -07:00
Leonardo Hernández Hernández a48ce99e6a use pointer math in xytonode() 2022-04-15 17:40:02 -05:00
7 changed files with 868 additions and 41 deletions
+11 -2
View File
@@ -1,6 +1,6 @@
include config.mk
CFLAGS += -I. -DWLR_USE_UNSTABLE -std=c99 -pedantic
CFLAGS += -I. -DWLR_USE_UNSTABLE -std=c99 -pedantic -DVERSION=\"$(VERSION)\"
WAYLAND_PROTOCOLS=$(shell pkg-config --variable=pkgdatadir wayland-protocols)
WAYLAND_SCANNER=$(shell pkg-config --variable=wayland_scanner wayland-scanner)
@@ -14,6 +14,15 @@ all: dwl
clean:
rm -f dwl *.o *-protocol.h *-protocol.c
dist: clean
mkdir -p dwl-$(VERSION)
cp -R LICENSE* Makefile README.md generate-version.sh client.h\
config.def.h config.mk protocols dwl.1 dwl.c util.c util.h\
dwl-$(VERSION)
echo "echo $(VERSION)" > dwl-$(VERSION)/generate-version.sh
tar -caf dwl-$(VERSION).tar.gz dwl-$(VERSION)
rm -rf dwl-$(VERSION)
install: dwl
install -Dm755 dwl $(DESTDIR)$(PREFIX)/bin/dwl
install -Dm644 dwl.1 $(DESTDIR)$(MANDIR)/man1/dwl.1
@@ -21,7 +30,7 @@ install: dwl
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/dwl $(DESTDIR)$(MANDIR)/man1/dwl.1
.PHONY: all clean install uninstall
.PHONY: all clean dist install uninstall
# wayland-scanner is a tool which generates C headers and rigging for Wayland
# protocols, which are specified in XML. wlroots requires you to rig these up
+21 -6
View File
@@ -30,16 +30,19 @@ client_surface(Client *c)
static inline void
client_activate_surface(struct wlr_surface *s, int activated)
{
struct wlr_xdg_surface *surface;
#ifdef XWAYLAND
if (wlr_surface_is_xwayland_surface(s)) {
wlr_xwayland_surface_activate(
wlr_xwayland_surface_from_wlr_surface(s), activated);
struct wlr_xwayland_surface *xsurface;
if (wlr_surface_is_xwayland_surface(s)
&& (xsurface = wlr_xwayland_surface_from_wlr_surface(s))) {
wlr_xwayland_surface_activate(xsurface, activated);
return;
}
#endif
if (wlr_surface_is_xdg_surface(s))
wlr_xdg_toplevel_set_activated(
wlr_xdg_surface_from_wlr_surface(s), activated);
if (wlr_surface_is_xdg_surface(s)
&& (surface = wlr_xdg_surface_from_wlr_surface(s))
&& surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL)
wlr_xdg_toplevel_set_activated(surface, activated);
}
static inline void
@@ -212,8 +215,13 @@ client_min_size(Client *c, int *width, int *height)
if (client_is_x11(c)) {
struct wlr_xwayland_surface_size_hints *size_hints;
size_hints = c->surface.xwayland->size_hints;
if (size_hints) {
*width = size_hints->min_width;
*height = size_hints->min_height;
} else {
*width = 0;
*height = 0;
}
return;
}
#endif
@@ -223,6 +231,13 @@ client_min_size(Client *c, int *width, int *height)
*height = state->min_height;
}
static inline Client *
client_from_wlr_surface(struct wlr_surface *surface)
{
struct wlr_scene_node *n = surface->data;
return n ? n->data : NULL;
}
static inline Client *
client_from_popup(struct wlr_xdg_popup *popup)
{
+24
View File
@@ -49,7 +49,31 @@ static const int repeat_delay = 600;
/* Trackpad */
static const int tap_to_click = 1;
static const int tap_and_drag = 1;
static const int drag_lock = 1;
static const int natural_scrolling = 0;
static const int disable_while_typing = 1;
static const int left_handed = 0;
static const int middle_button_emulation = 0;
/* You can choose between:
LIBINPUT_CONFIG_SCROLL_NO_SCROLL
LIBINPUT_CONFIG_SCROLL_2FG
LIBINPUT_CONFIG_SCROLL_EDGE
LIBINPUT_CONFIG_SCROLL_ON_BUTTON_DOWN
*/
static const enum libinput_config_scroll_method scroll_method = LIBINPUT_CONFIG_SCROLL_2FG;
/* You can choose between:
LIBINPUT_CONFIG_SEND_EVENTS_ENABLED
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED
LIBINPUT_CONFIG_SEND_EVENTS_DISABLED_ON_EXTERNAL_MOUSE
*/
static const uint32_t send_events_mode = LIBINPUT_CONFIG_SEND_EVENTS_ENABLED;
/* You can choose between:
LIBINPUT_CONFIG_ACCEL_PROFILE_FLAT
LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE
*/
static const enum libinput_config_accel_profile accel_profile = LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE;
static const double accel_speed = 0.0;
/* If you want to use the windows key change this to WLR_MODIFIER_LOGO */
#define MODKEY WLR_MODIFIER_ALT
+3
View File
@@ -1,3 +1,6 @@
_VERSION = 0.3.1
VERSION = $(shell ./generate-version.sh $(_VERSION))
# paths
PREFIX = /usr/local
MANDIR = $(PREFIX)/share/man
+8 -1
View File
@@ -6,7 +6,8 @@
.Nd dwm for Wayland
.Sh SYNOPSIS
.Nm
.Op Fl s Ar command
.Op Fl v
.Op Fl s Ar startup command
.Sh DESCRIPTION
.Nm
is a Wayland compositor based on wlroots.
@@ -15,6 +16,12 @@ It is intended to fill the same space in the Wayland world that
does for X11.
.Pp
When given the
.Fl v
option,
.Nm
writes its name and version to standard error and exits unsuccessfully.
.Pp
When given the
.Fl s
option,
.Nm
+782 -26
View File
File diff suppressed because it is too large Load Diff
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
if git tag --contains HEAD | grep -q $1; then
echo $1
else
branch="$(git rev-parse --abbrev-ref HEAD)"
commit="$(git rev-parse --short HEAD)"
if [ "${branch}" != "main" ]; then
echo $1-$branch-$commit
else
echo $1-$commit
fi
fi