From cac0719d5f4ece21f0c895d14b0d2953a9bf4f6f Mon Sep 17 00:00:00 2001 From: Sravan Balaji Date: Wed, 22 Sep 2021 15:52:45 -0400 Subject: [PATCH] Picom Enable Vsync to Fix Screen Tearing - Enable vsync in picom configuration - Toggle picom on and off with gaming launch & exit script rather than unredir-if-possible setting --- .config/picom/picom.conf | 131 +++++++++++++++++++------------------ .scripts/game_exit.sh | 1 + .scripts/game_launch.sh | 1 + README.org | 135 ++++++++++++++++++++------------------- 4 files changed, 136 insertions(+), 132 deletions(-) diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf index 0911e35..646cb9a 100644 --- a/.config/picom/picom.conf +++ b/.config/picom/picom.conf @@ -292,12 +292,12 @@ backend = "glx"; # Enable/disable VSync. # vsync = false -vsync = false +vsync = true # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. # dbus = false -# Try to detect WM windows (a non-override-redirect window with no +# 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 = false @@ -307,7 +307,7 @@ mark-wmwin-focused = true; # mark-ovredir-focused = false mark-ovredir-focused = true; -# Try to detect windows with rounded corners and don't consider them +# Try to detect windows with rounded corners and don't consider them # shaped windows. The accuracy is not very high, unfortunately. # # detect-rounded-corners = false @@ -319,88 +319,87 @@ detect-rounded-corners = true; # detect-client-opacity = false detect-client-opacity = true; -# Specify refresh rate of the screen. If not specified or 0, picom will +# Specify refresh rate of the screen. If not specified or 0, picom will # try detecting this with X RandR extension. # # refresh-rate = 60 -refresh-rate = 0 -# Limit picom to repaint at most once every 1 / 'refresh_rate' second to -# boost performance. This should not be used with +# 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, +# as they essentially does sw-opti's job already, # unless you wish to specify a lower refresh rate than the actual value. # -# sw-opti = +# sw-opti = -# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, -# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, +# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, +# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, # provided that the WM supports it. # # use-ewmh-active-win = false -# Unredirect all windows if a full-screen opaque window is detected, -# to maximize performance for full-screen windows. Known to cause flickering +# Unredirect all windows if a full-screen opaque window is detected, +# to maximize performance for full-screen windows. Known to cause flickering # when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. # -# unredir-if-possible = false -unredir-if-possible = true; -# unredir-if-possible-exclude = [ -# "class_g = 'looking-glass-client' && !focused" -# ] +unredir-if-possible = false +# unredir-if-possible = true; # Delay before unredirecting the window, in milliseconds. Defaults to 0. # unredir-if-possible-delay = 0 # Conditions of windows that shouldn't be considered full-screen for unredirecting screen. # unredir-if-possible-exclude = [] +# unredir-if-possible-exclude = [ +# "class_g = 'looking-glass-client' && !focused" +# ] -# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows +# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows # in the same group focused at the same time. # # detect-transient = false 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 +# 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 = false detect-client-leader = true -# Resize damaged region by a specific number of pixels. -# A positive value enlarges it while a negative one shrinks it. -# If the value is positive, those additional pixels will not be actually painted -# to screen, only used in blur calculation, and such. (Due to technical limitations, -# with use-damage, those pixels will still be incorrectly painted to screen.) -# Primarily used to fix the line corruption issues of blur, -# in which case you should use the blur radius value here -# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, -# with a 5x5 one you use `--resize-damage 2`, and so on). +# Resize damaged region by a specific number of pixels. +# A positive value enlarges it while a negative one shrinks it. +# If the value is positive, those additional pixels will not be actually painted +# to screen, only used in blur calculation, and such. (Due to technical limitations, +# with use-damage, those pixels will still be incorrectly painted to screen.) +# Primarily used to fix the line corruption issues of blur, +# in which case you should use the blur radius value here +# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, +# with a 5x5 one you use `--resize-damage 2`, and so on). # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. # # resize-damage = 1 -# Specify a list of conditions of windows that should be painted with inverted color. +# Specify a list of conditions of windows that should be painted with inverted color. # Resource-hogging, and is not well tested. # # invert-color-include = [] -# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. -# Might cause incorrect opacity when rendering transparent content (but never -# practically happened) and may not work with blur-background. +# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. +# Might cause incorrect opacity when rendering transparent content (but never +# practically happened) and may not work with blur-background. # My tests show a 15% performance boost. Recommended. # # glx-no-stencil = false -# GLX backend: Avoid rebinding pixmap on window damage. -# Probably could improve performance on rapid window content changes, +# 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, xf86-video-intel, etc.). # Recommended if it works. # # glx-no-rebind-pixmap = false -# Disable the use of damage information. +# Disable the use of damage information. # 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 @@ -410,31 +409,31 @@ detect-client-leader = true #Changing use-damage to false fixes the problem use-damage = false -# Use X Sync fence to sync clients' draw calls, to make sure all draw -# calls are finished before picom starts drawing. Needed on nvidia-drivers +# Use X Sync fence to sync clients' draw calls, to make sure all draw +# calls are finished before picom starts drawing. Needed on nvidia-drivers # with GLX backend for some users. # # xrender-sync-fence = false -# GLX backend: Use specified GLSL fragment shader for rendering window contents. -# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` +# GLX backend: Use specified GLSL fragment shader for rendering window contents. +# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` # in the source tree for examples. # # glx-fshader-win = '' -# Force all windows to be painted with blending. Useful if you +# Force all windows to be painted with blending. Useful if you # have a glx-fshader-win that could turn opaque pixels transparent. # # force-win-blend = false -# Do not use EWMH to detect fullscreen windows. +# Do not use EWMH to detect fullscreen windows. # Reverts to checking if a window is fullscreen based only on its size and coordinates. # # no-ewmh-fullscreen = false -# Dimming bright windows so their brightness doesn't exceed this set value. -# Brightness of a window is estimated by averaging all pixels in the window, -# so this could comes with a performance hit. +# Dimming bright windows so their brightness doesn't exceed this set value. +# Brightness of a window is estimated by averaging all pixels in the window, +# so this could comes with a performance hit. # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) # # max-brightness = 1.0 @@ -446,17 +445,17 @@ use-damage = false # Set the log level. Possible values are: # "trace", "debug", "info", "warn", "error" -# in increasing level of importance. Case doesn't matter. -# If using the "TRACE" log level, it's better to log into a file +# in increasing level of importance. Case doesn't matter. +# If using the "TRACE" log level, it's better to log into a file # using *--log-file*, since it can generate a huge stream of logs. # # log-level = "debug" log-level = "info"; # Set the log file. -# If *--log-file* is never specified, logs will be written to stderr. -# Otherwise, logs will to written to the given file, though some of the early -# logs might still be written to the stderr. +# If *--log-file* is never specified, logs will be written to stderr. +# Otherwise, logs will to written to the given file, though some of the early +# logs might still be written to the stderr. # When setting this option from the config file, it is recommended to use an absolute path. # # log-file = '/path/to/your/log/file' @@ -468,33 +467,33 @@ log-level = "info"; # write-pid-path = '/path/to/your/log/file' # Window type settings -# -# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: -# "unknown", "desktop", "dock", "toolbar", "menu", "utility", -# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", +# +# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: +# "unknown", "desktop", "dock", "toolbar", "menu", "utility", +# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", # "tooltip", "notification", "combo", and "dnd". -# +# # Following per window-type options are available: :: -# +# # fade, shadow::: # Controls window-type-specific shadow and fade settings. -# +# # opacity::: # Controls default opacity of the window type. -# +# # focus::: -# Controls whether the window of this type is to be always considered focused. +# 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 +# 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 +# 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, +# set, and doesn't want certain window to cause unnecessary screen redirection, # you can set this to `true`. # wintypes: diff --git a/.scripts/game_exit.sh b/.scripts/game_exit.sh index e0981ae..d1117e1 100755 --- a/.scripts/game_exit.sh +++ b/.scripts/game_exit.sh @@ -1,2 +1,3 @@ #!/bin/bash /home/sravan/.scripts/deadd.sh --unpause +/home/sravan/.scripts/picom.sh --on diff --git a/.scripts/game_launch.sh b/.scripts/game_launch.sh index 8a27b75..3e385d1 100755 --- a/.scripts/game_launch.sh +++ b/.scripts/game_launch.sh @@ -1,2 +1,3 @@ #!/bin/bash /home/sravan/.scripts/deadd.sh --pause +/home/sravan/.scripts/picom.sh --off diff --git a/README.org b/README.org index e2db606..4ddb94b 100644 --- a/README.org +++ b/README.org @@ -2542,12 +2542,12 @@ backend = "glx"; # Enable/disable VSync. # vsync = false -vsync = false +vsync = true # Enable remote control via D-Bus. See the *D-BUS API* section below for more details. # dbus = false -# Try to detect WM windows (a non-override-redirect window with no +# 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 = false @@ -2557,7 +2557,7 @@ mark-wmwin-focused = true; # mark-ovredir-focused = false mark-ovredir-focused = true; -# Try to detect windows with rounded corners and don't consider them +# Try to detect windows with rounded corners and don't consider them # shaped windows. The accuracy is not very high, unfortunately. # # detect-rounded-corners = false @@ -2569,88 +2569,87 @@ detect-rounded-corners = true; # detect-client-opacity = false detect-client-opacity = true; -# Specify refresh rate of the screen. If not specified or 0, picom will +# Specify refresh rate of the screen. If not specified or 0, picom will # try detecting this with X RandR extension. # # refresh-rate = 60 -refresh-rate = 0 -# Limit picom to repaint at most once every 1 / 'refresh_rate' second to -# boost performance. This should not be used with +# 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, +# as they essentially does sw-opti's job already, # unless you wish to specify a lower refresh rate than the actual value. # -# sw-opti = +# sw-opti = -# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, -# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, +# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, +# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, # provided that the WM supports it. # # use-ewmh-active-win = false -# Unredirect all windows if a full-screen opaque window is detected, -# to maximize performance for full-screen windows. Known to cause flickering +# Unredirect all windows if a full-screen opaque window is detected, +# to maximize performance for full-screen windows. Known to cause flickering # when redirecting/unredirecting windows. paint-on-overlay may make the flickering less obvious. # -# unredir-if-possible = false -unredir-if-possible = true; -# unredir-if-possible-exclude = [ -# "class_g = 'looking-glass-client' && !focused" -# ] +unredir-if-possible = false +# unredir-if-possible = true; # Delay before unredirecting the window, in milliseconds. Defaults to 0. # unredir-if-possible-delay = 0 # Conditions of windows that shouldn't be considered full-screen for unredirecting screen. # unredir-if-possible-exclude = [] +# unredir-if-possible-exclude = [ +# "class_g = 'looking-glass-client' && !focused" +# ] -# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows +# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows # in the same group focused at the same time. # # detect-transient = false 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 +# 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 = false detect-client-leader = true -# Resize damaged region by a specific number of pixels. -# A positive value enlarges it while a negative one shrinks it. -# If the value is positive, those additional pixels will not be actually painted -# to screen, only used in blur calculation, and such. (Due to technical limitations, -# with use-damage, those pixels will still be incorrectly painted to screen.) -# Primarily used to fix the line corruption issues of blur, -# in which case you should use the blur radius value here -# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, -# with a 5x5 one you use `--resize-damage 2`, and so on). +# Resize damaged region by a specific number of pixels. +# A positive value enlarges it while a negative one shrinks it. +# If the value is positive, those additional pixels will not be actually painted +# to screen, only used in blur calculation, and such. (Due to technical limitations, +# with use-damage, those pixels will still be incorrectly painted to screen.) +# Primarily used to fix the line corruption issues of blur, +# in which case you should use the blur radius value here +# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`, +# with a 5x5 one you use `--resize-damage 2`, and so on). # May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly. # # resize-damage = 1 -# Specify a list of conditions of windows that should be painted with inverted color. +# Specify a list of conditions of windows that should be painted with inverted color. # Resource-hogging, and is not well tested. # # invert-color-include = [] -# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. -# Might cause incorrect opacity when rendering transparent content (but never -# practically happened) and may not work with blur-background. +# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer. +# Might cause incorrect opacity when rendering transparent content (but never +# practically happened) and may not work with blur-background. # My tests show a 15% performance boost. Recommended. # # glx-no-stencil = false -# GLX backend: Avoid rebinding pixmap on window damage. -# Probably could improve performance on rapid window content changes, +# 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, xf86-video-intel, etc.). # Recommended if it works. # # glx-no-rebind-pixmap = false -# Disable the use of damage information. +# Disable the use of damage information. # 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 @@ -2660,31 +2659,31 @@ detect-client-leader = true #Changing use-damage to false fixes the problem use-damage = false -# Use X Sync fence to sync clients' draw calls, to make sure all draw -# calls are finished before picom starts drawing. Needed on nvidia-drivers +# Use X Sync fence to sync clients' draw calls, to make sure all draw +# calls are finished before picom starts drawing. Needed on nvidia-drivers # with GLX backend for some users. # # xrender-sync-fence = false -# GLX backend: Use specified GLSL fragment shader for rendering window contents. -# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` +# GLX backend: Use specified GLSL fragment shader for rendering window contents. +# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` # in the source tree for examples. # # glx-fshader-win = '' -# Force all windows to be painted with blending. Useful if you +# Force all windows to be painted with blending. Useful if you # have a glx-fshader-win that could turn opaque pixels transparent. # # force-win-blend = false -# Do not use EWMH to detect fullscreen windows. +# Do not use EWMH to detect fullscreen windows. # Reverts to checking if a window is fullscreen based only on its size and coordinates. # # no-ewmh-fullscreen = false -# Dimming bright windows so their brightness doesn't exceed this set value. -# Brightness of a window is estimated by averaging all pixels in the window, -# so this could comes with a performance hit. +# Dimming bright windows so their brightness doesn't exceed this set value. +# Brightness of a window is estimated by averaging all pixels in the window, +# so this could comes with a performance hit. # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) # # max-brightness = 1.0 @@ -2696,17 +2695,17 @@ use-damage = false # Set the log level. Possible values are: # "trace", "debug", "info", "warn", "error" -# in increasing level of importance. Case doesn't matter. -# If using the "TRACE" log level, it's better to log into a file +# in increasing level of importance. Case doesn't matter. +# If using the "TRACE" log level, it's better to log into a file # using *--log-file*, since it can generate a huge stream of logs. # # log-level = "debug" log-level = "info"; # Set the log file. -# If *--log-file* is never specified, logs will be written to stderr. -# Otherwise, logs will to written to the given file, though some of the early -# logs might still be written to the stderr. +# If *--log-file* is never specified, logs will be written to stderr. +# Otherwise, logs will to written to the given file, though some of the early +# logs might still be written to the stderr. # When setting this option from the config file, it is recommended to use an absolute path. # # log-file = '/path/to/your/log/file' @@ -2718,33 +2717,33 @@ log-level = "info"; # write-pid-path = '/path/to/your/log/file' # Window type settings -# -# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: -# "unknown", "desktop", "dock", "toolbar", "menu", "utility", -# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", +# +# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: +# "unknown", "desktop", "dock", "toolbar", "menu", "utility", +# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", # "tooltip", "notification", "combo", and "dnd". -# +# # Following per window-type options are available: :: -# +# # fade, shadow::: # Controls window-type-specific shadow and fade settings. -# +# # opacity::: # Controls default opacity of the window type. -# +# # focus::: -# Controls whether the window of this type is to be always considered focused. +# 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 +# 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 +# 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, +# set, and doesn't want certain window to cause unnecessary screen redirection, # you can set this to `true`. # wintypes: @@ -6933,6 +6932,7 @@ ${font Montserrat Light:size=9}${color1}${top_mem name 10} ${color}${font} ${got #+END_SRC * Gaming + ** Gamemode *** General @@ -7052,6 +7052,7 @@ inhibit_screensaver=1 ; Timeout for scripts (seconds). Scripts will be killed if they do not complete within this time. ;script_timeout=10 #+END_SRC + ** MangoHUD #+BEGIN_SRC conf :tangle .config/MangoHud/MangoHud.conf @@ -7850,6 +7851,7 @@ These are scripts that should be run from Lutris when launching or exiting a gam #+BEGIN_SRC shell :shebang #!/bin/bash :tangle .scripts/game_launch.sh /home/sravan/.scripts/deadd.sh --pause +/home/sravan/.scripts/picom.sh --off #+END_SRC *** Post-Exit Script @@ -7858,6 +7860,7 @@ These are scripts that should be run from Lutris when launching or exiting a gam #+BEGIN_SRC shell :shebang #!/bin/bash :tangle .scripts/game_exit.sh /home/sravan/.scripts/deadd.sh --unpause +/home/sravan/.scripts/picom.sh --on #+END_SRC ** Control Center