mirror of
				https://github.com/NotAShelf/nyxexprs.git
				synced 2025-11-04 12:42:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
diff --git a/CHANGELOG.md b/CHANGELOG.md
 | 
						|
index 7ed4bd7a..013ff1be 100644
 | 
						|
--- a/CHANGELOG.md
 | 
						|
+++ b/CHANGELOG.md
 | 
						|
@@ -913,7 +913,7 @@
 | 
						|
   instead of the one least recently.
 | 
						|
 * Starlight theme (the default theme) updated to [V4][starlight-v4]
 | 
						|
 * Background transparency (alpha) is now disabled in fullscreened
 | 
						|
-  windows ([#1416][1416]).
 | 
						|
+  windows ([#1416][1416]) by default but can be enabled with `fullscreen_alpha`.
 | 
						|
 * Foot server systemd units now use the standard
 | 
						|
   graphical-session.target ([#1281][1281]).
 | 
						|
 * If `$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock` does not exist,
 | 
						|
diff --git a/INSTALL.md b/INSTALL.md
 | 
						|
index 7df8d0b8..0f7f1aef 100644
 | 
						|
--- a/INSTALL.md
 | 
						|
+++ b/INSTALL.md
 | 
						|
@@ -148,6 +148,7 @@ Available compile-time options:
 | 
						|
 | `-Ddocs`                             | feature | `auto`                  | Builds and install documentation                                                | scdoc               |
 | 
						|
 | `-Dtests`                            | bool    | `true`                  | Build tests (adds a `ninja test` build target)                                  | None                |
 | 
						|
 | `-Dime`                              | bool    | `true`                  | Enables IME support                                                             | None                |
 | 
						|
+| `-Dfullscreen-alpha`                 | bool    | `false`                 | Enables transparency on fullscreen windows                                      | None                |
 | 
						|
 | `-Dgrapheme-clustering`              | feature | `auto`                  | Enables grapheme clustering                                                     | libutf8proc         |
 | 
						|
 | `-Dterminfo`                         | feature | `enabled`               | Build and install terminfo files                                                | tic (ncurses)       |
 | 
						|
 | `-Ddefault-terminfo`                 | string  | `foot`                  | Default value of `TERM`                                                         | None                |
 | 
						|
diff --git a/meson.build b/meson.build
 | 
						|
index e85d95e5..bf9b021a 100644
 | 
						|
--- a/meson.build
 | 
						|
+++ b/meson.build
 | 
						|
@@ -82,6 +82,9 @@ add_project_arguments(
 | 
						|
   (get_option('b_pgo') == 'use'
 | 
						|
     ? ['-DFOOT_PGO_ENABLED=1']
 | 
						|
     : []) +
 | 
						|
+  (get_option('fullscreen-alpha')
 | 
						|
+    ? ['-DFOOT_FULLSCREEN_ALPHA_ENABLED=1']
 | 
						|
+    : []) +
 | 
						|
   cc.get_supported_arguments(
 | 
						|
     ['-pedantic',
 | 
						|
      '-fstrict-aliasing',
 | 
						|
@@ -414,6 +417,7 @@ summary(
 | 
						|
     'Documentation': scdoc.found(),
 | 
						|
     'Themes': get_option('themes'),
 | 
						|
     'IME': get_option('ime'),
 | 
						|
+    'Fullscreen alpha': get_option('fullscreen-alpha'),
 | 
						|
     'Grapheme clustering': utf8proc.found(),
 | 
						|
     'utmp backend': utmp_backend,
 | 
						|
     'utmp helper default path': utmp_default_helper_path,
 | 
						|
diff --git a/meson_options.txt b/meson_options.txt
 | 
						|
index ab7a07be..30078102 100644
 | 
						|
--- a/meson_options.txt
 | 
						|
+++ b/meson_options.txt
 | 
						|
@@ -7,6 +7,9 @@ option('themes', type: 'boolean', value: true,
 | 
						|
 option('ime', type: 'boolean', value: true,
 | 
						|
        description: 'IME (Input Method Editor) support')
 | 
						|
 
 | 
						|
+option('fullscreen-alpha', type: 'boolean', value: false,
 | 
						|
+       description: 'Enables transparency on fullscreen windows')
 | 
						|
+
 | 
						|
 option('grapheme-clustering', type: 'feature',
 | 
						|
        description: 'Enables grapheme clustering using libutf8proc. Requires fcft with harfbuzz support to be useful.')
 | 
						|
 
 | 
						|
diff --git a/render.c b/render.c
 | 
						|
index 4975394f..eddf465a 100644
 | 
						|
--- a/render.c
 | 
						|
+++ b/render.c
 | 
						|
@@ -746,6 +746,13 @@ render_cell(struct terminal *term, pixman_image_t *pix,
 | 
						|
         }
 | 
						|
 
 | 
						|
         else if (cell->attrs.bg_src == COLOR_DEFAULT) {
 | 
						|
+#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
 | 
						|
+            /*
 | 
						|
+             * Note: I don't care about the stupid ass wayland
 | 
						|
+             * protocol I want transparent fullscreen windows.
 | 
						|
+             */
 | 
						|
+            alpha = term->colors.alpha;
 | 
						|
+#else
 | 
						|
             if (term->window->is_fullscreen) {
 | 
						|
                 /*
 | 
						|
                  * Note: disable transparency when fullscreened.
 | 
						|
@@ -783,6 +790,7 @@ render_cell(struct terminal *term, pixman_image_t *pix,
 | 
						|
             } else {
 | 
						|
                 alpha = term->colors.alpha;
 | 
						|
             }
 | 
						|
+#endif
 | 
						|
         }
 | 
						|
     }
 | 
						|
 
 | 
						|
@@ -1191,10 +1199,12 @@ 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 !defined(FOOT_FULLSCREEN_ALPHA_ENABLED) || !FOOT_FULLSCREEN_ALPHA_ENABLED
 | 
						|
     if (term->window->is_fullscreen) {
 | 
						|
         /* Disable alpha in fullscreen - see render_cell() for details */
 | 
						|
         alpha = 0xffff;
 | 
						|
     }
 | 
						|
+#endif
 | 
						|
 
 | 
						|
     pixman_color_t bg = color_hex_to_pixman_with_alpha(_bg, alpha, gamma_correct);
 | 
						|
 
 | 
						|
@@ -3220,8 +3230,12 @@ grid_render(struct terminal *term)
 | 
						|
     xassert(term->height > 0);
 | 
						|
 
 | 
						|
     struct buffer_chain *chain = term->render.chains.grid;
 | 
						|
+#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
 | 
						|
+    bool use_alpha = term->colors.alpha != 0xffff;
 | 
						|
+#else
 | 
						|
     bool use_alpha = !term->window->is_fullscreen &&
 | 
						|
                      term->colors.alpha != 0xffff;
 | 
						|
+#endif
 | 
						|
     struct buffer *buf = shm_get_buffer(
 | 
						|
         chain, term->width, term->height, use_alpha);
 | 
						|
 
 |