Commit Graph

58 Commits

Author SHA1 Message Date
Arda Atci
9f14c43989 Merge pull request #18 from yshui/next
merge yshui/next
2023-02-04 05:49:58 +03:00
Maxim Solovyov
986b3c1cb3 core: drop xinerama
there are two x extensions for working with monitors (especially
multiple): xinerama and randr. xinerama is old, feature-poor and in
general isn't used anymore compared to the randr: new, feature-rich and
widely-used. for some reason we were using both of them, so let's drop
xinerama to keep things simple, clean and small. and to be modern.

the drop was done in three steps:
* first step was to replace all the xinerama-based code with the
  randr-based one and to replace or remove all the xinerama mentions;
* second step was to replace the xinerama's terminology with the
  randr's one. xinerama was referring only to the word "screen", while
  randr refers to multiple words and i think the word "monitor" is the
  most suitable for us and, hopefully, clear both to a contributor and
  to an end user;
* third step was to refactor the new randr-based code if needed and to
  address related todo's (mostly about moving related functions
  elsewhere).

all the steps were done well except addressing a leftover todo about
moving the win_update_monitor function to the x.c which wasn't done.

the xinerama-shadow-crop option was renamed to crop-shadow-to-monitor,
but it's previous name is still accepted, has effect and the
deprecation message is printed to preserve backwards-compatibility.
2023-01-29 10:51:12 +03:00
Arda Atci
223533acec fixed open window type anim, closes #12 2023-01-23 02:31:51 +03:00
Arda Atci
f6b0b04f5b picom upto date sync with yshui, full anim support 2022-10-04 00:24:05 +03:00
Yuxuan Shui
7e607bfe81 Make experimental backends the new default
Experimental no longer.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2022-08-21 06:09:27 +01:00
Yuxuan Shui
654772b8cf config: add options window-shader-fg and window-shader-fg-rules
Used for setting custom window shaders and rules for choosing custom
window shaders.

Added a "c2_userdata_free" parameter to c2_list_free, so allocated userdata
stored in nodes can be freed.

Signed-off-by: Bernd Busse <bernd@busse-net.de>
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2022-08-11 04:28:48 +01:00
Yuxuan Shui
bcbc410c92 Deprecate the refresh-rate options
It's meaningless without the sw-opti option, which has been deprecated
since v6.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2022-01-24 18:35:45 +00:00
Yuxuan Shui
51da5d3ad4 Formally deprecated the sw-opti option
It was deprecated in v6, but wasn't formally deprecated back then (e.g.
no warnings were printed for it). So formally deprecate it here.

This also left the refresh-rate option unused, so that will be
deprecated too.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2022-01-24 18:15:06 +00:00
Bernd Busse
4b5cc050d5 Add clip-shadow-above configuration and wintype option
Added the new `clip-shadow-above` configuration and wintype option.
These allow the user to select windows to clip from the shadow region of
other windows, i.e. don't paint shadows on top of them.

This should provide a more useful and userfriendly alternative to the
deprecated `shadow-exclude-reg` option — especially for docks and bars.
2021-07-14 14:43:28 +02:00
yshui
bb54da0039 Merge pull request #544 from niacat/ctype
Cast argument to ctype functions to unsigned char

Fix `-Wchar-subscripts` warnings on NetBSD
2020-11-30 22:42:46 +00:00
Yuxuan Shui
69d4199daa Add rounded-corners-exclude configuration option
Allows the user to selectively disable rounded corners.

Authored-by: Samuel Hand <samuel.d.hand@gmail.com>
2020-11-30 00:35:40 +00:00
Samuel Hand
e20b187912 options: add corner-radius
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-11-30 00:31:52 +00:00
nia
b14e85a6bc Cast argument to ctype functions to unsigned char
Per POSIX, "The c argument is an int, the value of which the application
shall ensure is a character representable as an unsigned char or equal
to the value of the macro EOF. If the argument has any other value, the
behavior is undefined."

https://pubs.opengroup.org/onlinepubs/009604499/functions/isspace.html

Signed-off-by: Nia Alarie <nia@NetBSD.org>
2020-11-19 12:19:35 +01:00
Bernd Busse
fb3760bbe3 config: add wintypes option blur-background 2020-10-01 23:28:05 +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
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
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
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
Yuxuan Shui
ee35bd873a win: always track property changes
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-29 19:15:07 +01:00
Yuxuan Shui
0fa0c35230 config: set a default value for blur_radius
Update the man page to include the default values of the blur config.

Fixes #347

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2020-03-21 17:00:51 +00:00
Bernd Busse
df1a852442 Add support for documented --blur-* options
Handle parsing of `--blur-method`, `--blur-size` and `--blur-deviation`
in config file and as command line options as documented in the manpage.
2020-01-17 16:25:02 +01:00
Rytis Karpuska
ec76c5f286 parameterize max brightness limit 2019-11-09 17:56:38 +02:00
Yuxuan Shui
2d28ab6032 options: remove --respect-prop-shadow
A quick search on GitHub showing the _COMPTON_SHADOW is actively being
used (most noteably, by polybar). It is not a difficult thing to support,
and it doesn't have that much runtime overhead. So remove the option
that guards this feature, make it enabled by default.

