Add a color blindness simulation shader as KWin plugin.
This simulates typical forms of blindness and helps making applications work despite them.
Details
Diff Detail
- Repository
- R108 KWin
- Branch
- arcpatch-D7832
- Lint
No Linters Available - Unit
No Unit Test Coverage
Fix license/copyright header of the shader, and document where we got that code from.
Honestly I'm not sure whether this makes sense to include into KWin directly. While it's a nice gimmick I don't think it's something we should ship with default offerings. Is that really something every user needs in a default setup? This might be handy for development setup, but not in general to ship.
Given that I'm against including that into KWin. Furthermore this adds a certain cost for the maintainers of KWin. Shader based binary effects are those which cause most issues when evolving the code. This is something I'm not willing to burden on myself for a gimmick.
I suggest to use the good old KWin binary effect plugin API which still exists and make this a standalone plugin outside the KWin source tree.
effects/colorsimulation/data/1.40/colorsimulation.frag | ||
---|---|---|
5–11 | This is incompatible with KWin's license. I'm not willing to give up the option to have KWin under GPLv2-only. As KWin links in the effects this would put KWin under GPLv3+. So far any code in KWin which requires GPLv3 was optional and could be removed at build and runtime. |
Yes, it is primarily a developer tool, so I understand your concerns. Sounds like our assumption that shader-based effects can't be done with scripting was correct though, this will need a binary plugin, right? We'll look for a different place to put this then.
The license is indeed sub-optimal, but it was hard enough to find a free and comprehensive implementation of this to begin with, so we will need to live with that I'm afraid. Outside of kwin this shouldn't be a problem though.
Yes, shader-based effects need to be binary and yes it needs to be a binary plugin. An example is in kwin/autotests/fakeeffectplugin*