mirror of
https://codeberg.org/dwl/dwl-patches.git
synced 2026-03-22 17:01:31 +00:00
Compare commits
3 Commits
0f2cd0555a
...
341d6d1fd3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
341d6d1fd3 | ||
|
|
a20a103242 | ||
|
|
e1ad73d51c |
@ -47,9 +47,9 @@ If you target the unstable `main` branch, specify that in the `Download` link on
|
||||
You may choose to include screenshots (hosted in your patch's subdirectory) in your `README.md`. The process is described [here](https://docs.codeberg.org/markdown/using-images/).
|
||||
|
||||
8. Use the Codeberg web interface to send a pull request to [dwl-patches] (NOT to [dwl])
|
||||
9. WHEN YOUR PULL REQUEST IS APPROVED, your Codeberg account will also be granted commit access to [dwl-patches]. Once you have write access, you can make direct modifications/upates to your patches and you are free to create new patches rather than creating pull requests.
|
||||
9. WHEN YOUR PULL REQUEST IS APPROVED, your Codeberg account will also be granted commit access to [dwl-patches]. Once you have write access, you can make direct modifications/updates to your patches and you are free to create new patches rather than creating pull requests.
|
||||
|
||||
Individuals who have made known that they no longer intend to maintain their patches will have commit access to the [dwl-pathces] repository removed.
|
||||
Individuals who have made known that they no longer intend to maintain their patches will have commit access to the [dwl-patches] repository removed.
|
||||
|
||||
A returning user who formerly had commit access is welcome to open an issue on [dwl-patches] requesting commit access be reinstated. When doing so, please link to the original issue opened that granted commit access.
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ Another usage is to serve as a hint for each modes keybindings:
|
||||
enum {
|
||||
BROWSER,
|
||||
};
|
||||
const char *modes_lablels[] = {
|
||||
const char *modes_labels[] = {
|
||||
"[f]irefox [b]rave [c]hromium [q]utebrowser",
|
||||
};
|
||||
```
|
||||
|
||||
@ -301,7 +301,7 @@ index 0000000..125312c
|
||||
+ pipefd = ecalloc(2, sizeof(int));
|
||||
+
|
||||
+ /*
|
||||
+ * Libdbus forbids calling dbus_connection_dipatch from the
|
||||
+ * Libdbus forbids calling dbus_connection_dispatch from the
|
||||
+ * DBusDispatchStatusFunction directly. Notify the event loop of
|
||||
+ * updates via a self-pipe.
|
||||
+ */
|
||||
|
||||
@ -3,7 +3,7 @@ From: wochap <gean.marroquin@gmail.com>
|
||||
Date: Tue, 4 Jun 2024 16:02:25 -0500
|
||||
Subject: [PATCH] implement borders patch
|
||||
|
||||
tihs patch adds 2 extra borders relative to the client, they don't
|
||||
this patch adds 2 extra borders relative to the client, they don't
|
||||
change the size of the client
|
||||
---
|
||||
client.h | 16 +++++++++++++---
|
||||
|
||||
@ -61,7 +61,7 @@ When a new client appears:
|
||||
btrtile adds couple variables to config.h to fine tune the mouse resizing of tiled clients.
|
||||
|
||||
1. **resize_factor**
|
||||
- A multiplier to transfer pointer movement to client weight ratio. Depends heavily on mouse sensivity.
|
||||
- A multiplier to transfer pointer movement to client weight ratio. Depends heavily on mouse sensitivity.
|
||||
Defaults to 0.0002f.
|
||||
|
||||
2. **resize_interval_ms**
|
||||
|
||||
@ -606,7 +606,7 @@ index 22d2171..92f3ad6 100644
|
||||
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.1f, 0.1f, 0.1f, 1.0f}; /* You can also use glsl colors */
|
||||
+static const float resize_factor = 0.0002f; /* Resize multiplier for mouse resizing, depends on mouse sensivity. */
|
||||
+static const float resize_factor = 0.0002f; /* Resize multiplier for mouse resizing, depends on mouse sensitivity. */
|
||||
+static const uint32_t resize_interval_ms = 16; /* Resize interval depends on framerate and screen refresh rate. */
|
||||
|
||||
+enum Direction { DIR_LEFT, DIR_RIGHT, DIR_UP, DIR_DOWN };
|
||||
|
||||
@ -587,7 +587,7 @@ index 22d2171..92f3ad6 100644
|
||||
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.1f, 0.1f, 0.1f, 1.0f}; /* You can also use glsl colors */
|
||||
+static const float resize_factor = 0.0002f; /* Resize multiplier for mouse resizing, depends on mouse sensivity. */
|
||||
+static const float resize_factor = 0.0002f; /* Resize multiplier for mouse resizing, depends on mouse sensitivity. */
|
||||
+static const uint32_t resize_interval_ms = 16; /* Resize interval depends on framerate and screen refresh rate. */
|
||||
|
||||
+enum Direction { DIR_LEFT, DIR_RIGHT, DIR_UP, DIR_DOWN };
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
### Description
|
||||
Generate a coredump if dwl exited abnormally (to be more usefull you need to
|
||||
Generate a coredump if dwl exited abnormally (to be more useful you need to
|
||||
compile dwl and wlroots with debug symbols)
|
||||
|
||||
### Download
|
||||
|
||||
@ -2,8 +2,9 @@
|
||||
Deck is a dwl-layout which is inspired by the dwm Deck layout (which is inspired by TTWM window manager). It applies the monocle-layout to the clients in the stack. The master-client is still visible. The stacked clients are like a deck of cards, hence the name.
|
||||
|
||||
### Download
|
||||
- [v0.8](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/decklayout/decklayout.patch)
|
||||
- [git branch](https://codeberg.org/Kana/dwl/src/branch/decklayout)
|
||||
- [main 2025-10-08](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/decklayout/decklayout.patch)
|
||||
- [main 2025-10-08](https://codeberg.org/dwl/dwl-patches/raw/commit/f8d1cfad116c19c01593f7436468ec0cb7a3297b/patches/decklayout/decklayout.patch)
|
||||
|
||||
### Authors
|
||||
- [André Desgualdo Pereira](https://codeberg.org/Kana)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
From 095439425e64f2567f141d5d941178b148ef0d3a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Desgualdo=20Pereira?= <desgua@gmail.com>
|
||||
Date: Sun, 12 Oct 2025 11:44:26 -0300
|
||||
Subject: [PATCH] decklayout
|
||||
From c488515313e20f51ab961691002f9d483682ab16 Mon Sep 17 00:00:00 2001
|
||||
From: nate zhou <gnuunixchad@outlook.com>
|
||||
Date: Sat, 28 Feb 2026 21:32:46 +0800
|
||||
Subject: [PATCH] Patch: decklayout-0.8.patch
|
||||
|
||||
---
|
||||
config.def.h | 2 ++
|
||||
@ -9,10 +9,10 @@ Subject: [PATCH] decklayout
|
||||
2 files changed, 63 insertions(+)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 95c2afa..cc846eb 100644
|
||||
index 8a6eda0..3ec9ceb 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -34,6 +34,7 @@ static const Layout layouts[] = {
|
||||
@@ -33,6 +33,7 @@ static const Layout layouts[] = {
|
||||
{ "[]=", tile },
|
||||
{ "><>", NULL }, /* no layout function means floating behavior */
|
||||
{ "[M]", monocle },
|
||||
@ -20,16 +20,16 @@ index 95c2afa..cc846eb 100644
|
||||
};
|
||||
|
||||
/* monitors */
|
||||
@@ -139,6 +140,7 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
|
||||
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
|
||||
+ { MODKEY, XKB_KEY_a, setlayout, {.v = &layouts[3]} },
|
||||
{ MODKEY, XKB_KEY_space, setlayout, {0} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
|
||||
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
|
||||
@@ -135,6 +136,7 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
|
||||
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
|
||||
+ { MODKEY, XKB_KEY_a, setlayout, {.v = &layouts[3]} },
|
||||
{ MODKEY, XKB_KEY_space, setlayout, {0} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
|
||||
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index 12f441e..227004f 100644
|
||||
index 44f3ad9..f13f48b 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -278,6 +278,7 @@ static void destroylayersurfacenotify(struct wl_listener *listener, void *data);
|
||||
@ -40,7 +40,7 @@ index 12f441e..227004f 100644
|
||||
static void destroypointerconstraint(struct wl_listener *listener, void *data);
|
||||
static void destroysessionlock(struct wl_listener *listener, void *data);
|
||||
static void destroykeyboardgroup(struct wl_listener *listener, void *data);
|
||||
@@ -1837,6 +1838,66 @@ monocle(Monitor *m)
|
||||
@@ -1838,6 +1839,66 @@ monocle(Monitor *m)
|
||||
wlr_scene_node_raise_to_top(&c->scene->node);
|
||||
}
|
||||
|
||||
@ -108,5 +108,5 @@ index 12f441e..227004f 100644
|
||||
motionabsolute(struct wl_listener *listener, void *data)
|
||||
{
|
||||
--
|
||||
2.51.0
|
||||
2.53.0
|
||||
|
||||
|
||||
@ -4,7 +4,8 @@ Arranges windows in a grid. Except it adjusts the number of windows in the first
|
||||
On widescreens (w > 2*h), it splits to three columns before splitting rows.
|
||||
|
||||
### Download
|
||||
- [2025-10-31](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid.patch)
|
||||
- [v0.8](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid.patch)
|
||||
- [2025-10-31](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid-20251031.patch)
|
||||
- [2024-09-18](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid-20240918.patch)
|
||||
- [2024-07-14](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid-20240714.patch)
|
||||
- [2023-08-01](https://codeberg.org/dwl/dwl-patches/raw/branch/main/patches/gaplessgrid/gaplessgrid-20230801.patch)
|
||||
|
||||
102
patches/gaplessgrid/gaplessgrid-20251031.patch
Normal file
102
patches/gaplessgrid/gaplessgrid-20251031.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From 38427b81367e8b4d2aad708a1d463bc793aac65e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Desgualdo=20Pereira?= <desgua@gmail.com>
|
||||
Date: Fri, 31 Oct 2025 15:46:48 -0300
|
||||
Subject: [PATCH] take on gaplessgrid and fix minor indentation and typos
|
||||
|
||||
---
|
||||
config.def.h | 2 ++
|
||||
dwl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 53 insertions(+)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 95c2afa..2054107 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -34,6 +34,7 @@ static const Layout layouts[] = {
|
||||
{ "[]=", tile },
|
||||
{ "><>", NULL }, /* no layout function means floating behavior */
|
||||
{ "[M]", monocle },
|
||||
+ { "###", gaplessgrid },
|
||||
};
|
||||
|
||||
/* monitors */
|
||||
@@ -139,6 +140,7 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
|
||||
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
|
||||
+ { MODKEY, XKB_KEY_g, setlayout, {.v = &layouts[3]} },
|
||||
{ MODKEY, XKB_KEY_space, setlayout, {0} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
|
||||
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index 12f441e..7ab5323 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -288,6 +288,7 @@ static void focusstack(const Arg *arg);
|
||||
static Client *focustop(Monitor *m);
|
||||
static void fullscreennotify(struct wl_listener *listener, void *data);
|
||||
static void gpureset(struct wl_listener *listener, void *data);
|
||||
+static void gaplessgrid(Monitor *m);
|
||||
static void handlesig(int signo);
|
||||
static void incnmaster(const Arg *arg);
|
||||
static void inputdevice(struct wl_listener *listener, void *data);
|
||||
@@ -1566,6 +1567,56 @@ handlesig(int signo)
|
||||
quit(NULL);
|
||||
}
|
||||
|
||||
+void
|
||||
+gaplessgrid(Monitor *m)
|
||||
+{
|
||||
+ int n = 0, i = 0, ch, cw, cn, rn, rows, cols;
|
||||
+ Client *c;
|
||||
+
|
||||
+ wl_list_for_each(c, &clients, link)
|
||||
+ if (VISIBLEON(c, m) && !c->isfloating)
|
||||
+ n++;
|
||||
+ if (n == 0)
|
||||
+ return;
|
||||
+
|
||||
+ /* grid dimensions */
|
||||
+ for (cols = 0; cols <= (n / 2); cols++)
|
||||
+ if ((cols * cols) >= n)
|
||||
+ break;
|
||||
+
|
||||
+ if (n == 5) /* set layout against the general calculation: not 1:2:2, but 2:3 */
|
||||
+ cols = 2;
|
||||
+
|
||||
+ /* widescreen is better if 3 columns */
|
||||
+ if (n >= 3 && n <= 6 && (m->w.width / m->w.height) > 1)
|
||||
+ cols = 3;
|
||||
+
|
||||
+ rows = n / cols;
|
||||
+
|
||||
+ /* window geometries */
|
||||
+ cw = cols ? m->w.width / cols : m->w.width;
|
||||
+ cn = 0; /* current column number */
|
||||
+ rn = 0; /* current row number */
|
||||
+ wl_list_for_each(c, &clients, link) {
|
||||
+ unsigned int cx, cy;
|
||||
+ if (!VISIBLEON(c, m) || c->isfloating || c->isfullscreen)
|
||||
+ continue;
|
||||
+
|
||||
+ if ((i / rows + 1) > (cols - n % cols))
|
||||
+ rows = n / cols + 1;
|
||||
+ ch = rows ? m->w.height / rows : m->w.height;
|
||||
+ cx = m->w.x + cn * cw;
|
||||
+ cy = m->w.y + rn * ch;
|
||||
+ resize(c, (struct wlr_box) { cx, cy, cw, ch}, 0);
|
||||
+ rn++;
|
||||
+ if (rn >= rows) {
|
||||
+ rn = 0;
|
||||
+ cn++;
|
||||
+ }
|
||||
+ i++;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void
|
||||
incnmaster(const Arg *arg)
|
||||
{
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
From 38427b81367e8b4d2aad708a1d463bc793aac65e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Andr=C3=A9=20Desgualdo=20Pereira?= <desgua@gmail.com>
|
||||
Date: Fri, 31 Oct 2025 15:46:48 -0300
|
||||
Subject: [PATCH] take on gaplessgrid and fix minor indentation and typos
|
||||
From 91d34b1c664fe273a82eb7ff01e92b828feab5a9 Mon Sep 17 00:00:00 2001
|
||||
From: nate zhou <gnuunixchad@outlook.com>
|
||||
Date: Sat, 28 Feb 2026 21:42:04 +0800
|
||||
Subject: [PATCH] Patch: gaplessgrid.patch
|
||||
|
||||
---
|
||||
config.def.h | 2 ++
|
||||
@ -9,10 +9,10 @@ Subject: [PATCH] take on gaplessgrid and fix minor indentation and typos
|
||||
2 files changed, 53 insertions(+)
|
||||
|
||||
diff --git a/config.def.h b/config.def.h
|
||||
index 95c2afa..2054107 100644
|
||||
index 8a6eda0..8cb1782 100644
|
||||
--- a/config.def.h
|
||||
+++ b/config.def.h
|
||||
@@ -34,6 +34,7 @@ static const Layout layouts[] = {
|
||||
@@ -33,6 +33,7 @@ static const Layout layouts[] = {
|
||||
{ "[]=", tile },
|
||||
{ "><>", NULL }, /* no layout function means floating behavior */
|
||||
{ "[M]", monocle },
|
||||
@ -20,16 +20,16 @@ index 95c2afa..2054107 100644
|
||||
};
|
||||
|
||||
/* monitors */
|
||||
@@ -139,6 +140,7 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
|
||||
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
|
||||
+ { MODKEY, XKB_KEY_g, setlayout, {.v = &layouts[3]} },
|
||||
{ MODKEY, XKB_KEY_space, setlayout, {0} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
|
||||
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
|
||||
@@ -135,6 +136,7 @@ static const Key keys[] = {
|
||||
{ MODKEY, XKB_KEY_t, setlayout, {.v = &layouts[0]} },
|
||||
{ MODKEY, XKB_KEY_f, setlayout, {.v = &layouts[1]} },
|
||||
{ MODKEY, XKB_KEY_m, setlayout, {.v = &layouts[2]} },
|
||||
+ { MODKEY, XKB_KEY_g, setlayout, {.v = &layouts[3]} },
|
||||
{ MODKEY, XKB_KEY_space, setlayout, {0} },
|
||||
{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space, togglefloating, {0} },
|
||||
{ MODKEY, XKB_KEY_e, togglefullscreen, {0} },
|
||||
diff --git a/dwl.c b/dwl.c
|
||||
index 12f441e..7ab5323 100644
|
||||
index 44f3ad9..83c053f 100644
|
||||
--- a/dwl.c
|
||||
+++ b/dwl.c
|
||||
@@ -288,6 +288,7 @@ static void focusstack(const Arg *arg);
|
||||
@ -98,5 +98,5 @@ index 12f441e..7ab5323 100644
|
||||
incnmaster(const Arg *arg)
|
||||
{
|
||||
--
|
||||
2.51.0
|
||||
2.53.0
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ So in short:
|
||||
|
||||
#### Limitations
|
||||
Reloading the compositor will replace all functionality except for `main`, `setup`, `run` and the reload logic.
|
||||
Note that you're responsible yourself for reloading ressources like fonts, which may only get acquired once.
|
||||
Note that you're responsible yourself for reloading resources like fonts, which may only get acquired once.
|
||||
A lot of components of dwl will also only get run on a trigger (the tiling for example).
|
||||
So not every change will be immediate.
|
||||
Furthermore, any patch adding more global state to dwl cannot currently be reloaded properly since
|
||||
@ -47,13 +47,13 @@ From the cold part there are some newly available macros:
|
||||
* `CSYM(T, v)` dynamically accesses the value of the symbol `v` of type `T` from the shared object. Use this to query values from config.h for example.
|
||||
* `LISTEN_GLOBAL(E, L)` is similar to the `LISTEN` macro. `E` is an event and `L` the name of a global
|
||||
listener. Current implementation is a bit messy and I may fix it if someone bothers me about it.
|
||||
* `UNLISTEN(L)` takes a listener and unregisteres it. This is important for reloading.
|
||||
* `UNLISTEN(L)` takes a listener and unregisters it. This is important for reloading.
|
||||
|
||||
When adding new code there are some considerations to be made. Since dwl decorates all symbols with `static` by default, we cannot access them as-is.
|
||||
C's macro system is a bit too powerful though and we use this to our advantage. We will repeatedly define and
|
||||
undefine a macro called `static` in order to replace the `static` keyword inside some sections.
|
||||
This allows us to do less refactoring and preserve a lot of the original patch compatability since we're only
|
||||
strategically adding lines. We're tring to be as minimally invasive as we can.
|
||||
This allows us to do less refactoring and preserve a lot of the original patch compatibility since we're only
|
||||
strategically adding lines. We're trying to be as minimally invasive as we can.
|
||||
As a general guide:
|
||||
* global state should be global for the cold part and `extern` in the cold part meaning it should be inside a block like this:
|
||||
```C
|
||||
@ -87,7 +87,7 @@ Thus, we enclose them the same way we do functions:
|
||||
#ifdef HOT
|
||||
... // function definitions here
|
||||
#endif
|
||||
* enfore use of the `LISTEN_GLOBAL` and `UNLISTEN` macros (I know this sucks but what can I do, I need to get
|
||||
* enforce use of the `LISTEN_GLOBAL` and `UNLISTEN` macros (I know this sucks but what can I do, I need to get
|
||||
access to the callbacks somehow). So you want
|
||||
* `wl_list_remove(listener.link)` to become `UNLISTEN(listener)` and
|
||||
* `wl_signal_add(event, global_listener)` to become `LISTEN_GLOBAL(event, global_listener)`.
|
||||
|
||||
@ -509,7 +509,7 @@ index def2562..1c9ab67 100644
|
||||
+ wlr_log_init(CSYM(enum wlr_log_importance, log_level), NULL);
|
||||
|
||||
/* The Wayland display is managed by libwayland. It handles accepting
|
||||
* clients from the Unix socket, manging Wayland globals, and so on. */
|
||||
* clients from the Unix socket, managing Wayland globals, and so on. */
|
||||
@@ -2454,7 +2576,7 @@ setup(void)
|
||||
|
||||
/* Initialize the scene graph used to lay out windows */
|
||||
|
||||
@ -637,7 +637,7 @@ index 4816159..70e99be 100644
|
||||
+ wlr_log_init(CSYM(enum wlr_log_importance, log_level), NULL);
|
||||
|
||||
/* The Wayland display is managed by libwayland. It handles accepting
|
||||
* clients from the Unix socket, manging Wayland globals, and so on. */
|
||||
* clients from the Unix socket, managing Wayland globals, and so on. */
|
||||
@@ -2463,7 +2602,7 @@ setup(void)
|
||||
|
||||
/* Initialize the scene graph used to lay out windows */
|
||||
|
||||
@ -7,7 +7,7 @@ To enable Xwayland support, you will need to enable it in the wlroots subproject
|
||||
```sh
|
||||
meson setup -Dwlroots:xwayland=enabled build
|
||||
```
|
||||
It is also reccomended to see the wlroots meson project configuration logs for any
|
||||
It is also recommended to see the wlroots meson project configuration logs for any
|
||||
unusual checks, such as requiring `hwdata` for the DRM backend.
|
||||
|
||||
### Download
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
From e42ca1c539437d3098d80983cfe2ad6f938d7a08 Mon Sep 17 00:00:00 2001
|
||||
From: Eldar Yusupov <eyusupov@gmail.com>
|
||||
Date: Sun, 17 Mar 2024 19:12:29 +0300
|
||||
Subject: [PATCH] Restore correct montior for client when it is reattached
|
||||
Subject: [PATCH] Restore correct monitor for client when it is reattached
|
||||
|
||||
---
|
||||
dwl.c | 24 ++++++++++++++++++++++--
|
||||
|
||||
@ -7,7 +7,7 @@ Most of this patch is stored in river-control.h, It contains a list of functions
|
||||
|
||||
This patch's main intended use case is to have a startup script that calls dwlctl a bunch to add all the binds/rules you want, without the need of restarting dwl if you make any changes to the list of binds/rules.
|
||||
|
||||
This patch also adds keybind modes which allow switching between a diffrent sets of keybinds on the fly.
|
||||
This patch also adds keybind modes which allow switching between a different sets of keybinds on the fly.
|
||||
Also you can set a keybind mode as oneshot (meaning as soon as a keybind is activated the mode is switched) by using...
|
||||
`dwlctl oneshot-mode _layout_you_want_to_make_oneshot_here_ _layout_you_want_to_switch_to_after_keybind_pressed_`
|
||||
Just make sure to set a mode as oneshot after creating a bind under it otherwise it won't work.
|
||||
|
||||
@ -120,7 +120,7 @@ index 95c2afa..ccc3edb 100644
|
||||
-static const Key keys[] = {
|
||||
+/* note keys gets cleared with riverctl clear-binds but the keys_always are excluded from being cleared
|
||||
+ * this is to have a list of fallback keybinds if your riverctl script fails
|
||||
+ * if you won't like to have keys[] declared commented out the KEYS_USED macro bellow to disable the functionality*/
|
||||
+ * if you won't like to have keys[] declared commented out the KEYS_USED macro below to disable the functionality*/
|
||||
+#define KEYS_USED
|
||||
+static Key keys[] = {
|
||||
/* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */
|
||||
@ -1267,7 +1267,7 @@ index 0000000..599cffe
|
||||
+ .add_argument = zriver_control_add_argument,
|
||||
+ .destroy = zriver_control_destroy,
|
||||
+};
|
||||
+static void zriver_control_handle_destory(struct wl_resource *resource) {
|
||||
+static void zriver_control_handle_destroy(struct wl_resource *resource) {
|
||||
+ struct zriver_arg_list_resource *zriver_arg_list_resource = wl_resource_get_user_data(resource);
|
||||
+ free(zriver_arg_list_resource);
|
||||
+ printf("handle destroy\n");
|
||||
@ -1281,7 +1281,7 @@ index 0000000..599cffe
|
||||
+
|
||||
+
|
||||
+ wl_resource_set_implementation(resource, &zriver_control_interface,
|
||||
+ zriver_arg_list_resource, zriver_control_handle_destory);
|
||||
+ zriver_arg_list_resource, zriver_control_handle_destroy);
|
||||
+}
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
### Description
|
||||
Makes sticky work as expected with singletagset. The sticky window will
|
||||
stay on original output until you explicitely put it to a different monitor.
|
||||
stay on original output until you explicitly put it to a different monitor.
|
||||
|
||||
This patch expects both [singletagset](https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/singletagset) and [sticky](https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/sticky) patches to be already in
|
||||
your tree committed. It applies onto them.
|
||||
|
||||
@ -13,7 +13,7 @@ tempdir="/tmp/screenshots"
|
||||
mkdir -p "$tempdir"
|
||||
file="$(mktemp -p "$tempdir" "XXXXXX.png")"
|
||||
|
||||
# Grab the screenshot! Very conviniently, GEOMETRY format matches the one
|
||||
# Grab the screenshot! Very conveniently, GEOMETRY format matches the one
|
||||
# expected by grim
|
||||
grim -g "$GEOMETRY" "$file" || exit
|
||||
|
||||
|
||||
@ -60,7 +60,7 @@ index 775dadf..621779e 100644
|
||||
- /* TODO: allow usage of scroll wheel for mousebindings, it can be implemented
|
||||
- * by checking the event's orientation and the delta of the event */
|
||||
+ handlecursoractivity();
|
||||
+ /* TODO: allow usage of scroll whell for mousebindings, it can be implemented
|
||||
+ /* TODO: allow usage of scroll wheel for mousebindings, it can be implemented
|
||||
+ * checking the event's orientation and the delta of the event */
|
||||
/* Notify the client with pointer focus of the axis event. */
|
||||
wlr_seat_pointer_notify_axis(seat,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
### Description
|
||||
implement wlr_virtual_pointer_v1 for things like wayvnc server to work
|
||||
|
||||
**NOTE:** no longer neccessary if you are using a DWL version after https://codeberg.org/dwl/dwl/commit/ac6074f4fdb8cc263c877f08e16a5805d3bb22d2
|
||||
**NOTE:** no longer necessary if you are using a DWL version after https://codeberg.org/dwl/dwl/commit/ac6074f4fdb8cc263c877f08e16a5805d3bb22d2
|
||||
|
||||
### Download
|
||||
- [git branch](https://codeberg.org/wochap/dwl/src/v0.5/virtual-pointer)
|
||||
@ -9,4 +9,4 @@ implement wlr_virtual_pointer_v1 for things like wayvnc server to work
|
||||
|
||||
### Authors
|
||||
- [wochap](https://codeberg.org/wochap)
|
||||
- [youbitchoc](https://github.com/youbitchoc)
|
||||
- [youbitchoc](https://github.com/youbitchoc)
|
||||
|
||||
@ -3,7 +3,7 @@ Implements the function `winview` which switches the visible tags to the tags on
|
||||
|
||||
This patch is inspired from <https://dwm.suckless.org/patches/winview/>. Citing the description of the dwm patch:
|
||||
|
||||
> Dwm tags are a powerfull feature that allows organizing windows in workspaces. Sometime it can be difficult to remember the tag to activate to unhide a window. With the winview patch the window to unhide can be selected from the all-window view. The user switches to the all-window view (Mod1-0), selects the window (Mod1-j/k or using the mouse) and press Mod1-o. The key Mod1-o switches the view to the selected window tag.
|
||||
> Dwm tags are a powerful feature that allows organizing windows in workspaces. Sometime it can be difficult to remember the tag to activate to unhide a window. With the winview patch the window to unhide can be selected from the all-window view. The user switches to the all-window view (Mod1-0), selects the window (Mod1-j/k or using the mouse) and press Mod1-o. The key Mod1-o switches the view to the selected window tag.
|
||||
>
|
||||
> #### Recommend patches
|
||||
>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
### Description
|
||||
Implements `swaymsg create_output` command, it allows you to create virtual/headless outputs. But in combination with a VNC server (for example wayvnc), this allows you to essentially have additional monitors, by connecting to the VNC server with an appropiate client (for example on an tablet or laptop).
|
||||
Implements `swaymsg create_output` command, it allows you to create virtual/headless outputs. But in combination with a VNC server (for example wayvnc), this allows you to essentially have additional monitors, by connecting to the VNC server with an appropriate client (for example on an tablet or laptop).
|
||||
|
||||
If you plan to use wayvnc, you'll need [virtual-pointer](https://codeberg.org/dwl/dwl-patches/wiki/virtual-pointer.-) patch as well
|
||||
|
||||
@ -8,4 +8,4 @@ If you plan to use wayvnc, you'll need [virtual-pointer](https://codeberg.org/dw
|
||||
- [v0.5](https://codeberg.org/dwl/dwl-patches/raw/commit/0096e49402bc59b4050e12cdb9befb79d0011006/headless/headless.patch)
|
||||
|
||||
### Authors
|
||||
- [wochap](https://codeberg.org/wochap)
|
||||
- [wochap](https://codeberg.org/wochap)
|
||||
|
||||
@ -417,7 +417,7 @@ index 0000000..0a6e7e5
|
||||
+I would probably just submit raphi's patchset but I don't think that would be polite.
|
||||
+-->
|
||||
+<protocol name="dwl_ipc_unstable_v2">
|
||||
+ <description summary="inter-proccess-communication about dwl's state">
|
||||
+ <description summary="inter-process-communication about dwl's state">
|
||||
+ This protocol allows clients to update and get updates from dwl.
|
||||
+
|
||||
+ Warning! The protocol described in this file is experimental and
|
||||
@ -437,7 +437,7 @@ index 0000000..0a6e7e5
|
||||
+ This interface is exposed as a global in wl_registry.
|
||||
+
|
||||
+ Clients can use this interface to get a dwl_ipc_output.
|
||||
+ After binding the client will recieve the dwl_ipc_manager.tags and dwl_ipc_manager.layout events.
|
||||
+ After binding the client will receive the dwl_ipc_manager.tags and dwl_ipc_manager.layout events.
|
||||
+ The dwl_ipc_manager.tags and dwl_ipc_manager.layout events expose tags and layouts to the client.
|
||||
+ </description>
|
||||
+
|
||||
@ -449,8 +449,8 @@ index 0000000..0a6e7e5
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="get_output">
|
||||
+ <description summary="get a dwl_ipc_outout for a wl_output">
|
||||
+ Get a dwl_ipc_outout for the specified wl_output.
|
||||
+ <description summary="get a dwl_ipc_output for a wl_output">
|
||||
+ Get a dwl_ipc_output for the specified wl_output.
|
||||
+ </description>
|
||||
+ <arg name="id" type="new_id" interface="zdwl_ipc_output_v2"/>
|
||||
+ <arg name="output" type="object" interface="wl_output"/>
|
||||
@ -459,7 +459,7 @@ index 0000000..0a6e7e5
|
||||
+ <event name="tags">
|
||||
+ <description summary="Announces tag amount">
|
||||
+ This event is sent after binding.
|
||||
+ A roundtrip after binding guarantees the client recieved all tags.
|
||||
+ A roundtrip after binding guarantees the client received all tags.
|
||||
+ </description>
|
||||
+ <arg name="amount" type="uint"/>
|
||||
+ </event>
|
||||
@ -467,7 +467,7 @@ index 0000000..0a6e7e5
|
||||
+ <event name="layout">
|
||||
+ <description summary="Announces a layout">
|
||||
+ This event is sent after binding.
|
||||
+ A roundtrip after binding guarantees the client recieved all layouts.
|
||||
+ A roundtrip after binding guarantees the client received all layouts.
|
||||
+ </description>
|
||||
+ <arg name="name" type="string"/>
|
||||
+ </event>
|
||||
@ -491,13 +491,13 @@ index 0000000..0a6e7e5
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="release" type="destructor">
|
||||
+ <description summary="release dwl_ipc_outout">
|
||||
+ <description summary="release dwl_ipc_output">
|
||||
+ Indicates to that the client no longer needs this dwl_ipc_output.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+
|
||||
+ <event name="toggle_visibility">
|
||||
+ <description summary="Toggle client visibilty">
|
||||
+ <description summary="Toggle client visibility">
|
||||
+ Indicates the client should hide or show themselves.
|
||||
+ If the client is visible then hide, if hidden then show.
|
||||
+ </description>
|
||||
@ -544,7 +544,7 @@ index 0000000..0a6e7e5
|
||||
+ <event name="layout_symbol" since="1">
|
||||
+ <description summary="Update the current layout symbol">
|
||||
+ Indicates the layout has changed. Since layout symbols are dynamic.
|
||||
+ As opposed to the zdwl_ipc_manager.layout event, this should take precendence when displaying.
|
||||
+ As opposed to the zdwl_ipc_manager.layout event, this should take precedence when displaying.
|
||||
+ You can ignore the zdwl_ipc_output.layout event.
|
||||
+ </description>
|
||||
+ <arg name="layout" type="string" summary="The new layout"/>
|
||||
@ -573,7 +573,7 @@ index 0000000..0a6e7e5
|
||||
+
|
||||
+ <request name="set_layout">
|
||||
+ <description summary="Set the layout of this output"/>
|
||||
+ <arg name="index" type="uint" summary="index of a layout recieved by dwl_ipc_manager.layout"/>
|
||||
+ <arg name="index" type="uint" summary="index of a layout received by dwl_ipc_manager.layout"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <!-- Version 2 -->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user