mirror of
				https://github.com/NotAShelf/nyxexprs.git
				synced 2025-10-31 02:52:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 3b71f546c7a33207382d31db12c61750ce0431c4 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 64e45135..2b645ca5 100644
 | |
| --- a/config.c
 | |
| +++ b/config.c
 | |
| @@ -1098,6 +1098,10 @@ parse_section_main(struct context *ctx)
 | |
|                               (int *)&conf->initial_color_theme);
 | |
|      }
 | |
|  
 | |
| +    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;
 | |
| @@ -3382,6 +3386,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 80081906..0e90eda0 100644
 | |
| --- a/config.h
 | |
| +++ b/config.h
 | |
| @@ -237,6 +237,8 @@ struct config {
 | |
|  
 | |
|      enum { STARTUP_WINDOWED, STARTUP_MAXIMIZED, STARTUP_FULLSCREEN } startup_mode;
 | |
|  
 | |
| +    bool transparent_fullscreen;
 | |
| +
 | |
|      bool dpi_aware;
 | |
|      bool gamma_correct;
 | |
|      struct config_font_list fonts[4];
 | |
| diff --git a/render.c b/render.c
 | |
| index 55c2ec4d..d4e2daff 100644
 | |
| --- a/render.c
 | |
| +++ b/render.c
 | |
| @@ -744,7 +744,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) {
 | |
| @@ -1216,7 +1217,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;
 | |
|      }
 | |
| @@ -3246,7 +3247,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);
 |