picom icon indicating copy to clipboard operation
picom copied to clipboard

Wallpaper and windows border flickering after screen saver shuts screen

Open amitlevy21 opened this issue 4 years ago • 64 comments

Hi,

I had this problem for a while now, once the screen saver detects computer has been idle for more than 5 minutes, it turns off my screen. Then, when I try to wake it up (by moving the mouse for example) there's this annoying flickering that is happening in the wallpaper and window borders.

The issue stops if I open a terminal and:

killall -q picom
picom -b

Or if I try to open an application that tries to screenshot or record the screen.

Platform

Arch Linux

GPU, drivers, and screen setup

~
❯ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
DP1 disconnected primary (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
   1920x1080     60.00*+
   1280x1024     75.02    60.02
   1152x864      75.00
   1024x768      75.03    60.00
   800x600       75.00    60.32
   640x480       75.00    59.94
   720x400       70.08
HDMI2 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
❯ yay -Q | rg xf86-video
xf86-video-intel 1:2.99.917+914+ga511f22c-1
xf86-video-vesa 2.5.0-1

Had to install glxinfo (wasn't installed before)

❯ glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel Open Source Technology Center (0x8086)
    Device: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1) (0x102)
    Version: 20.3.2
    Accelerated: yes
    Video memory: 1536MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 2000 (SNB GT1)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.2
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.0 Mesa 20.3.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.0 Mesa 20.3.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

Environment

Using i3-gaps 4.19-1 I has been happening for a while now but not sure when started.

picom version

❯ picom --version
vgit-dac85
~
❯ yay -Q | rg picom
picom 8.2-1

Configuration:

# 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: Use MESA_copy_sub_buffer to do partial screen update.
# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated.
# May break VSync and is not available on some drivers.
# Overrides --glx-copy-from-front.
glx-use-copysubbuffermesa = 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 = false;

# GLX backend: GLX buffer swap method we assume.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
#glx-swap-method = "undefined";

# Shadows
shadow = 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.2;
# 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-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 = false;
blur-background-exclude = [
    "window_type = 'dock'",
    "window_type = 'desktop'",
    "class_g ?= 'xob'"
];

# Fading

# Fade windows during opacity changes.
fading = true;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 4;
# 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 = true;

# 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;

# Specify refresh rate of the screen.
# If not specified or 0, picom will try detecting this with X RandR extension.
refresh-rate = 0;

# Vertical synchronization: match the refresh rate of the monitor
vsync = true;

# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;

# Limit picom to repaint at most once every 1 / refresh_rate second to boost performance.
# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
#sw-opti = 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.
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;

# Window type settings

wintypes:
{
    tooltip =
    {
        # fade: Fade the particular type of windows.
        fade = true;
        # shadow: Give those windows shadow
        shadow = false;
        # opacity: Default opacity for the type of windows.
        opacity = 0.85;
        # focus: Whether to always consider windows of this type focused.
        focus = true;
    };

    fullscreen :
    {
      fade = true;
      shadow = false;
      opacity = 1;
      focus = true;
    };

    dock:
    {
      shadow = false;
    }
};

# XSync
# See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d

# Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users.
xrender-sync-fence = true;

Steps of reproduction

  1. Wait 5 minutes for the screen saver to kick in and make the screen black
  2. Wake up the screen by moving the mouse
  3. It would sometimes flicker but sometimes nothing would happen

Expected behavior

Screen turns on without flickering

Current Behavior

The wallpaper and borders around the windows start to flicker a lot.

Stack trace

Don't think it crashes but not sure how to capture additional info here.

Other details

Tried to record it or capture screenshot but the problem seems to be fixed once the recording app creates it's overlay on the entire screen

Any help will be appreciated, thank you!

amitlevy21 avatar Jan 02 '21 09:01 amitlevy21

Hi, Same here with small variations:

Platform

Archlinux 5.10.3

GPU, drivers, and screen setup

Intel i5, 10th generation

I usually have multi-monitor (2) but it happens with both eDP1 laptop monitor or in multi-monitor case.

drivers:

  • xf86-video-intel
  • vulkan-intel (install to see if it helps)
  • mesa, xf86-video-vesa

Environment

i3wm

picom version

vgit-dac85 8.2.1

Configuration:

# vim: filetype=conf
backend = "glx"
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = true;
unredir-if-possible = false;

Steps of reproduction

  1. Wait to screen off
  2. flickering on wakeup and by flickering it means the whole background turns off and on. The flickering solves by launching a terminal. 3 The i3status system tray also flickers separately which solves by a restart status bar

Expected behavior

Have no sort of flickering after turning screen on.

Other details

  1. I tested both DRI2 and DRI3 but it didn't help
  2. Turning vsync off make it solved but that lead to tearing effect
  3. This happens to me few weeks ago, I only recently track it down to picom.
  4. Not sure if it matter, I use feh to set the background in i3wm.

mizhozan avatar Jan 02 '21 14:01 mizhozan

I have the same problem, but I'm using ibhagwan's fork, the picom I have is a bit behind from the git version. I also have screen tear. Also, feh doesn't have to do anything here, I'm using sxiv and xwallpaper and still getting the same behavior as you. In my case it happens on a single monitor (cuz I'm in laptop). BUT, this happens on certain moments it goes off, not always, moreover, my workaround is to simply kill picom and start it again, still, quite annoying

FrenzyExists avatar Jan 08 '21 05:01 FrenzyExists

Same story. Awesome/intel-modesetting. There artefacts after xscreensaver.

alxchk avatar Jan 09 '21 06:01 alxchk

Back again, I installed this fork and can confirm behavior is still there, not always but its there. So it might come all the way from ibhagwan's fork

FrenzyExists avatar Jan 11 '21 04:01 FrenzyExists

I just killing picom then starting it again. It works but temporary.

owl4ce avatar Jan 13 '21 04:01 owl4ce

Yeh, I think the workaround would be a script that checks if laptop is asleep or something and when it its it kills and restarts picom

FrenzyExists avatar Jan 19 '21 22:01 FrenzyExists

Hi, I'm facing the same with AMD Radeon HD 7670M. A temporary fix I use is I hit F11 or Mod+F to make the window fullscreen which removes the artifacts. Platform: Linux archlinux 5.4.90-1-lts #1 SMP Sun, 17 Jan 2021 19:57:30 +0000 x86_64 GNU/Linux Other Info

~
❯ pacman -Q | grep xf86-video
xf86-video-ati 1:19.1.0-2
~
❯ glxinfo -B
name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: X.Org (0x1002)
    Device: AMD TURKS (DRM 2.50.0 / 5.4.90-1-lts, LLVM 11.0.1) (0x6840)
    Version: 20.3.3
    Accelerated: yes
    Video memory: 1024MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 1023 MB, largest block: 1023 MB
    VBO free aux. memory - total: 1021 MB, largest block: 1021 MB
    Texture free memory - total: 1023 MB, largest block: 1023 MB
    Texture free aux. memory - total: 1021 MB, largest block: 1021 MB
    Renderbuffer free memory - total: 1023 MB, largest block: 1023 MB
    Renderbuffer free aux. memory - total: 1021 MB, largest block: 1021 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 1024 MB
    Total available memory: 2045 MB
    Currently available dedicated video memory: 1023 MB
OpenGL vendor string: X.Org
OpenGL renderer string: AMD TURKS (DRM 2.50.0 / 5.4.90-1-lts, LLVM 11.0.1)
OpenGL core profile version string: 3.3 (Core Profile) Mesa 20.3.3
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.1 Mesa 20.3.3
OpenGL shading language version string: 1.40
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 20.3.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

Environment

~
❯ pacman -Q | grep i3
i3-gaps 4.19-1

~
❯ picom --version
vgit-dac85

Config

#################################

#     GLX backend

#################################

backend = "glx";

glx-no-stencil = true;

glx-no-rebind-pixmap = true;

vsync = true;

xrender-sync-fence = "true";

glx-swap-method = -1;



#################################

#       Shadows

#################################

shadow = false;

shadow-radius = 5;

shadow-offset-x = -5;

shadow-offset-y = -5;

shadow-opacity = 0.2;

shadow-ignore-shaped = false;



#################################

#       Opacity

#################################

#inactive-opacity = 1;

active-opacity = 1;

frame-opacity = 0.8;

inactive-opacity-override = false;

#blur-background = true;

#blur-background-frame = true;

#blur-background-fixed = true;

#blur-background-exclude = [

 #   "window_type = 'desktop'",
  #  "class_g = 'alacritty'"

#];

#blur-kern = "3x3box";

#blur-method = "dual_kawase";

#blur-strength = 10;

opacity-rule = [

     "75:window_type = 'dock'",
     "75:class_g = 'alacritty'"

];



#################################

#       Fading

#################################

fading = false;



wintypes:

{

  dock = { shadow = false; }

  dnd = { shadow = false; }

  popup_menu = { opacity = 1.0; }

  dropdown_menu = { opacity = 1.0; }

}

SUNGOLDSV avatar Jan 26 '21 12:01 SUNGOLDSV

Similar issue on Arch/DWM/xf86-video-amdgpu on two separate boxes. Only happens on resume after a monitor times out into a low power state. Spawning a window on each screen after resume seems to resolve this.

fbmoose48 avatar Feb 02 '21 04:02 fbmoose48

I have the same issue and it happens after sleep as point out in original issue.

  • picom version: vgit-dac85
  • OS: Archlinux 5.10.13
  • environment: i3 version 4.19.1-non-git
  • Setup: two monitors, side by side

glxinfo:

name of display: :1
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel (0x8086)
    Device: Mesa Intel(R) Iris(R) Plus Graphics (ICL GT1.5) (0x8a5a)
    Version: 20.3.4
    Accelerated: yes
    Video memory: 3072MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) Iris(R) Plus Graphics (ICL GT1.5)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.3.4
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.3.4
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.3.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

picom diagnostic:

**Version:** vgit-dac85

### Extensions:

* Shape: Yes
* XRandR: Yes
* Present: Present

### Misc:

* Use Overlay: No (Another compositor is already running)
* Config file used: /etc/xdg/picom.conf

### Drivers (inaccurate):

Intel

configuration:

# vim: filetype=conf
backend = "glx"
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
vsync = true;
unredir-if-possible = false;
inactive-dim = 0.05;

relevant i3 config parts:

exec feh --bg-scale /home/$uz/Pictures/Wallpaper
exec --no-startup-id picom --config /home/$uz/homerepo/picom/picom.conf

Remedies:

  • For the wallpaper flickering issue just launching new terminal/app will fix it.
  • For system-tray icon flickering, restarting i3 will fix it.
  • Killing picom and restart it again seemingly solve the problem but it produce some later problems e.g. in screen sharing, zoom meeting, and interestingly in playing video with mpv which does not play (update frame) any sort of video after picom kill re-launch.

mizhozan avatar Feb 09 '21 03:02 mizhozan

On my end I simply turned off blur and transparency and shadows, enabled round boarders, and called it a day.

FrenzyExists avatar Feb 27 '21 10:02 FrenzyExists

same here: flickering after returning from screen saver Ubuntu, awesome wm, Intel-mesa drivers, killing picom and restarting resolves this.

wolass avatar Mar 17 '21 16:03 wolass

@wolass @amitlevy21

Was facing the same issue. Fixed after adding glx-use-copysubbuffer-mesa to true in the config:

glx-use-copysubbuffer-mesa = true;

After setting the above, restart picom and check if the issue persists by running the following command:

sleep 1; xset dpms force standby

and then try to move the mouse or press a key.

Solved from this post: https://bbs.archlinux.org/viewtopic.php?id=262958

deepjyoti30 avatar May 14 '21 08:05 deepjyoti30

For me the solution was to switch to xrender.

So replace

backend = "glx";

with

backend = "xrender";

In your .config/picom.conf.

dklymenk avatar May 14 '21 22:05 dklymenk

Problem with xrender is that it does not offer vsync. But luckily https://github.com/yshui/picom/issues/578#issuecomment-841094585 appears to work.

matejdro avatar May 15 '21 05:05 matejdro

Problem with xrender is that it does not offer vsync. But luckily #578 (comment) appears to work.

Can you please list your full working picom.conf? Maybe it's caused by something else for me.

dklymenk avatar May 15 '21 06:05 dklymenk

Config.txt is from the first post of the https://github.com/yshui/picom/issues/603, with that extra line added in.

matejdro avatar May 15 '21 06:05 matejdro

For me, it's fixed by

glx-use-copysubbuffer-mesa = false;

althought sometimes it flickers for a moment.

Testing out

sleep 1; xset dpms force off

owl4ce avatar May 18 '21 16:05 owl4ce

Is there any way to measure when the flickering happens? One could prob activate a script that runs what the prev comment mentioned, for the sake of automation

FrenzyExists avatar May 19 '21 22:05 FrenzyExists

Using @owl4ce fix works for me if i let it sleep for like 2-3 seconds. However, if i try to wake up the screen immediately, it starts to have the same flickering issue.

kokopi-dev avatar May 20 '21 03:05 kokopi-dev

Could please someone confirm the correct syntax. It starts in the first post as

glx-use-copysubbuffermesa = false;

and changes in later messages to

glx-use-copysubbuffer-mesa = false;

My config has glx-use-copysubbuffermesa = false; which should be correct.

homebuilt-uk avatar May 20 '21 14:05 homebuilt-uk

@homebuilt-uk You are correct, glx-use-copysubbuffermesa = false; is the right one to use.

kokopi-dev avatar May 21 '21 01:05 kokopi-dev

I have glx-use-copysubbuffermesa = false in my initial configuration that I posted. Problem persists. Though iv'e noticed it happens less frequently.

amitlevy21 avatar May 23 '21 07:05 amitlevy21

I also experience the issue, I'm on the Archlinux, picom v8.3, and the intel modesetting driver in the lts kernel. I've tried many combinations of currently available options to no avail.

The suggestion in https://github.com/yshui/picom/issues/578#issuecomment-841094585 should not work for the OP at least, even when one uses the (formerly) correct glx-use-copysubbuffermesa. This option was deprecated in v3, removed in version 6 and doesn't exist in the relevant version of the code (dac85ea is v8.2). Please see 17d128159486f37079e7c85206e577fdc2142e9f for details on the removal.

Note that this comment doesn't necessarily apply to all forks of picom, or all versions, but by version 6 in this repo glx-use-copysubbuffermesa simply doesn't do anything but print an error message. All of the functional parts of the option were removed in https://github.com/yshui/picom/commit/c01ad5bf040f3e9c6ed2baef97ca9de31b0939eb (even earlier). I recognize this comment may be less helpful than is ideal, however, some people have had success using the option, perhaps we could get someone (who actually knows what they're doing, i.e. not me) to add it back in?

It's still a little unclear whether this is a placebo or not, some people may be using binaries from forks or older tags. The issue is inconsistent for me, and sometimes it won't show up for a few sleep cycles, then it's back. Perhaps more investigation is the proper course here.

Edit for precision and accuracy.

clangdo avatar Jun 04 '21 19:06 clangdo

Enabling experimental backends on glx fixes this issues for me.

# Thank you code_nomad: http://9m.no/ꪯ鵞
# and Arch Wiki contributors: https://wiki.archlinux.org/index.php/Compton

#################################
#
# 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: Use MESA_copy_sub_buffer to do partial screen update.
# My tests on nouveau shows a 200% performance boost when only 1/4 of the screen is updated.
# May break VSync and is not available on some drivers.
# Overrides --glx-copy-from-front.
glx-use-copysubbuffermesa = 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;

# GLX backend: GLX buffer swap method we assume.
# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
# undefined is the slowest and the safest, and the default value.
# copy is fastest, but may fail on some drivers,
# 2-6 are gradually slower but safer (6 is still faster than 0).
# Usually, double buffer means 2, triple buffer means 3.
# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
# Useless with --glx-use-copysubbuffermesa.
# Partially breaks --resize-damage.
# Defaults to undefined.
glx-swap-method = "6";

#################################
#
# Shadows
#
#################################

# Enabled client-side shadows on windows.
shadow = true;
# The blur radius for shadows. (default 12)
shadow-radius = 8;
# The left offset for shadows. (default -15)
shadow-offset-x = -10;
# The top offset for shadows. (default -15)
shadow-offset-y = -10;
# The translucency for shadows. (default .75)
shadow-opacity = 0.40;

# Set if you want different colour shadows
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;

# The shadow exclude options are helpful if you have shadows enabled. Due to the way picom 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.

shadow-exclude = [ 
	"class_g = 'Cairo-clock'" ,
	"class_g = 'CoverGloobus'",
	"class_g = 'Tilda'",
	"name ?= 'gnome-pie'",
	"class_g = 'Firefox'",
	"class_g = 'Firefox-esr'",
	"class_g = 'Dmenu'",
#	"class_g ?= 'rofi'",
#	"class_g ?= 'polybar'",
    "name = 'Notification'",
    "name = 'Plank'",
    "name = 'Docky'",
    "name = 'Kupfer'",
    "name = 'xfce4-notifyd'",
    "name *= 'VLC'",
    "name *= 'Chromium'",
    "class_g = 'brave-browser'",
    "class_g = 'Brave-browser'",
    "name *= 'Chrome'",
    "name *= 'Brave'",
    "class_g = 'Conky'",
    "class_g = 'Plank'",
    "class_g = 'Kupfer'",
    "class_g = 'Synapse'",
    "class_g ?= 'Notify-osd'",
    "class_g ?= 'Cairo-dock'",
    "class_g ?= 'Xfce4-notifyd'",
    "class_g ?= 'Xfce4-power-manager'",
    "_GTK_FRAME_EXTENTS@:c",
    "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];

# Avoid drawing shadow on all shaped windows (see also: --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.2;
# 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-background = false;
# Blur background of opaque windows with transparent frames as well.
blur-background-frame = false;
# Do not let blur radius adjust based on window opacity.
blur-method = "kawase";
blur-strength = 12;
blur-background-fixed = false;
blur-background-exclude = [
	"window_type = 'dock'",
	"window_type = 'desktop'",
	"class_g = 'slop'",
	"_GTK_FRAME_EXTENTS@:c"
];

#################################
#
# Fading
#
#################################

# Fade windows during opacity changes.
fading = true;
# The time between steps in a fade in milliseconds. (default 10).
fade-delta = 3;
# 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 = true;

# 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;

# Specify refresh rate of the screen.
# If not specified or 0, picom will try detecting this with X RandR extension.
refresh-rate = 0;

# Vertical synchronization: match the refresh rate of the monitor
vsync = true;

# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
# Reported to have no effect, though.
dbe = false;

# Limit picom to repaint at most once every 1 / refresh_rate second to boost performance.
# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
sw-opti = 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.
unredir-if-possible = false;

# 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;

#################################
#
# Window type settings
#
#################################

wintypes:
{
    tooltip =
    {
        # fade: Fade the particular type of windows.
        fade = true;
        # shadow: Give those windows shadow
        shadow = true;
        # opacity: Default opacity for the type of windows.
        opacity = 0.95;
        # focus: Whether to always consider windows of this type focused.
        focus = true;
    };
    utility =
	{
		shadow = false;
	};
};

######################
#
# XSync
# See: https://github.com/yshui/picom/commit/b18d46bcbdc35a3b5620d817dd46fbc76485c20d
#
######################

# Use X Sync fence to sync clients' draw calls. Needed on nvidia-drivers with GLX backend for some users.
xrender-sync-fence = false;

Dark-Matter7232 avatar Aug 20 '21 07:08 Dark-Matter7232

this also happends here with awesomewm/picom from -git but im using an amdgpu seems most are seeing this on intel.

gulafaran avatar Aug 27 '21 13:08 gulafaran

this also happends here with awesomewm/picom from -git but im using an amdgpu seems most are seeing this on intel.

I have had this issue with both intel and amdgpu.

Dark-Matter7232 avatar Aug 27 '21 13:08 Dark-Matter7232

@gulafaran @Dark-Matter7232 +1 on amdgpu. I never faced it on my Intel laptop but face it on my amd machine.

deepjyoti30 avatar Aug 27 '21 13:08 deepjyoti30

Please bear with me, this comment may be completely OT because I do not use picom but I have the same issue on Linux Mint: https://github.com/linuxmint/cinnamon/issues/10255

I'm posting here because I wonder if the problem is caused on some deeper level. Internals of graphics on Linux are above my head but maybe it gives a new idea where to search for the problem.

Maybe someone could at least confirm that the issue looks similar: https://streamable.com/35y4jq

I also provided some instructions for how to reproduce it. I have to really play around with moving windows close to the screen border before sending the monitor to sleep.

Sorry again, for being OT. If it's too disruptive or doesn't help I can also remove this comment again.

mikehaertl avatar Sep 02 '21 11:09 mikehaertl

Maybe someone could at least confirm that the issue looks similar: https://streamable.com/35y4jq

I can confim that in my case (i3wm, picom, intel graphics) the issue looks exactly the same

FrancescoCappio avatar Sep 02 '21 16:09 FrancescoCappio

It seems the parts of screen which didn't update when screen is off have a greater chance to flicker.

using glx as rendering backend picom/qtile/xf86-video-intel

hyx0329 avatar Sep 22 '21 06:09 hyx0329