From 0f308b1c90444f5f0293bf40aa1ef177bc51036c Mon Sep 17 00:00:00 2001 From: Timo Wilken Date: Fri, 30 Dec 2022 10:54:17 +0100 Subject: Reorganise Guix home declaration into module tree --- tw/home/files/picom.conf | 304 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 304 insertions(+) create mode 100644 tw/home/files/picom.conf (limited to 'tw/home/files/picom.conf') diff --git a/tw/home/files/picom.conf b/tw/home/files/picom.conf new file mode 100644 index 00000000..a7d86571 --- /dev/null +++ b/tw/home/files/picom.conf @@ -0,0 +1,304 @@ +# +# ~/.config/picom.conf -- Picom compositor configuration +# + +## Backend + +# Backend to use: "xrender" or "glx". +# GLX backend is typically much faster but depends on a sane driver. +backend: "glx"; + +## GLX backend + +glx-no-stencil: true; + +# GLX backend: Copy unmodified regions from front buffer instead of redrawing +# them all. My tests with nvidia-drivers show a 10% decrease in performance +# when the whole screen is modified, but a 20% increase when only 1/4 is. My +# tests on nouveau show terrible slowdown. +glx-copy-from-front: false; + +# GLX backend: Avoid rebinding pixmap on window damage. Probably could improve +# performance on rapid window content changes, but is known to break things on +# some drivers (LLVMpipe). Recommended if it works. +glx-no-rebind-pixmap: true; + +## Shadows + +# Enabled client-side shadows on windows. +shadow: false; +# The blur radius for shadows. (default 12) +shadow-radius: 25; +# The left offset for shadows. (default -15) +shadow-offset-x: -25; +# The top offset for shadows. (default -15) +shadow-offset-y: -25; +# The translucency for shadows. (default .75) +shadow-opacity: .3; + +# Set if you want different colour shadows +shadow-red: 0.03; +shadow-green: 0.03; +shadow-blue: 0.04; + +# The shadow exclude options are helpful if you have shadows enabled. Due to +# the way compton draws its shadows, certain applications will have visual +# glitches (most applications are fine, only apps that do weird things with +# xshapes or argb are affected). This list includes all the affected apps I +# found in my testing. The "! name~=''" part excludes shadows on any "Unknown" +# windows, this prevents a visual glitch with the XFWM alt tab switcher. +# From "man picom", Format of Conditions: WM_CLASS = class_i, class_g +shadow-exclude: [ +# "! name~=''", +# "name = 'Notification'", +# "name = 'Plank'", +# "name = 'Docky'", +# "name = 'Kupfer'", +# "name = 'xfce4-notifyd'", +# "name *= 'VLC'", + "name *= 'mpv'", + "class_g = 'ffplay'", +# "name *= 'compton'", +# "name *= 'Chromium'", +# "name *= 'Chrome'", + "class_g ?= 'Firefox'", +# "class_g = 'Conky'", + "_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'", + "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", + "_GTK_FRAME_EXTENTS@:c", + "class_g ?= 'ulauncher'", + "class_g ?= 'tray'", + "class_g ?= 'i3-frame'", +# "class_g ?= 'Notify-osd'", +# "class_g ?= 'Cairo-dock'", +# "class_g ?= 'Xfce4-notifyd'", +# "class_g ?= 'Xfce4-power-manager'" + "class_g ?= 'Xfce4-screenshooter'", + "class_g ?= 'peek'" +]; + +# Avoid drawing shadow on all shaped windows (c.f. --detect-rounded-corners) +shadow-ignore-shaped: false; + +## Opacity + +inactive-opacity: 1; +active-opacity: 1; +frame-opacity: 1; +inactive-opacity-override: false; + +# Dim inactive windows. (0.0 - 1.0) +#inactive-dim = 0.1; +# Do not let dimness adjust based on window opacity. +#inactive-dim-fixed = true; + +# Blur background of transparent windows. Bad performance with X Render +# backend. GLX backend is preferred. +blur-method: "dual_kawase"; +blur-strength: 7; +#blur-method: "kernel"; +# generate kernel using compton-convgen.py --dump-compton gaussian 15 -f sigma=15 +#blur-kernel: "..."; +blur-background: true; +# Blur background of opaque windows with transparent frames as well. +blur-background-frame: true; +# Do not let blur radius adjust based on window opacity. +blur-background-fixed: true; +blur-background-exclude: [ + #"window_type = 'dock'", + #"window_type = 'desktop'", + "window_type = 'dnd'", + "window_type = 'dropdown_menu'", + "window_type = 'popup_menu'", + #"class_g = 'Rofi'" + "class_g ?= 'Xfce4-screenshooter'", + # for xfce4-screenshooter triggered from its xfce4-panel button + "class_g ?= 'Wrapper-2.0'", + "class_g ?= 'peek'" +]; + +## Rounded corners +#corner-radius: 16; +#rounded-corners-exclude: [ +# "window_type = 'dock'", +# "window_type = 'desktop'", +# "class_g ?= 'plasmashell'", +# "class_g ?= 'krunner'", +# "class_g ?= 'i3-frame'" +#]; + +## Fading + +# Fade windows during opacity changes. +fading: true; +# The time between steps in a fade in milliseconds. (default 10). +fade-delta: 5; +# Opacity change between steps while fading in. (default 0.028). +fade-in-step: 0.03; +# Opacity change between steps while fading out. (default 0.03). +fade-out-step: 0.03; +# Fade windows in/out when opening/closing +no-fading-openclose: false; + +# Specify a list of conditions of windows that should not be faded. +fade-exclude: []; + +## Other + +# Try to detect WM windows and mark them as active. +mark-wmwin-focused: true; +# Mark all non-WM but override-redirect windows active (e.g. menus). +mark-ovredir-focused: true; +# Use EWMH _NET_WM_ACTIVE_WINDOW to determine which window is focused instead +# of using FocusIn/Out events. Usually more reliable but depends on a +# EWMH-compliant WM. +use-ewmh-active-win: true; +# Detect rounded corners and treat them as rectangular when +# --shadow-ignore-shaped is on. +detect-rounded-corners: true; + +# Detect _NET_WM_OPACITY on client windows, useful for window managers not +# passing _NET_WM_OPACITY of client windows to frame windows. This prevents +# opacity being ignored for some apps. For example without this enabled my +# xfce4-notifyd is 100% opacity no matter what. +detect-client-opacity: true; + +# Toggle VSync. See also: --vsync drm/opengl/opengl-oml. +vsync: true; + +# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate +# tearing. Reported to have no effect, though. +dbe: true; + +# Unredirect all windows if a full-screen opaque window is detected, to +# maximize performance for full-screen windows, like games. Known to cause +# flickering when redirecting/unredirecting windows. paint-on-overlay may make +# the flickering less obvious. +unredir-if-possible: true; + +# Specify a list of conditions of windows that should always be considered focused. +focus-exclude: []; + +# Use WM_TRANSIENT_FOR to group windows, and consider windows in the same group +# focused at the same time. +detect-transient: true; +# Use WM_CLIENT_LEADER to group windows, and consider windows in the same group +# focused at the same time. WM_TRANSIENT_FOR has higher priority if +# --detect-transient is enabled, too. +detect-client-leader: true; + +opacity-rule: [ + "100:name *?= 'Call'", + "100:name *?= 'Conky'", + "100:class_g = 'Darktable'", + "50:class_g = 'Dmenu'", + "100:name *?= 'Event'", + "100:class_g = 'Firefox'", + "100:class_g = 'GIMP'", + "100:name *?= 'Image'", + "100:class_g = 'Lazpaint'", + "100:class_g = 'Midori'", + "100:name *?= 'Minitube'", + "83:class_g = 'Mousepad'", + "100:name *?= 'MuseScore'", + "90:name *?= 'Page Info'", + "100:name *?= 'Pale Moon'", + "100:name *?= 'Screenshot'", + "100:class_g = 'Viewnior'", + "100:name *?= 'VirtualBox'", + "100:name *?= 'VLC'", + "100:class_g = 'mpv'", + "100:name *?= 'Write'", + "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'", + "100:_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'" +]; + +## Window type settings + +wintypes: { + # WINDOW_TYPE is one of the 15 window types defined in the EWMH standard: + # https://specifications.freedesktop.org/wm-spec/latest/ar01s05.html#idm45550357242464 + # fade: Fade the particular type of windows. + # shadow: Give those windows shadow + # opacity: Default opacity for the type of windows. + # focus: Controls whether the window of this type is to be always considered + # focused. (By default, all window types except "normal" and "dialog" has + # this on.) + # full-shadow: Controls whether shadow is drawn under the parts of the + # window that you normally won't be able to see. Useful when the window + # has parts of it transparent, and you want shadows in those areas. + # redir-ignore: Controls whether this type of windows should cause screen to + # become redirected again after been unredirected. If you have + # --unredir-if-possible set, and doesn't want certain window to cause + # unnecessary screen redirection, you can set this to true. + + normal: { + opacity: 1; + }; + + dialog: { + opacity: 1; + }; + + # On-screen notification + notify: { + opacity: 1; + }; + + tooltip: { + opacity: .85; + }; + + # Desktop window with icons etc. + desktop: { + }; + + # Persistent dock, usually on top of all other windows + dock: { + opacity: 1; + }; + + # Window representing something being dragged + dnd: { + opacity: .85; + shadow: true; + full-shadow: true; + }; + + # Menu "torn off" from another window + menu: { + opacity: 1; + }; + + # Toolbar "torn off" from another window + toolbar: { + opacity: 1; + }; + + # A menu from a right click + popup_menu: { + opacity: 1; + }; + + # A menu from a menu bar + dropdown_menu: { + opacity: 1; + }; + + # The pop-up/drop-down from a combo box + combo: { + opacity: 1; + }; + + # A starting application's splash screen + splash: { + opacity: 1; + }; + + # A small persistent utility window, such as a palette or toolbox + utility: { + }; + + unknown: { + }; +}; -- cgit v1.2.3