# -*- python -*-
# This example inverts the colours and then makes the monitors
# red and dim. It is exited by running again with Blueshift's
# -r (--reset) option.
# Copyright © 2014 Mattias Andrée (maandree@member.fsf.org)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# The (zero-based) indices of the monitors (CRTC:s) to apply
# settings to. An empty list means that all monitors are used,
# but all monitors will have the same settings.
monitors = []
# These settings are lists. This is to allow you to use different
# settings on different monitors. For example, `gamma_red = [1]`,
# this means that the red gamma is 1 on all monitors. But if we
# change this to `gamma_red = [1.0, 1.1]`, the first monitor will
# have the red gamma set to 1,0 and the second monitor will have
# the red gamma set to 1,1. If you have more monitors than used
# in the settings modulo division will be used. For instance, if
# you have four monitors, the third monitor will have the same
# settings as the first monitor, and the fourth monitor will have
# the same settings as the second monitor.
# Gamma correction for the red, green and blue components, respectively.
gamma_red, gamma_green, gamma_blue = [1], [1], [1]
# Do not fade in or out
fadein_time = None
fadein_steps = None
fadeout_time = None
fadeout_steps = None
uses_adhoc_opts = True
'''
:bool `True` if the configuration script parses the ad-hoc settings
'''
# Get --reset from Blueshift ad-hoc settigns
doreset = parser.opts['--reset']
for m in range(max(1, len(monitors))):
# Remove settings from last run.
start_over()
if not doreset:
# Invert colours.
cie_invert()
# Make the screen red by removing other colours.
rgb_brightness(1, 0, 0)
# Dim the screen.
cie_brightness(0.25)
# Apply gamma correction to monitor.
r = gamma_red [m % len(gamma_red)]
g = gamma_green[m % len(gamma_green)]
b = gamma_blue [m % len(gamma_blue)]
clip()
gamma(r, g, b)
# Flush settings to monitor.
if len(monitors) == 0:
(drm if ttymode else randr)()
else:
(drm if ttymode else randr)(monitors[m % len(monitors)])