Open
Description
Several components do not handle transparency well.
This is how "transparency" works in terminal emulators:
- The terminal is a grid of cells
- Each cell has a set of styling options, see https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797#colors--graphics-mode
- If the cell background is set to 49 (the terminal background color).
This is how separators behave:
- Separators are actually glyphs themselves
- Glyphs have a filled in bit and a "negative space" bit.
- See https://github.com/ryanoasis/powerline-extra-symbols?tab=readme-ov-file#glyphs
- For things like window names in the status line, the logic goes:
- set bg=surface1,fg=text "~/dir" set fg=@status_bg reverse \xE0B4
- The "reverse" instructs the terminal to swap the foreground and background.
The catch is that most terminal emulators will set the opacity of a cell to 1.0 when inverse is applied. e.g. in alacritty: https://github.com/alacritty/alacritty/blob/2112e90f0dcb77a60b3ef68f3b48e5320ad46de6/alacritty/src/display/content.rs#L216
Problem: how to ensure the background at the end of the separator is set to bg=49 without mandating that all separators use powerline glyphs. I.e. I still want to use a space for the separator, or a mix of whitespace and glyphs if I want to