Commit Graph

1476 Commits

Author SHA1 Message Date
jialeens
7d7eef7ff4 Accept write-pid-path option from the config file
Signed-off-by: jialeens <jialeadmin@163.com>
2020-09-16 12:14:46 +01:00
yshui
4bc1ef87c9 Merge pull request #491 from jialeens/next
update picom.sample.conf
2020-09-15 14:48:46 +01:00
jialeens
4d990b3d35 update picom.sample.conf
Signed-off-by: jialeens <jialeadmin@163.com>
2020-09-14 15:57:56 +08:00
yshui
2451c21539 Merge pull request #486 from rharish101/grammar
Changed "A X ..." to "An X ..."
2020-09-12 10:40:59 +01:00
Bernd Busse
aef1b856a6 backend: gl_common: render correct number of elements in blur
Keep track of the number of elements/indices for the normal blur rects
as well as the resized ones and use the correct number when drawing.
The number of rects can change if resized rects overlap and are reduced
into a single rect.

Fixes #440
2020-09-11 20:11:11 +02:00
Harish Rajagopal
88b6d5b0a1 Changed "A X ..." to "An X ..."
Reference: https://blog.apastyle.org/apastyle/2012/04/using-a-or-an-with-acronyms-and-abbreviations.html.
2020-09-10 23:13:45 +02:00
Yuxuan Shui
699ff9bc82 options: fix typo
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-09-08 07:17:56 +01:00
Yuxuan Shui
7d32783d9e options: warn when dual-kawase blur is chosen on unsupported backends
Closes #464

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-09-08 07:08:23 +01:00
Yuxuan Shui
670b4abae7 backend/backend: add a TODO about image ops ordering 2020-09-05 18:55:23 +01:00
Yuxuan Shui
c5145479b0 Fix several memory leaks
* src/event.c: expose_root: region is not freed
* backend/xrender/xrender.c:
    * bind_pixmap: the reply `r` is not freed
    * blur: reg_op_resized is not freed

Spotted-by: Samuel Hand <samuel.d.hand@gmail.com>
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-09-05 16:45:21 +01:00
yshui
c4369ec756 Merge pull request #481 from itaranto/improve-example-config
Do not use single quotes in the example config
2020-09-04 22:53:49 +01:00
Ignacio Taranto
30bbfc28bb Do not use single quotes in the example config
This replaces single quotes for double quotes in the configuration
comments that refer to strings.
This was misleading since someone could took that comment as a valid
config entry, which is not.  One notable example was `backend = 'glx'`
which is not accepted by libconfig.

This also adds `;` for each default config values for consistency.
2020-09-04 10:20:40 -03:00
Bernd Busse
c9ca9de55e core: update stale images AFTER checking focus
Partially revert 32754b0262.

We start with mapping the window (`win_process_update_flags()`). Then check
if focus has changed and process focus updates. Finally refresh stale images
(`win_process_image_flags`) because rules based on focus may have invalidated
them or require them to be created.

Fixes #465 with the following rule:
```
shadow-exclude = [
  "focused" != 1"
]
```
2020-08-31 20:22:28 +02:00
Bernd Busse
f6780cb394 tests: add test case for #465 2020-08-31 20:22:15 +02:00
Yuxuan Shui
283504d527 Remove no-dock-shadow and no-dnd-shadow
Deprecated since v4

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-31 18:32:14 +01:00
yshui
731bd61467 Merge pull request #382 from tryone144/feature/dual_kawase
dual-kawase blur algorithm for new OpenGL backend
2020-08-31 14:54:38 +01:00
Bernd Busse
5e0215abab backend: gl_common: implement dual-filter kawase blur method
Implement the dual-filter kawase blur algorithm for the new OpenGL backend
as seen in kwin [1]. Use with `--blur-method dual_kawase` and set the
desired strength with `--blur-strength level` (1-20).

The dual-filter kawase algorithm produces results close to a traditional
gaussian blur with higher performace, especially at high blur radii. The
supported strength levels provide an effect similar to gauss-radii between
4 and 500 pixels.

As this algorithm relies heavily on the texture-filtering units of a
GPU, there is no support for the xrender backend — at least for now.

