Use a compositor to handle complex graphic interactions eg. dragging, transparency and shadows. The state of compositors is somewhat chaotic, not all are equal feature-wise, nor peformance-wise. Pick your preferred fork:
The available window types as per the EWMH standard are:
combo
desktop
dialog
dnd
dock
dropdown_menu
menu
normal
notification
popup_menu
splash
toolbar
tooltip
unknown
utility
Specify the backend to use eg. xrender
, glx
or xr_glx_hybrid
.
backend = "glx";
glx-copy-from-front = false;
glx-no-stencil = true;
use-damage = false;
vsync = true;
Note that desktop windows ie. windows with '_NET_WM_WINDOW_TYPE_DESKTOP'
never
get shadow, unless explicitly requested using the wintypes
option.
shadow = true;
shadow-offset-x = -24;
shadow-offset-y = -24;
shadow-opacity = .25;
shadow-radius = 24;
shadow-exclude = [
"window_type = 'menu'",
"window_type = 'tooltip'",
]
corner-radius = 16;
rounded-corners-exclude = [
"!name~=''", # Exclude windows with no name ie. bars
# "window_type = 'combo'",
# "window_type = 'desktop'",
# "window_type = 'dock'",
# "window_type = 'dropdown_menu'",
# "window_type = 'menu'",
# "window_type = 'popup_menu'",
"window_type = 'tooltip'",
# "window_type = 'utility'",
];
active-opacity = 1; # Default opacity for active windows
inactive-opacity = .65; # Opacity for inactive windows
inactive-opacity-override = false;
opacity-rule = [
# Active overwrites
"90:class_i = 'emacs' && focused",
"90:class_i = 'kitty' && focused",
"90:class_i = 'spotify' && focused",
# Inactive overwrites
"90:role = 'browser' && !focused",
# Decoration overwrites
"70:window_type = 'dropdown_menu'",
"95:window_type = 'menu'", # Browser context menus
"70:window_type = 'popup_menu'", # Context menus, tray menus
"70:window_type = 'tooltip'", # Browser tooltips
# Application overwrites
"100:class_i = 'peek'", # Screencast utility
"100:class_i *?= 'steam_app_'", # Games
];
The dual_kawase
method is only enabled with --experimental-backends
.
blur-background-exclude = [
"_GTK_FRAME_EXTENTS@:c",
"window_type = 'desktop'",
"window_type = 'dock'",
];
blur-method = "dual_kawase";
blur-strength = 12;
fading = false; # Fade windows in and out
fade-delta = 4; # Time between fading steps