Add float unfocused border color patch
This commit is contained in:
14
README.org
14
README.org
@@ -10,6 +10,7 @@
|
|||||||
- [[#always-center][Always Center]]
|
- [[#always-center][Always Center]]
|
||||||
- [[#attach-top][Attach Top]]
|
- [[#attach-top][Attach Top]]
|
||||||
- [[#auto-start][Auto Start]]
|
- [[#auto-start][Auto Start]]
|
||||||
|
- [[#float-unfocused-border-color][Float Unfocused Border Color]]
|
||||||
- [[#foreign-toplevel-management][Foreign Toplevel Management]]
|
- [[#foreign-toplevel-management][Foreign Toplevel Management]]
|
||||||
- [[#ipc][IPC]]
|
- [[#ipc][IPC]]
|
||||||
- [[#natural-scroll-trackpad][Natural Scroll Trackpad]]
|
- [[#natural-scroll-trackpad][Natural Scroll Trackpad]]
|
||||||
@@ -88,6 +89,16 @@ Note: Commands from array are executed using execvp(). So if you need to execute
|
|||||||
#define AUTOSTART_PATCH 1
|
#define AUTOSTART_PATCH 1
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** [[https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/float-unfocused-border-color][Float Unfocused Border Color]]
|
||||||
|
|
||||||
|
A revive of the floatBorderColor patch.
|
||||||
|
|
||||||
|
This patch allows you to set a color for floating windows when they are unfocused.
|
||||||
|
|
||||||
|
#+BEGIN_SRC c :tangle patches.def.h
|
||||||
|
#define FLOAT_UNFOCUSED_BORDER_COLOR_PATCH 1
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
** [[https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/foreign-toplevel-management][Foreign Toplevel Management]]
|
** [[https://codeberg.org/dwl/dwl-patches/src/branch/main/patches/foreign-toplevel-management][Foreign Toplevel Management]]
|
||||||
|
|
||||||
Implement ~foreign-toplevel-management~, it add handlers for activate, close, fullscreen and destroy request events, it's missing minimize and maximize request handlers.
|
Implement ~foreign-toplevel-management~, it add handlers for activate, close, fullscreen and destroy request events, it's missing minimize and maximize request handlers.
|
||||||
@@ -199,6 +210,9 @@ static const float rootcolor[] = COLOR(0x282a36ff);
|
|||||||
static const float bordercolor[] = COLOR(0x4d4d4dff);
|
static const float bordercolor[] = COLOR(0x4d4d4dff);
|
||||||
static const float focuscolor[] = COLOR(0xbd93f9ff);
|
static const float focuscolor[] = COLOR(0xbd93f9ff);
|
||||||
static const float urgentcolor[] = COLOR(0xff5555ff);
|
static const float urgentcolor[] = COLOR(0xff5555ff);
|
||||||
|
#if FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
|
static const float floatcolor[] = COLOR(0xff79c6ff);
|
||||||
|
#endif // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
/* 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 */
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
@@ -17,6 +17,9 @@ static const float rootcolor[] = COLOR(0x222222ff);
|
|||||||
static const float bordercolor[] = COLOR(0x444444ff);
|
static const float bordercolor[] = COLOR(0x444444ff);
|
||||||
static const float focuscolor[] = COLOR(0x005577ff);
|
static const float focuscolor[] = COLOR(0x005577ff);
|
||||||
static const float urgentcolor[] = COLOR(0xff0000ff);
|
static const float urgentcolor[] = COLOR(0xff0000ff);
|
||||||
|
#if FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
|
static const float floatcolor[] = COLOR(0xff0000ff);
|
||||||
|
#endif // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
/* 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 */
|
||||||
|
|
||||||
|
3
config.h
3
config.h
@@ -20,6 +20,9 @@ static const float rootcolor[] = COLOR(0x282a36ff);
|
|||||||
static const float bordercolor[] = COLOR(0x4d4d4dff);
|
static const float bordercolor[] = COLOR(0x4d4d4dff);
|
||||||
static const float focuscolor[] = COLOR(0xbd93f9ff);
|
static const float focuscolor[] = COLOR(0xbd93f9ff);
|
||||||
static const float urgentcolor[] = COLOR(0xff5555ff);
|
static const float urgentcolor[] = COLOR(0xff5555ff);
|
||||||
|
#if FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
|
static const float floatcolor[] = COLOR(0xff79c6ff);
|
||||||
|
#endif // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
/* 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 */
|
||||||
|
|
||||||
|
16
dwl.c
16
dwl.c
@@ -806,6 +806,9 @@ buttonpress(struct wl_listener *listener, void *data)
|
|||||||
/* Drop the window off on its new monitor */
|
/* Drop the window off on its new monitor */
|
||||||
selmon = xytomon(cursor->x, cursor->y);
|
selmon = xytomon(cursor->x, cursor->y);
|
||||||
setmon(grabc, selmon, 0);
|
setmon(grabc, selmon, 0);
|
||||||
|
#if FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
|
grabc = NULL;
|
||||||
|
#endif // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
cursor_mode = CurNormal;
|
cursor_mode = CurNormal;
|
||||||
@@ -1907,9 +1910,13 @@ focusclient(Client *c, int lift)
|
|||||||
/* Don't deactivate old client if the new one wants focus, as this causes issues with winecfg
|
/* Don't deactivate old client if the new one wants focus, as this causes issues with winecfg
|
||||||
* and probably other clients */
|
* and probably other clients */
|
||||||
} else if (old_c && !client_is_unmanaged(old_c) && (!c || !client_wants_focus(c))) {
|
} else if (old_c && !client_is_unmanaged(old_c) && (!c || !client_wants_focus(c))) {
|
||||||
|
#if !FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
client_set_border_color(old_c, bordercolor);
|
client_set_border_color(old_c, bordercolor);
|
||||||
|
|
||||||
client_activate_surface(old, 0);
|
client_activate_surface(old, 0);
|
||||||
|
#else // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
|
client_set_border_color(old_c, old_c->isfloating ? floatcolor : bordercolor);
|
||||||
|
client_activate_surface(old, 0);
|
||||||
|
#endif // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
#if FOREIGN_TOPLEVEL_MANAGEMENT_PATCH
|
#if FOREIGN_TOPLEVEL_MANAGEMENT_PATCH
|
||||||
if (old_c->foreign_toplevel)
|
if (old_c->foreign_toplevel)
|
||||||
wlr_foreign_toplevel_handle_v1_set_activated(old_c->foreign_toplevel, 0);
|
wlr_foreign_toplevel_handle_v1_set_activated(old_c->foreign_toplevel, 0);
|
||||||
@@ -3004,6 +3011,13 @@ setfloating(Client *c, int floating)
|
|||||||
wlr_scene_node_reparent(&c->scene->node, layers[c->isfullscreen ||
|
wlr_scene_node_reparent(&c->scene->node, layers[c->isfullscreen ||
|
||||||
(p && p->isfullscreen) ? LyrFS
|
(p && p->isfullscreen) ? LyrFS
|
||||||
: c->isfloating ? LyrFloat : LyrTile]);
|
: c->isfloating ? LyrFloat : LyrTile]);
|
||||||
|
#if FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
|
if (!grabc && floating)
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
wlr_scene_rect_set_color(c->border[i], floatcolor);
|
||||||
|
wlr_scene_node_lower_to_bottom(&c->border[i]->node);
|
||||||
|
}
|
||||||
|
#endif // FLOAT_UNFOCUSED_BORDER_COLOR_PATCH
|
||||||
arrange(c->mon);
|
arrange(c->mon);
|
||||||
printstatus();
|
printstatus();
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#define AUTOSTART_PATCH 1
|
#define AUTOSTART_PATCH 1
|
||||||
|
|
||||||
|
#define FLOAT_UNFOCUSED_BORDER_COLOR_PATCH 1
|
||||||
|
|
||||||
#define FOREIGN_TOPLEVEL_MANAGEMENT_PATCH 1
|
#define FOREIGN_TOPLEVEL_MANAGEMENT_PATCH 1
|
||||||
|
|
||||||
#define IPC_PATCH 1
|
#define IPC_PATCH 1
|
||||||
|
60
patches/float-unfocused-border-color-20240607.patch
Normal file
60
patches/float-unfocused-border-color-20240607.patch
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
From 591c031a4d8e62acfef4ef41816c1fbbb8b1473a Mon Sep 17 00:00:00 2001
|
||||||
|
From: yuki <yukiat@proton.me>
|
||||||
|
Date: Fri, 7 Jun 2024 11:44:37 +0800
|
||||||
|
Subject: [PATCH] Added float-unfocused-border-color patch.
|
||||||
|
|
||||||
|
---
|
||||||
|
config.def.h | 1 +
|
||||||
|
dwl.c | 11 ++++++++---
|
||||||
|
2 files changed, 9 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config.def.h b/config.def.h
|
||||||
|
index a784eb4..8131af5 100644
|
||||||
|
--- a/config.def.h
|
||||||
|
+++ b/config.def.h
|
||||||
|
@@ -11,6 +11,7 @@ static const float rootcolor[] = COLOR(0x222222ff);
|
||||||
|
static const float bordercolor[] = COLOR(0x444444ff);
|
||||||
|
static const float focuscolor[] = COLOR(0x005577ff);
|
||||||
|
static const float urgentcolor[] = COLOR(0xff0000ff);
|
||||||
|
+static const float floatcolor[] = 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 */
|
||||||
|
|
||||||
|
diff --git a/dwl.c b/dwl.c
|
||||||
|
index 6f041a0..777c0e1 100644
|
||||||
|
--- a/dwl.c
|
||||||
|
+++ b/dwl.c
|
||||||
|
@@ -632,6 +632,7 @@ buttonpress(struct wl_listener *listener, void *data)
|
||||||
|
/* Drop the window off on its new monitor */
|
||||||
|
selmon = xytomon(cursor->x, cursor->y);
|
||||||
|
setmon(grabc, selmon, 0);
|
||||||
|
+ grabc = NULL;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
cursor_mode = CurNormal;
|
||||||
|
@@ -1348,9 +1349,8 @@ focusclient(Client *c, int lift)
|
||||||
|
/* Don't deactivate old client if the new one wants focus, as this causes issues with winecfg
|
||||||
|
* and probably other clients */
|
||||||
|
} else if (old_c && !client_is_unmanaged(old_c) && (!c || !client_wants_focus(c))) {
|
||||||
|
- client_set_border_color(old_c, bordercolor);
|
||||||
|
-
|
||||||
|
- client_activate_surface(old, 0);
|
||||||
|
+ client_set_border_color(old_c, old_c->isfloating ? floatcolor : bordercolor);
|
||||||
|
+ client_activate_surface(old, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printstatus();
|
||||||
|
@@ -2218,6 +2218,11 @@ setfloating(Client *c, int floating)
|
||||||
|
wlr_scene_node_reparent(&c->scene->node, layers[c->isfullscreen ||
|
||||||
|
(p && p->isfullscreen) ? LyrFS
|
||||||
|
: c->isfloating ? LyrFloat : LyrTile]);
|
||||||
|
+ if (!grabc && floating)
|
||||||
|
+ for (int i = 0; i < 4; i++) {
|
||||||
|
+ wlr_scene_rect_set_color(c->border[i], floatcolor);
|
||||||
|
+ wlr_scene_node_lower_to_bottom(&c->border[i]->node);
|
||||||
|
+ }
|
||||||
|
arrange(c->mon);
|
||||||
|
printstatus();
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.45.2
|
Reference in New Issue
Block a user