[1](https://kwin.kde.narkive.com/aSqRYYw7/d9848-updated-the-blur-method-to-use-the-more-efficient-dual-kawase-blur-algorithm)
2020-08-31 14:06:45 +02:00
Bernd Busse
89c18afac6 backend: gl_common: split kernel-blur code from general init/blur code [WIP]
**Work-in-Progress**

Split-off kernel-blur specific initialization and rendering from common
OpenGL setup. Add stub functions for dual_kawase-blur initialization and
rendering.
2020-08-31 14:06:18 +02:00
Bernd Busse
d45d0ca209 backend: create dual_kawase blur parameters from selected strength [WIP]
**Work-in-Progress**

Generate suitable parameters for dual-filter kawase blur based on the
selected `blur-strength` or approximate a gauss blur with the selected
`blur-size` and std-deviation.
2020-08-31 14:06:18 +02:00
Bernd Busse
33c5a5a36b Add support for new blur method dual_kawase [WIP]
**Work-in-Progress**

Add `dual_kawase` to configuration and argument parsing. Allow `kawase`
for backward compatibility. Add `--blur-strength` parameter for
blur-method `dual_kawase`.

Update documentation to reflect the new blur-method and parameters.
2020-08-31 14:06:17 +02:00
Bernd Busse
0000cc1d98 backend: gl_common: support arbitrary number of aux. blur textures/fbos
Support an arbitrary number of auxiliary textures and framebuffers for
blur. Preparation for the dual-filter kawase algorithm.
2020-08-31 14:06:17 +02:00
yshui
ceb9b7f1f2 Merge pull request #476 from tonijarjour/next
Update picom.sample.conf
2020-08-30 22:05:17 +01:00
Toni Jarjour
7f1c08907d picom.sample.conf: remove deprecated options 2020-08-30 22:02:41 +01:00
Yuxuan Shui
5ebac238e2 Remove documentation, usage messages and examples about sw-opti
It have been deprecated.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 21:26:19 +01:00
Yuxuan Shui
24f0241907 gitignore: ignore language server indices
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 17:57:05 +01:00
Yuxuan Shui
9c7b8597e0 core: rename _draw_callback to draw_callback_impl
All names start with underscore are reserved in C.

Also just testing out the language server's renaming feature.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 17:44:21 +01:00
Yuxuan Shui
8c1b0657ff Refresh the TODO comments
Removed the outdated ones, clarified some of them, and assigned them to
me.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 15:25:58 +01:00
Yuxuan Shui
cdb9765802 Add a .clang-tidy file
We currently don't use it for anything. We could add a CI pass in the
future.

We don't enable clang-analyzer checks. The checks enabled here should
mostly be syntax/style linting only, and should be cheap to run.
clang-analyzer checks are usually compute-intensive, and can easily be run
separately anyway, with scan-build and such.

The list of checks definitely isn't final.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 14:42:39 +01:00
Yuxuan Shui
0574e63658 Be explicit when checking XCB_NONE
Obvisouly this commit only cover a tiny portion of these checks.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 14:10:26 +01:00
Yuxuan Shui
617503a5de core: use a long-lived XFixes region
This is a workaround for #301. This doesn't fix the bug, but by
allocating X resources much less frequently, this should make the
bug almost never happen.

Also, it might generally be a good idea to not create/destroy X
resources so often. (XFixes Region accounts for >99% of the resource
creations/destructions)

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-30 09:17:20 +01:00
Bernd Busse
7077609c01 c2: correctly initialize new branch for combined rule 2020-08-29 16:27:56 +02:00
Yuxuan Shui
5207996232 picom-trans: fixes when setting transparency with window id
Two problems:

1) the regex used to match the wid in the window tree can match the wid
   appearing in window titles as well.
2) instead of picking the parent window of the target window to set
   transparency, a random window which is listed just below the target
   window will be chosen. not sure why was there a + 1.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-25 19:21:31 +01:00
