mirror of
https://github.com/NotAShelf/nyxexprs.git
synced 2025-10-02 15:03:34 +00:00
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I6a6a6964470a626159a90de43e52f5bdbf6521a7
80 lines
2.8 KiB
Diff
80 lines
2.8 KiB
Diff
From bf7175511a05e7110a57cce96540aa75f9cdca76 Mon Sep 17 00:00:00 2001
|
|
From: Fazzi <faaris.ansari@proton.me>
|
|
Date: Fri, 18 Apr 2025 21:15:19 +0100
|
|
Subject: [PATCH] config: add transparent_fullscreen option
|
|
|
|
---
|
|
config.c | 5 +++++
|
|
config.h | 2 ++
|
|
render.c | 8 +++++---
|
|
3 files changed, 12 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/config.c b/config.c
|
|
index 0de1a1be..935f4500 100644
|
|
--- a/config.c
|
|
+++ b/config.c
|
|
@@ -1122,6 +1122,10 @@ parse_section_main(struct context *ctx)
|
|
else if (streq(key, "uppercase-regex-insert"))
|
|
return value_to_bool(ctx, &conf->uppercase_regex_insert);
|
|
|
|
+ else if (streq(key, "transparent-fullscreen")) {
|
|
+ return value_to_bool(ctx, &conf->transparent_fullscreen);
|
|
+ }
|
|
+
|
|
else {
|
|
LOG_CONTEXTUAL_ERR("not a valid option: %s", key);
|
|
return false;
|
|
@@ -3415,6 +3419,7 @@ config_load(struct config *conf, const char *conf_path,
|
|
},
|
|
.multiplier = 3.,
|
|
},
|
|
+ .transparent_fullscreen = false,
|
|
.colors = {
|
|
.fg = default_foreground,
|
|
.bg = default_background,
|
|
diff --git a/config.h b/config.h
|
|
index 86fb2a8f..58aedbba 100644
|
|
--- a/config.h
|
|
+++ b/config.h
|
|
@@ -245,6 +245,8 @@ struct config {
|
|
|
|
enum { STARTUP_WINDOWED, STARTUP_MAXIMIZED, STARTUP_FULLSCREEN } startup_mode;
|
|
|
|
+ bool transparent_fullscreen;
|
|
+
|
|
bool dpi_aware;
|
|
bool gamma_correct;
|
|
bool uppercase_regex_insert;
|
|
diff --git a/render.c b/render.c
|
|
index 1c24bafa..0d7df4b7 100644
|
|
--- a/render.c
|
|
+++ b/render.c
|
|
@@ -768,7 +768,8 @@ render_cell(struct terminal *term, pixman_image_t *pix,
|
|
_bg = swap;
|
|
}
|
|
|
|
- else if (!term->window->is_fullscreen && term->colors.alpha != 0xffff) {
|
|
+ else if ((!term->window->is_fullscreen || term->conf->transparent_fullscreen)
|
|
+ && term->colors.alpha != 0xffff) {
|
|
switch (term->conf->colors.alpha_mode) {
|
|
case ALPHA_MODE_DEFAULT: {
|
|
if (cell->attrs.bg_src == COLOR_DEFAULT) {
|
|
@@ -1234,7 +1235,7 @@ render_margin(struct terminal *term, struct buffer *buf,
|
|
const uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg;
|
|
uint16_t alpha = term->colors.alpha;
|
|
|
|
- if (term->window->is_fullscreen) {
|
|
+ if (term->window->is_fullscreen && !term->conf->transparent_fullscreen) {
|
|
/* Disable alpha in fullscreen - see render_cell() for details */
|
|
alpha = 0xffff;
|
|
}
|
|
@@ -3260,7 +3261,8 @@ grid_render(struct terminal *term)
|
|
xassert(term->height > 0);
|
|
|
|
struct buffer_chain *chain = term->render.chains.grid;
|
|
- bool use_alpha = !term->window->is_fullscreen &&
|
|
+ bool use_alpha = (!term->window->is_fullscreen ||
|
|
+ term->conf->transparent_fullscreen) &&
|
|
term->colors.alpha != 0xffff;
|
|
struct buffer *buf = shm_get_buffer(
|
|
chain, term->width, term->height, use_alpha);
|