(Side note, I saw lots of people putting this option in their config
files, but this is actually a command line only option.)

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-10-22 20:45:21 +01:00
Yuxuan Shui
93f0d80572 options: enable use-damage by default
Since user reports indicate it has real performance benefits.

Also add a command line flag for turning use-damage off.

Fixes #242

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-09-29 00:52:07 +01:00
Yuxuan Shui
72cedea5a3 config: fix warning when config_file is disabled
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-07-25 02:46:46 +01:00
Tasos Sahanidis
93642e537f Add --no-ewmh-fullscreen
This arg reverts to the old behaviour of checking for fullscreen
windows.
2019-07-19 14:13:41 +03:00
Yuxuan Shui
1da726047a new backend: don't assume center of blur kernel is 1
Also fill the center of parsed kernel with 1. This shouldn't change the
behavior of the old backends since they will modify the center of the
kernels.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-09 01:03:37 +01:00
Yuxuan Shui
fa8faaf91d Remember the number of blur kernels
Don't count the number of blur kernels everytime.

Fixes #188

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-07 22:21:06 +01:00
Yuxuan Shui
abb089e605 Lift the MAX_BLUR_PASS limit
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-07 07:04:50 +01:00
Yuxuan Shui
82b9822fd0 config: introduce new syntax for blur options.
Parsing only, not used yet.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-06-01 00:39:00 +01:00
Yuxuan Shui
4a74b4f199 Move default values of options to config.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-27 23:00:12 +01:00
Yuxuan Shui
8cfa750a6d config: fix grammar 2019-05-21 20:15:28 +01:00
Yuxuan Shui
0037b7e5fb Eliminate implicit conversions
Use explicit conversions everywhere. Adding bounds check assertions when
necessary.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-05-21 20:15:25 +01:00
Yuxuan Shui
22da17630f Run clang-format
Now we have a consistent style across the codebase.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-03-10 12:35:38 +00:00
Yuxuan Shui
a5e3837f6d Fix typo
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-20 01:45:34 +00:00
Yuxuan Shui
2e2e8e3ce0 Use struct conv for blur kernel as well
Instead of storing them as an array of xfixed.

Might cause some performance overhead for the new backend, because
it is allocating a buffer to do the conversion every frame. Will fix
later.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-20 01:39:43 +00:00
Yuxuan Shui
465a968ddd Parse number locale-independently
Previously we were using glibc's strtod function to parse floating point
numbers. The problem is, strtod is locale dependent. Meaning 7,7 might
be parsed as two numbers (7 and 7) in one locale, and parsed as one
number (7 point 7) in another locale. This is undesirable.

We need to set the locale to a value we know to make number parsing
consistently. We could use setlocale(), but that is not thread-safe. We
can also use uselocale(), which is thread-safe, but doesn't cover strtod
(Yeah, some of the locale-aware functions only acknowledge the global
locale, not the thread local one).

So in frustration, I just wrote a simple floating point number parser
myself. This parser obviously doesn't cover all cases strtod covers, but
is good enough for our needs.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-02-02 01:28:15 +00:00
Yuxuan Shui
f649a949e2 Even more includes
Expand the modulemap to cover some of the system headers too.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-20 22:09:22 +00:00
Yuxuan Shui
916e23861a Improve the header includes, cont'd
Also check in the modulemap file, and add a option to build with clang's
-fmodules.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2019-01-20 17:10:06 +00:00
Yuxuan Shui
f41765fca5 Refactor setting the default winopts
Move filling winopts with default values to after command line options have
been parsed, not after parsing the config file. This is more intuitive.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-24 19:57:16 +00:00
Yuxuan Shui
cb7d852b0f Clean up options/config file parsing
* Pass a options_t, not session_t
* Slightly improve error handling when setting vsync method via dbus

The goal here is to limit the scope of what a given function can access.
And session_t contains basically everything, so don't pass it around.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-21 17:21:52 +00:00
Yuxuan Shui
a6fef8e8fb Convert printf_* from config.c and config_libconfig.c
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-20 17:35:45 +00:00
Yuxuan Shui
22669889eb Don't report allocation failure via logging
They will be reported by allocchk and will abort the program. There is
no point to log them.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-20 14:23:06 +00:00
Yuxuan Shui
b8912fa749 Use checked allocation everywhere
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-15 18:57:46 +00:00
Yuxuan Shui
acb81bc9a9 Add log.h to files that need it
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-15 17:53:17 +00:00
Yuxuan Shui
0cebbc370a Function movements
* string functions mstr*() are moved to string_utils.c
* allocation wrappers are moved to utils.h
* printf_* functions are moved to log.h

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-15 17:43:36 +00:00
Yuxuan Shui
f83eb79c05 Add wintype option redir-ignore.
This cause certain window types to be ignored in deciding whether the
screen should be redirected after being unredirected.

Fixes #58

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-04 16:36:49 +00:00
Yuxuan Shui
8f05b03411 Move the initialization of wintype options into common function
Make sure the wintype options are properly initialized even when there
is no config file specified/supported.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-12-04 16:29:32 +00:00
Yuxuan Shui
45a260b433 Print warning messages for multipass blur
Multipass blur is not properly implemented for xrender backend. There is
visible artifacts when it is used. And it is quite difficult to
implement correctly and efficiently for the xrender backend.

Print a warning message for multipass blur so we can survey whether it
is actually been used.

No functionality is removed in this commit.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
2018-11-10 14:57:41 +00:00