Yuxuan Shui
933f2cfe80 diagnostics: improve driver printing
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-25 06:54:10 +01:00
Yuxuan Shui
1f65d88858 x: add more picture helper functions
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-19 23:39:50 +01:00
Yuxuan Shui
4c1360f92a render: add trapezoid helper functions
Add functions to create shapes like rectangles and circles using xcb
trapezoids.

Contributed-by: Samuel Hand <samuel.d.hand@gmail.com>
2020-08-19 23:39:35 +01:00
Yuxuan Shui
2b677c8fc4 options: support shadow-color as a commandline option
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-18 02:39:43 +01:00
Yuxuan Shui
e90bd92a53 config: remove unused shadow_color variable
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-18 02:35:57 +01:00
Yuxuan Shui
3ae21aa9a3 config: rename shadow-hex to shadow-color
It's not directly clear from the name "shadow-hex" that it's related to
color.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-08-18 02:28:01 +01:00
yshui
f99be829d1 Merge pull request #454 from adelin-b/feat/shadowHex
add shadow-hex option
2020-08-18 02:23:49 +01:00
adelin-b
a4a7b25436 config: add shadow-hex option
This allows the user to specify the shadow color via a single option,
instead of specifying red, green and blue separately.
2020-08-18 02:18:13 +01:00
yshui
6eb6a247a5 Merge pull request #428 from tryone144/better-blur-texture-sampling
Better blur texture sampling (in experimental backends)
2020-08-04 16:54:45 +01:00
yshui
3913920572 Merge pull request #457 from zilrich/patch-1
Remove deprecated options from picom.sample.conf
2020-08-04 16:09:17 +01:00
zilrich
fe27ddf8f5 update picom.sample.conf
Remove deprecated menu-opacity option from sample config.
2020-08-02 09:27:49 +00:00
Bernd Busse
7cf13906ae backend: xrender: use correct REPEAT mode when creating blur textures
Create pictures used for bluring with REPEAT attribute set to PAD (same logic
as GL_CLAMP_TO_EDGE in OpenGL). Fixes darkening at the screen edges with
larger blur radii caused by sampling out of texture bounds.

Related: 4b0ff37b36
2020-06-08 20:40:02 +02:00
Bernd Busse
88b1638487 backend: gl_common: Use linear interpolation on GPU for blur kernels.
Make use of hardware linear interpolation in a GPU to sample 2 pixels
with a single texture access inside the blur shaders by sampling between
both pixels based on their relative weight.

This is significantly easier for a single dimension as 2D bilinear
filtering would raise additional constraints on the kernels (not single
zero-entries, no zero-diagonals, ...) which require additional checks
with limited improvements. Therfore, only use interpolation along the
larger dimension should be a sufficient improvement.

Using this will effectively half the number of texture accesses and
additions needed for a kernel. E.g. a 1D-pass of the gaussian blur
with radius 15 will only need 16 samples instead of 31.
2020-06-08 20:32:46 +02:00
Bernd Busse
4b0ff37b36 backend: gl_common: Use texture2D with filtering and clamping in blur
Create texture with GL_LINEAR filtering and GL_CLAMP_TO_EDGE wrapping. Change
`texelFetch()`-call in fragement shader to `texture2D()` to be taken into
account. This requires supplying the size of a pixel in normalized texture
coordinates via an additional uniform.

Fixes darkening at the screen edges with larger blur radii caused by
sampling coordinates being out of texture bounds. This is undefined behaviour
unless the context has set the flag *GL_ARB_robust_buffer_access_behaviour*,
in which case "zero"-pixels are returned (i.e. black). Current behaviour
seems to depend on the driver.
2020-06-08 20:31:32 +02:00
yshui
fd6ff8264c Merge pull request #422 from jbeich/dragonfly
Unbreak build on DragonFly and OpenBSD
2020-06-06 15:14:14 +01:00
yshui
38b9d41f46 Merge pull request #423 from orbea/man
meson: Respect mandir.
2020-06-06 15:12:18 +01:00
yshui
00a0d27007 Merge pull request #424 from orbea/compton
meson: Allow building without compton compat.
2020-06-06 15:11:48 +01:00
orbea
c2d8072343 meson: Respect mandir. 2020-05-28 07:24:37 -07:00