Красноглазие здорового линуксоида
Jul. 26th, 2018 01:32 amК вопросу о ночной адаптации: в clutter-based менеджерах (mutter, muffin) вполне работает вот такой код.
В отличие от просто redshift'а обращается с цветами корректно, т.к. работает через промежуточный grayscale. В этом случае, например, красный текст на белом фоне будет виден, тогда как redshift покажет и красный и белый одинаковым оттенком.
Внутри просто напросто вот такой шейдер (tint это параметр):
В compton'е была еще возможность загружать шейдеры при старте (но вроде не в динамике). Вот ребята чем-то таким развлекаются. В compiz'e тоже должна быть возможность, но не в курсе насколько скриптуемая. Пользователи некомпозитных менеджеров, видимо, в пролете.
PS. Кажется, можно взять вот этот экстеншн и слегка поправить.
Clutter = imports.gi.Clutter
Main = imports.gi.Main
red = new Clutter.Color({ red: 255, green: 0, blue: 0});
eyes = new Clutter.ColorizeEffect({ tint: red });
Main.uiGroup.add_effect(eyes); // а обратно remove_effect(eyes)
В отличие от просто redshift'а обращается с цветами корректно, т.к. работает через промежуточный grayscale. В этом случае, например, красный текст на белом фоне будет виден, тогда как redshift покажет и красный и белый одинаковым оттенком.
Внутри просто напросто вот такой шейдер (tint это параметр):
float gray = dot(cogl_color_out.rgb, vec3(0.299, 0.587, 0.114))); cogl_color_out.rgb = gray * tint;
В compton'е была еще возможность загружать шейдеры при старте (но вроде не в динамике). Вот ребята чем-то таким развлекаются. В compiz'e тоже должна быть возможность, но не в курсе насколько скриптуемая. Пользователи некомпозитных менеджеров, видимо, в пролете.
PS. Кажется, можно взять вот этот экстеншн и слегка поправить.