mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2025-09-10 05:04:51 +00:00
kblayout: rebase onto 0.7
This commit is contained in:
parent
800647a85b
commit
d79c47a949
@ -1,18 +1,7 @@
|
|||||||
From 9e70c5145981d9ae91cf9907b485bb4fdfc1ab04 Mon Sep 17 00:00:00 2001
|
diff -ruN dwl.orig/config.def.h dwl/config.def.h
|
||||||
From: Nikita Ivanov <nikita.vyach.ivanov@gmail.com>
|
--- dwl.orig/config.def.h 2024-07-25 07:36:08.235927317 +0100
|
||||||
Date: Sun, 7 Apr 2024 22:03:49 +0200
|
+++ dwl/config.def.h 2024-07-25 07:46:56.286901928 +0100
|
||||||
Subject: [PATCH] Add per client keyboard layout and status bar info
|
@@ -13,6 +13,9 @@
|
||||||
|
|
||||||
---
|
|
||||||
config.def.h | 3 +++
|
|
||||||
dwl.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++-
|
|
||||||
2 files changed, 72 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/config.def.h b/config.def.h
|
|
||||||
index 8f498d2..484e522 100644
|
|
||||||
--- a/config.def.h
|
|
||||||
+++ b/config.def.h
|
|
||||||
@@ -13,6 +13,9 @@ static const float focuscolor[] = COLOR(0x005577ff);
|
|
||||||
static const float urgentcolor[] = COLOR(0xff0000ff);
|
static const float urgentcolor[] = COLOR(0xff0000ff);
|
||||||
/* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */
|
/* This conforms to the xdg-protocol. Set the alpha to zero to restore the old behavior */
|
||||||
static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You can also use glsl colors */
|
static const float fullscreen_bg[] = {0.1f, 0.1f, 0.1f, 1.0f}; /* You can also use glsl colors */
|
||||||
@ -22,19 +11,18 @@ index 8f498d2..484e522 100644
|
|||||||
|
|
||||||
/* tagging - TAGCOUNT must be no greater than 31 */
|
/* tagging - TAGCOUNT must be no greater than 31 */
|
||||||
#define TAGCOUNT (9)
|
#define TAGCOUNT (9)
|
||||||
diff --git a/dwl.c b/dwl.c
|
diff -ruN dwl.orig/dwl.c dwl/dwl.c
|
||||||
index bf763df..1aad21e 100644
|
--- dwl.orig/dwl.c 2024-07-25 07:36:08.236927317 +0100
|
||||||
--- a/dwl.c
|
+++ dwl/dwl.c 2024-07-25 07:49:15.074896491 +0100
|
||||||
+++ b/dwl.c
|
@@ -14,6 +14,7 @@
|
||||||
@@ -13,6 +13,7 @@
|
|
||||||
#include <wayland-server-core.h>
|
#include <wayland-server-core.h>
|
||||||
#include <wlr/backend.h>
|
#include <wlr/backend.h>
|
||||||
#include <wlr/backend/libinput.h>
|
#include <wlr/backend/libinput.h>
|
||||||
+#include <wlr/interfaces/wlr_keyboard.h>
|
+#include <wlr/interfaces/wlr_keyboard.h>
|
||||||
#include <wlr/render/allocator.h>
|
#include <wlr/render/allocator.h>
|
||||||
#include <wlr/render/wlr_renderer.h>
|
#include <wlr/render/wlr_renderer.h>
|
||||||
#include <wlr/types/wlr_compositor.h>
|
#include <wlr/types/wlr_alpha_modifier_v1.h>
|
||||||
@@ -139,6 +140,7 @@ typedef struct {
|
@@ -141,6 +142,7 @@
|
||||||
uint32_t tags;
|
uint32_t tags;
|
||||||
int isfloating, isurgent, isfullscreen;
|
int isfloating, isurgent, isfullscreen;
|
||||||
uint32_t resize; /* configure serial of a pending resize */
|
uint32_t resize; /* configure serial of a pending resize */
|
||||||
@ -42,7 +30,7 @@ index bf763df..1aad21e 100644
|
|||||||
} Client;
|
} Client;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@@ -286,6 +288,7 @@ static void fullscreennotify(struct wl_listener *listener, void *data);
|
@@ -294,6 +296,7 @@
|
||||||
static void handlesig(int signo);
|
static void handlesig(int signo);
|
||||||
static void incnmaster(const Arg *arg);
|
static void incnmaster(const Arg *arg);
|
||||||
static void inputdevice(struct wl_listener *listener, void *data);
|
static void inputdevice(struct wl_listener *listener, void *data);
|
||||||
@ -50,7 +38,7 @@ index bf763df..1aad21e 100644
|
|||||||
static int keybinding(uint32_t mods, xkb_keysym_t sym);
|
static int keybinding(uint32_t mods, xkb_keysym_t sym);
|
||||||
static void keypress(struct wl_listener *listener, void *data);
|
static void keypress(struct wl_listener *listener, void *data);
|
||||||
static void keypressmod(struct wl_listener *listener, void *data);
|
static void keypressmod(struct wl_listener *listener, void *data);
|
||||||
@@ -405,6 +408,8 @@ static struct wlr_box sgeom;
|
@@ -413,6 +416,8 @@
|
||||||
static struct wl_list mons;
|
static struct wl_list mons;
|
||||||
static Monitor *selmon;
|
static Monitor *selmon;
|
||||||
|
|
||||||
@ -59,32 +47,21 @@ index bf763df..1aad21e 100644
|
|||||||
#ifdef XWAYLAND
|
#ifdef XWAYLAND
|
||||||
static void activatex11(struct wl_listener *listener, void *data);
|
static void activatex11(struct wl_listener *listener, void *data);
|
||||||
static void associatex11(struct wl_listener *listener, void *data);
|
static void associatex11(struct wl_listener *listener, void *data);
|
||||||
@@ -795,6 +800,8 @@ createkeyboard(struct wlr_keyboard *keyboard)
|
@@ -1056,11 +1061,13 @@
|
||||||
|
/* This event is raised when a client creates a new toplevel (application window). */
|
||||||
/* Add the new keyboard to the group */
|
struct wlr_xdg_toplevel *toplevel = data;
|
||||||
wlr_keyboard_group_add_keyboard(kb_group.wlr_group, keyboard);
|
|
||||||
+
|
|
||||||
+ kblayout(&kb_group);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -951,6 +958,7 @@ createnotify(struct wl_listener *listener, void *data)
|
|
||||||
struct wlr_xdg_surface *xdg_surface = data;
|
|
||||||
Client *c = NULL;
|
Client *c = NULL;
|
||||||
LayerSurface *l = NULL;
|
|
||||||
+ struct wlr_keyboard *kb = wlr_seat_get_keyboard(seat);
|
+ struct wlr_keyboard *kb = wlr_seat_get_keyboard(seat);
|
||||||
|
|
||||||
if (xdg_surface->role == WLR_XDG_SURFACE_ROLE_POPUP) {
|
/* Allocate a Client for this surface */
|
||||||
struct wlr_xdg_popup *popup = xdg_surface->popup;
|
c = toplevel->base->data = ecalloc(1, sizeof(*c));
|
||||||
@@ -973,6 +981,7 @@ createnotify(struct wl_listener *listener, void *data)
|
c->surface.xdg = toplevel->base;
|
||||||
c = xdg_surface->data = ecalloc(1, sizeof(*c));
|
|
||||||
c->surface.xdg = xdg_surface;
|
|
||||||
c->bw = borderpx;
|
c->bw = borderpx;
|
||||||
+ c->kblayout_idx = kb ? kb->modifiers.group : 0;
|
+ c->kblayout_idx = kb ? kb->modifiers.group : 0;
|
||||||
|
|
||||||
wlr_xdg_toplevel_set_wm_capabilities(xdg_surface->toplevel,
|
LISTEN(&toplevel->base->surface->events.commit, &c->commit, commitnotify);
|
||||||
WLR_XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN);
|
LISTEN(&toplevel->base->surface->events.map, &c->map, mapnotify);
|
||||||
@@ -1236,10 +1245,24 @@ dirtomon(enum wlr_direction dir)
|
@@ -1339,10 +1346,24 @@
|
||||||
void
|
void
|
||||||
focusclient(Client *c, int lift)
|
focusclient(Client *c, int lift)
|
||||||
{
|
{
|
||||||
@ -109,7 +86,7 @@ index bf763df..1aad21e 100644
|
|||||||
|
|
||||||
if (locked)
|
if (locked)
|
||||||
return;
|
return;
|
||||||
@@ -1292,6 +1315,19 @@ focusclient(Client *c, int lift)
|
@@ -1395,6 +1416,19 @@
|
||||||
}
|
}
|
||||||
printstatus();
|
printstatus();
|
||||||
|
|
||||||
@ -129,7 +106,7 @@ index bf763df..1aad21e 100644
|
|||||||
if (!c) {
|
if (!c) {
|
||||||
/* With no client, all we have left is to clear focus */
|
/* With no client, all we have left is to clear focus */
|
||||||
wlr_seat_keyboard_notify_clear_focus(seat);
|
wlr_seat_keyboard_notify_clear_focus(seat);
|
||||||
@@ -1302,7 +1338,7 @@ focusclient(Client *c, int lift)
|
@@ -1405,7 +1439,7 @@
|
||||||
motionnotify(0, NULL, 0, 0, 0, 0);
|
motionnotify(0, NULL, 0, 0, 0, 0);
|
||||||
|
|
||||||
/* Have a client, so focus its top-level wlr_surface */
|
/* Have a client, so focus its top-level wlr_surface */
|
||||||
@ -138,7 +115,7 @@ index bf763df..1aad21e 100644
|
|||||||
|
|
||||||
/* Activate the new client */
|
/* Activate the new client */
|
||||||
client_activate_surface(client_surface(c), 1);
|
client_activate_surface(client_surface(c), 1);
|
||||||
@@ -1427,6 +1463,36 @@ inputdevice(struct wl_listener *listener, void *data)
|
@@ -1554,6 +1588,36 @@
|
||||||
wlr_seat_set_capabilities(seat, caps);
|
wlr_seat_set_capabilities(seat, caps);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +152,7 @@ index bf763df..1aad21e 100644
|
|||||||
int
|
int
|
||||||
keybinding(uint32_t mods, xkb_keysym_t sym)
|
keybinding(uint32_t mods, xkb_keysym_t sym)
|
||||||
{
|
{
|
||||||
@@ -1504,6 +1570,8 @@ keypressmod(struct wl_listener *listener, void *data)
|
@@ -1631,6 +1695,8 @@
|
||||||
/* Send modifiers to the client. */
|
/* Send modifiers to the client. */
|
||||||
wlr_seat_keyboard_notify_modifiers(seat,
|
wlr_seat_keyboard_notify_modifiers(seat,
|
||||||
&group->wlr_group->keyboard.modifiers);
|
&group->wlr_group->keyboard.modifiers);
|
||||||
@ -184,6 +161,3 @@ index bf763df..1aad21e 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
--
|
|
||||||
2.45.1
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user