gdctl: Allow setting color mode
This allows configuring a monitor to enter BT.2100 a.k.a. HDR mode. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4192>
This commit is contained in:
parent
53ae155e03
commit
b674048184
@ -134,6 +134,12 @@ MONITOR OPTIONS
|
||||
|
||||
Set the mode of the monitor.
|
||||
|
||||
``--color-mode``, ``-c``
|
||||
|
||||
Set the color mode of the monitor. Available color modes are ``default`` and
|
||||
``bt2100``.
|
||||
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
|
50
tools/gdctl
50
tools/gdctl
@ -296,6 +296,7 @@ class Monitor:
|
||||
properties: dict
|
||||
current_mode: MonitorMode | None
|
||||
preferred_mode: MonitorMode | None
|
||||
color_mode: ColorMode | None
|
||||
|
||||
@classmethod
|
||||
def from_variant(cls, variant):
|
||||
@ -320,6 +321,7 @@ class Monitor:
|
||||
)
|
||||
|
||||
display_name = properties.get("display-name", None)
|
||||
color_mode = properties.get("color-mode", None)
|
||||
|
||||
return cls(
|
||||
connector=connector,
|
||||
@ -331,6 +333,7 @@ class Monitor:
|
||||
current_mode=current_mode,
|
||||
preferred_mode=preferred_mode,
|
||||
display_name=display_name,
|
||||
color_mode=color_mode,
|
||||
)
|
||||
|
||||
|
||||
@ -715,6 +718,9 @@ def create_logical_monitor(monitors_state, layout_mode, logical_monitor_args):
|
||||
)
|
||||
|
||||
monitor.mode = mode
|
||||
monitor.color_mode = ColorMode.maybe_from_string(
|
||||
monitor_args.get("color_mode", None)
|
||||
)
|
||||
|
||||
monitors.append(monitor)
|
||||
|
||||
@ -836,10 +842,17 @@ def print_config(config):
|
||||
)
|
||||
print_data(
|
||||
level=4,
|
||||
is_last=True,
|
||||
is_last=not monitor.color_mode,
|
||||
lines=lines,
|
||||
data=f"Mode: {monitor.mode.name}",
|
||||
)
|
||||
if monitor.color_mode:
|
||||
print_data(
|
||||
level=4,
|
||||
is_last=True,
|
||||
lines=lines,
|
||||
data=f"Color mode: {monitor.color_mode}",
|
||||
)
|
||||
|
||||
index += 1
|
||||
|
||||
@ -1076,15 +1089,23 @@ class Config:
|
||||
layout_mode: LayoutMode
|
||||
|
||||
def generate_monitor_tuples(self, monitors):
|
||||
return [
|
||||
tuples = []
|
||||
for monitor in monitors:
|
||||
options = {}
|
||||
if monitor.color_mode:
|
||||
options["color-mode"] = GLib.Variant(
|
||||
"u", monitor.color_mode.value
|
||||
)
|
||||
|
||||
# Variant type: (ssa{sv})
|
||||
(
|
||||
monitor.connector,
|
||||
monitor.mode.name,
|
||||
{},
|
||||
tuples.append(
|
||||
(
|
||||
monitor.connector,
|
||||
monitor.mode.name,
|
||||
options,
|
||||
)
|
||||
)
|
||||
for monitor in monitors
|
||||
]
|
||||
return tuples
|
||||
|
||||
def generate_logical_monitor_tuples(self):
|
||||
tuples = []
|
||||
@ -1232,6 +1253,11 @@ class TransformCompleter(NamedEnumCompleter):
|
||||
super().__init__(Transform)
|
||||
|
||||
|
||||
class ColorModeCompleter(NamedEnumCompleter):
|
||||
def __init__(self):
|
||||
super().__init__(ColorMode)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = GdctlParser(
|
||||
description="Display control utility",
|
||||
@ -1333,6 +1359,14 @@ if __name__ == "__main__":
|
||||
help="Monitor mode",
|
||||
type=str,
|
||||
).completer = MonitorModeCompleter()
|
||||
monitor_parser.add_argument(
|
||||
"--color-mode",
|
||||
"-c",
|
||||
action=AppendToSubGroup,
|
||||
help="Color mode",
|
||||
choices=[str(color_mode) for color_mode in list(ColorMode)],
|
||||
type=str,
|
||||
).completer = ColorModeCompleter()
|
||||
logical_monitor_parser.add_argument(
|
||||
"--primary",
|
||||
"-p",
|
||||
|
Loading…
x
Reference in New Issue
Block a user