jonaburg / picom

A lightweight compositor for X11 (previously a compton fork)
Other
954 stars 98 forks source link

Floating "teleports" Windows optically #52

Closed paulhersch closed 2 years ago

paulhersch commented 3 years ago

Platform

Manjaro Linux stable branch

GPU, drivers, and screen setup

RTX3060 with nvidia-dkms 460.73, two monitors

Environment

i3-gaps

picom version

vgit-a8445

Configuration:

################################
#   Transitions        
################################
#For picom compositors capable of transitions
size-transition = true
transition-length = 150

transition-pow-x = 0.2
transition-pow-y = 0.2
transition-pow-w = 0.2
transition-pow-h = 0.2

################################
#   Corner
################################
#For picom-* compositors capable of rounded corners

#corner-radius = 10
#round-borders = 1

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

shadow = true
shadow-radius = 8;

shadow-red=0.05
shadow-blue=0.05
shadow-green=0.05

shadow-opacity = 0.8
shadow-offset-x = -5;
shadow-offset-y = -3;
shadow-exclude = [
  "name = 'Notification'",
  "class_g = 'Conky'",
  "class_g ?= 'Notify-osd'",
  "class_g = 'Cairo-clock'",
  "_GTK_FRAME_EXTENTS@:c"
];

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

# Fade windows in/out when opening/closing and when opacity changes,
#  unless no-fading-openclose is used.
# fading = false
fading = true;

# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;

# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;

# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
 fade-delta = 3

# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []

# Do not fade on window open/close.
# no-fading-openclose = false

# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false

#################################
#   Transparency / Opacity      #
#################################

# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
inactive-opacity = 1
#inactive-opacity = 0.8;

# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
 frame-opacity = 1.0
#frame-opacity = 0.7;

# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;

# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 0.95

# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0

# Specify a list of conditions of windows that should always be considered focused.
# focus-exclude = []
#focus-exclude = [ "class_g = 'Cairo-clock'" ];

# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0

# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
#   opacity-rule = [ "80:class_g = 'URxvt'" ];
#   opacity-rule = [ "80:name *= 'discord'" ];
#   opacity-rule = [ "80:class_g *= 'rofi'"];
#
# opacity-rule = []

#################################
#     Background-Blurring       #
#################################

# Parameters for background blurring, see the *BLUR* section for more information.

#blur-method="dual_kawase";
#blur-strength = 4
#blur-background = true
#blur-background-frame = true
#blur-background-fixed = true

blur:{
    method = "dual_kawase"
    strength = 4
    background = true
    background-frame = true
    background-fixed = true
}

#################################
#       General Settings        #
#################################

# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
 daemon = true

# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
backend = "glx";

glx-no-stencil = true

#vsync = true;

# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
dbus = true

# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
mark-wmwin-focused = true;

# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;

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

# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
  use-damage = false

transparent-clipping = false

log-level = "warn";

wintypes:
{
  tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
  dock = { shadow = false; corner-radius = 0;}
  dnd = { shadow = false; }
  popup_menu = { opacity = 0.85; shadow = false; }
  dropdown_menu = { opacity = 0.85; shadow = false; }
  notification = {shadow = false;}
};

Steps of reproduction

  1. put a window in floating mode (in a WM that supports tiling and floating dynamically)
  2. try to move the windows

Expected behavior

i can move the floating window around normally

Current Behavior

the window "teleports" to one side optically, while the actual position that allows you to do stuff is somewhere else (you can see that with window borders for example)

Stack trace

doesn't crash

Other details

can record the bug on cam if needed

taylor85345 commented 3 years ago

I was having the same issue in both leftwm and bspwm. The solution was to reduce all transition-pow values from 0.2 to 0.1. This is now the default configuration.

transition-pow-x = 0.1
transition-pow-y = 0.1
transition-pow-w = 0.1
transition-pow-h = 0.1