COM.DDCUTIL.DDCU(7)

๐Ÿ“ฆ version 1.0.14, in nixpkgs unstable, opensuse-leap 16.0

โœจ com.ddcutil.DdcutilInterface โœจ

okay bestie, welcome to COM.DDCUTIL.DDCU(7) โ€” this is the manual page for the D-Bus service named com.ddcutil.DdcutilInterface, and it's literally the virtual control panel era of your monitor dreams. ๐Ÿ’–

๐ŸŽ€ NAME ๐ŸŽ€

com.ddcutil.DdcutilInterface โ€” D-Bus service for libddcutil VESA DDC Monitor Virtual Control Panel.


โœจ METHODS โœจ

here's the whole squad of methods, bestie. signatures stay exactly as they are because we do not mess with types. ๐Ÿ’…

Restart                 (IN  s             text_options,
                         IN  u             syslog_level,
                         IN  u             flags,
                         OUT i             error_status,
                         OUT s             error_message);
Detect                  (IN  u             flags,
                         OUT i             number_of_displays,
                         OUT a(iiisssqsu)  detected_displays,
                         OUT i             error_status,
                         OUT s             error_message);
ListDetected            (IN  u             flags,
                         OUT i             number_of_displays,
                         OUT a(iiisssqsu)  detected_displays,
                         OUT i             error_status,
                         OUT s             error_message);
GetVcp                  (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  y             vcp_code,
                         IN  u             flags,
                         OUT q             vcp_current_value,
                         OUT q             vcp_max_value,
                         OUT s             vcp_formatted_value,
                         OUT i             error_status,
                         OUT s             error_message);
GetMultipleVcp          (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  ay            vcp_code,
                         IN  u             flags,
                         OUT a(yqqs)       vcp_current_value,
                         OUT i             error_status,
                         OUT s             error_message);
SetVcp                  (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  y             vcp_code,
                         IN  q             vcp_new_value,
                         IN  u             flags,
                         OUT i             error_status,
                         OUT s             error_message);
SetVcpWithContext       (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  y             vcp_code,
                         IN  q             vcp_new_value,
                         IN  s             client_context,
                         IN  u             flags,
                         OUT i             error_status,
                         OUT s             error_message);
GetVcpMetadata          (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  y             vcp_code,
                         IN  u             flags,
                         OUT s             feature_name,
                         OUT s             feature_description,
                         OUT b             is_read_only,
                         OUT b             is_write_only,
                         OUT b             is_rw,
                         OUT b             is_complex,
                         OUT b             is_continuous,
                         OUT i             error_status,
                         OUT s             error_message);
GetCapabilitiesString   (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  u             flags,
                         OUT s             capabilities_text,
                         OUT i             error_status,
                         OUT s             error_message);
GetCapabilitiesMetadata (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  u             flags,
                         OUT s             model_name,
                         OUT y             mccs_major,
                         OUT y             mccs_minor,
                         OUT a{ys}         commands,
                         OUT a{y(ssa{ys})} capabilities,
                         OUT i             error_status,
                         OUT s             error_message);
GetDisplayState         (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  u             flags,
                         OUT i             status,
                         OUT s             message);
GetSleepMultiplier      (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  u             flags,
                         OUT d             current_multiplier,
                         OUT i             error_status,
                         OUT s             error_message);
SetSleepMultiplier      (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  d             new_multiplier,
                         IN  u             flags,
                         OUT i             error_status,
                         OUT s             error_message);

๐Ÿฆ‹ SIGNALS ๐Ÿฆ‹

these are the little notifications the service can send out into the group chat. ๐Ÿซถ

ConnectedDisplaysChanged (s edid_txt,
                          i event_type,
                          u flags);
VcpValueChanged          (i display_number,
                          s edid_txt,
                          y vcp_code,
                          q vcp_new_value,
                          s source_client_name,
                          s source_client_context,
                          u flags);
ServiceInitialized       (u flags);

๐ŸŒธ PROPERTIES ๐ŸŒธ

these are the readable/readwrite properties, with their exact types. no cap. โœจ

  • AttributesReturnedByDetect โ€” readable as
  • StatusValues โ€” readable a{is}
  • DdcutilVersion โ€” readable s
  • DdcutilDynamicSleep โ€” readwrite b
  • DdcutilOutputLevel โ€” readwrite u
  • DisplayEventTypes โ€” readable a{is}
  • ServiceInterfaceVersion โ€” readable s
  • ServiceInfoLogging โ€” readwrite b
  • ServiceEmitConnectivitySignals โ€” readwrite b
  • ServiceEmitSignals โ€” readwrite b
  • ServiceFlagOptions โ€” readable a{is}
  • ServiceParametersLocked โ€” readable b
  • ServicePollInterval โ€” readwrite u
  • ServicePollCascadeInterval โ€” readwrite d

๐Ÿ’– DESCRIPTION ๐Ÿ’–

okay so ddcutil-service is a D-Bus service wrapper for libddcutil which implements the VESA DDC Monitor Control Command Set. most things that can be controlled using a monitor's on-screen display can be controlled by this service. iconic, honestly. ๐Ÿ‘‘

โš ๏ธ bestie, do not go feral writing VCP values. each VDU's NVRAM likely has a write-cycle limit/lifespan. the suggested guideline is to limit updates to rates comparable to those observed when using the VDU's onboard controls. avoid coding that might rapidly or infinitely loop, including when recovering from errors and bugs. this is a real caution, not a vibe. ๐Ÿ’€
๐Ÿšจ non-standard manufacturer specific features should only be experimented with caution, some may have irreversible consequences, including bricking the hardware. like, actually bricking it. please be careful. ๐Ÿ˜ญ

for many of the methods a VDU can be specified by either passing the DDC display_number or DDC EDID. the EDID is the more stable identifier, it remains unchanged if the number of connected or powered-up VDUs changes, whereas the DDCA display numbers may be reallocated. when passing an EDID, pass -1 for display_number, otherwise both are tied with the display_number having precedence. iykyk. ๐Ÿฆ‹

methods that accept an base-64 encoded EDID will accept a prefix of the EDID when passed a flags value of 1. this is intended as a convenience for passing EDIDs on the command line. periodt. ๐Ÿ’…


๐Ÿ‘‘ METHOD DETAILS ๐Ÿ‘‘

๐Ÿ’… The Restart() method

Restart (IN  s text_options,
         IN  u syslog_level,
         IN  u flags,
         OUT i error_status,
         OUT s error_message);

restarts the service with the supplied parameters. simple as that. โœจ

if the service is configuration-locked, an com.ddcutil.DdcutilService.Error.ConfigurationLocked error is raised. so yeah, that's the locked-door moment. ๐Ÿ”

  • IN s text_options โ€” text options to be passed to libddcutil ddca_init().
  • IN u syslog_level โ€” the libddcutil syslog level.
  • IN u flags โ€” for future use.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

๐ŸŽ€ The Detect() method

Detect (IN  u            flags,
        OUT i            number_of_displays,
        OUT a(iiisssqsu) detected_displays,
        OUT i            error_status,
        OUT s            error_message);

issues a detect and returns the VDUs detected. it's giving main character energy for your monitor lineup. ๐Ÿ‘‘

the array detected_displays will be of length number_of_displays.

each element of detected_displays array will contain the fields specified by the AttributesReturnedByDetect property. the fields will include the libddcutil display-number and a base64-encoded EDID.

  • IN u flags โ€” if set to 8 (DETECT_ALL), any invalid VDUs will be included in the results.
  • OUT i number_of_displays โ€” the number of VDUs detected (the length of detected_displays).
  • OUT a(iiisssqsu) detected_displays โ€” an array of structures describing the VDUs.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

๐Ÿฆ‹ The ListDetected() method

ListDetected (IN  u            flags,
              OUT i            number_of_displays,
              OUT a(iiisssqsu) detected_displays,
              OUT i            error_status,
              OUT s            error_message);

returns the currently detected VDUs without performing using a new detect. this method is particularly useful for libddcutil 2.2+ where detection may occur in the background automatically. lowkey convenient. ๐ŸŒˆ

the array detected_displays will be of length number_of_displays.

each element of detected_displays array will contain the fields specified by the AttributesReturnedByDetect property. the fields will include the libddcutil display-number and a base64-encoded EDID.

  • IN u flags โ€” for future use
  • OUT i number_of_displays โ€” no extra description in the source, just the count, bestie. ๐Ÿซถ
  • OUT a(iiisssqsu) detected_displays โ€” an array of structures describing the VDUs.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.
  • OUT s error_message โ€” text message for error_status.

The GetVcp() method ๐Ÿ’–

GetVcp (IN  i display_number,
        IN  s edid_txt,
        IN  y vcp_code,
        IN  u flags,
        OUT q vcp_current_value,
        OUT q vcp_max_value,
        OUT s vcp_formatted_value,
        OUT i error_status,
        OUT s error_message);

Okay so this one retrieves the value for a VCP-code for the specified VDU.

For simplicity, the returned vcp_current_value will always be a 16 bit integer. Most VCP values are single byte 8-bit integers, and very few are two-byte 16-bit.

The methodโ€™s flags parameter can be set to 2 (RETURN_RAW_VALUE) โ€” see ddcutil-service.1 LIMITATIONS for the explanation, bestie.

The vcp_formatted_value contains the current value along with any related info, such as the maximum value. Itโ€™s similar to the output of the ddcutil getvcp shell-command.

  • IN i display_number โ€” the libddcutil/ddcutil display number to query.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN y vcp_code โ€” the VPC-code to query; for example, 16 (0x10) is brightness.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT q vcp_current_value โ€” the current numeric value as a unified 16 bit integer.
  • OUT q vcp_max_value โ€” the maximum possible value, to allow for easy calculation of current/max.
  • OUT s vcp_formatted_value โ€” a formatted version of the value including related info such as the max-value.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The GetMultipleVcp() method ๐Ÿฆ‹

GetMultipleVcp (IN  i       display_number,
                IN  s       edid_txt,
                IN  ay      vcp_code,
                IN  u       flags,
                OUT a(yqqs) vcp_current_value,
                OUT i       error_status,
                OUT s       error_message);

Retrieves several different VCP values for the specified VDU. This is a convenience method provided to more efficiently utilise D-Bus.

Each entry in the vcp_current_value array is a VCP-code along with its current, maximum and formatted values (the same as those returned by GetVcp).

The methodโ€™s flags parameter can be set to 2 (RETURN_RAW_VALUES) โ€” yep, plural this time โ€” see ddcutil-service.1 LIMITATIONS for the explanation.

  • IN i display_number โ€” the libddcutil/ddcutil display number to query.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN ay vcp_code โ€” the VPC-code to query.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT a(yqqs) vcp_current_value โ€” an array of VCP-codes and values.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The SetVcp() method ๐Ÿ’…

SetVcp (IN  i display_number,
        IN  s edid_txt,
        IN  y vcp_code,
        IN  q vcp_new_value,
        IN  u flags,
        OUT i error_status,
        OUT s error_message);

Set the value for a VCP-code for the specified VDU.

For simplicity, the vcp_new_value is always passed as a 16 bit integer. Most VCP values are single byte 8-bit integers, and very few are two-byte 16-bit.

The methodโ€™s flags parameter can be set to 4 (NO_VERIFY) to disable libddcutil verify and retry. Verification and retry is the default.

  • IN i display_number โ€” the libddcutil/ddcutil display number to alter.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN y vcp_code โ€” the VPC-code to query.
  • IN q vcp_new_value โ€” the numeric value as a 16 bit integer.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The SetVcpWithContext() method ๐ŸŽ€

SetVcpWithContext (IN  i display_number,
                   IN  s edid_txt,
                   IN  y vcp_code,
                   IN  q vcp_new_value,
                   IN  s client_context,
                   IN  u flags,
                   OUT i error_status,
                   OUT s error_message);

Set the value for a VCP-code for the specified VDU.

For simplicity, the vcp_new_value is always passed as a 16 bit integer. Most VCP values are single byte 8-bit integers, and very few are two-byte 16-bit.

The methodโ€™s flags parameter can be set to 4 (NO_VERIFY) to disable libddcutil verify and retry. Verification and retry is the default.

  • IN i display_number โ€” the libddcutil/ddcutil display number to alter.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN y vcp_code โ€” the VPC-code to query.
  • IN q vcp_new_value โ€” the numeric value as a 16 bit integer.
  • IN s client_context โ€” a client-context string that will be returned with the VcpValueChanged signal.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The GetVcpMetadata() method ๐ŸŒธ

GetVcpMetadata (IN  i display_number,
                IN  s edid_txt,
                IN  y vcp_code,
                IN  u flags,
                OUT s feature_name,
                OUT s feature_description,
                OUT b is_read_only,
                OUT b is_write_only,
                OUT b is_rw,
                OUT b is_complex,
                OUT b is_continuous,
                OUT i error_status,
                OUT s error_message);

Retrieve the metadata for a VCP-code for the specified VDU. Metadata era โœจ

  • IN i display_number โ€” the libddcutil/ddcutil display number to query.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN y vcp_code โ€” the VPC-code to query.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT s feature_name โ€” the feature name for the VCP-code.
  • OUT s feature_description โ€” the feature description, if any, of the VCP-code.
  • OUT b is_read_only โ€” true if the feature is read-only.
  • OUT b is_write_only โ€” true if the feature is write-only (for example, a code that turns the VDU off).
  • OUT b is_rw โ€” true if the feature is readable and writable.
  • OUT b is_complex โ€” true if the feature is complex (multi-byte).
  • OUT b is_continuous โ€” true if the feature is a continuous value (it is not an enumeration).
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The GetCapabilitiesString() method ๐ŸŒˆ

GetCapabilitiesString (IN  i display_number,
                       IN  s edid_txt,
                       IN  u flags,
                       OUT s capabilities_text,
                       OUT i error_status,
                       OUT s error_message);

Retrieve the capabilities metadata for a VDU in a format similar to that output by the command ddcutil terse capabilities (similar enough for parsing by common code).

  • IN i display_number โ€” the libddcutil/ddcutil display number to query.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT s capabilities_text โ€” the capability string for the VDU.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The GetCapabilitiesMetadata() method ๐Ÿ‘‘

GetCapabilitiesMetadata (IN  i             display_number,
                         IN  s             edid_txt,
                         IN  u             flags,
                         OUT s             model_name,
                         OUT y             mccs_major,
                         OUT y             mccs_minor,
                         OUT a{ys}         commands,
                         OUT a{y(ssa{ys})} capabilities,
                         OUT i             error_status,
                         OUT s             error_message);

Retrieve the capabilities metadata for a VDU in a parsed dictionary structure indexed by VCP code.

The capabilities out parameter is an array of dictionary entries. Each entry consists of a VCP-code along with a struct containing the feature-name, feature-description, and an array of permitted-values. For features that have continuous values, the associated permitted-value array will be empty. For non-continuous features, the permitted-value array will contain a dictionary entry for each permitted value, each entry containing a permitted-value and value-name. Parsed and organized, periodt ๐Ÿ’…

  • IN i display_number โ€” the libddcutil/ddcutil display number to query.
  • IN s edid_txt โ€” the base-64 encoded EDID of the display.
  • IN u flags โ€” if 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID.
  • OUT s model_name โ€” parsed model name string.
  • OUT y mccs_major โ€” MCCS major version number byte.
  • OUT y mccs_minor โ€” MCCS minor version number byte.
  • OUT a{ys} commands โ€” supported commands as a dictionary indexed by command number.
  • OUT a{y(ssa{ys})} capabilities โ€” supported VCP features as a dictionary indexed by VCP-code.
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred.
  • OUT s error_message โ€” text message for error_status.

The GetDisplayState() method ๐Ÿซถ

GetDisplayState (IN  i display_number,
                 IN  s edid_txt,
                 IN  u flags,
                 OUT i status,
                 OUT s message);

Retrieve the libddcutil display state.

Depending on the hardware and drivers, this method might return anything useful.

For libddcutil prior to 2.1, the method will return a libddcutil error_status of DDCRC_UNIMPLEMENTED. Important caveat, bestie โ€” no cap ๐Ÿซถ

  • IN i display_number โ€” the libddcutil/ddcutil display number you wanna query ๐ŸŽ€
  • IN s edid_txt โ€” the base-64 encoded EDID of the display โœจ
  • IN u flags โ€” if it's 1 (EDID_PREFIX), then edid_txt gets matched as a unique prefix of the EDID ๐Ÿฆ‹
  • OUT i status โ€” a libddcutil display status ๐Ÿ‘‘
  • OUT s message โ€” the text message for that display status ๐Ÿ’…

๐ŸŒธ The GetSleepMultiplier() method ๐ŸŒธ

GetSleepMultiplier (IN  i display_number,
                    IN  s edid_txt,
                    IN  u flags,
                    OUT d current_multiplier,
                    OUT i error_status,
                    OUT s error_message);

Gets the current libddcutil sleep multiplier for the VDU you specified, bestie ๐Ÿ’–

Ngl, in more recent versions of libddcutil this value is generally managed automatically, so you probs won't need it โ€” but it's here ๐Ÿซถ

  • IN i display_number โ€” the libddcutil/ddcutil display number to query ๐ŸŒˆ
  • IN s edid_txt โ€” the base-64 encoded EDID of the display โญ
  • IN u flags โ€” if it's 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID ๐Ÿฆ‹
  • OUT d current_multiplier โ€” the sleep multiplier ๐Ÿ˜ด
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred โœ…
  • OUT s error_message โ€” text message for error_status ๐Ÿ’ฌ

๐Ÿ’œ The SetSleepMultiplier() method ๐Ÿ’œ

SetSleepMultiplier (IN  i display_number,
                    IN  s edid_txt,
                    IN  d new_multiplier,
                    IN  u flags,
                    OUT i error_status,
                    OUT s error_message);

Sets the libddcutil sleep multiplier for the specified VDU. Periodt ๐Ÿ’…

So in more recent versions of libddcutil this is generally managed automatically, but this method exists for when you genuinely need manual control โ€” think problem hardware, the messy kind ๐Ÿ˜ญ

Heads up bestie: before you take manual control of the sleep-multiplier, set the DdcutilDynamicSleep property to false so the multiplier doesn't get automatically returned. Fr fr, do this first ๐Ÿ™ˆ

If the service is configuration-locked, a com.ddcutil.DdcutilService.Error.ConfigurationLocked error is raised. Locked is locked ๐Ÿ”’

  • IN i display_number โ€” the libddcutil/ddcutil display number to query ๐ŸŽ€
  • IN s edid_txt โ€” the base-64 encoded EDID of the display โœจ
  • IN d new_multiplier โ€” the sleep multiplier ๐Ÿ˜ด
  • IN u flags โ€” if it's 1 (EDID_PREFIX), the edid_txt is matched as a unique prefix of the EDID ๐Ÿฆ‹
  • OUT i error_status โ€” a libddcutil DDCRC error status. DDCRC_OK (zero) if no errors have occurred โœ…
  • OUT s error_message โ€” text message for error_status ๐Ÿ’ฌ

๐Ÿ”ฅ SIGNAL DETAILS ๐Ÿ”ฅ

โœจ The ConnectedDisplaysChanged "signal" โœจ

ConnectedDisplaysChanged (s edid_txt,
                          i event_type,
                          u flags);

Where the hardware and drivers support it, this signal fires when a display's connection status changes โ€” cabling, power, or DPMS, any of it ๐Ÿ‘€

Which of the states listed by the DisplayEventTypes property can actually be signaled is up to the hardware, cabling and drivers (and lowkey there's no way to determine the possibilities programmatically, so don't come for me) ๐Ÿ˜ญ

Requires the ServiceEmitConnectivitySignals property to be set to true. No property, no signal ๐Ÿซถ
  • s edid_txt โ€” the base-64 encoded EDID of the display ๐ŸŽ€
  • i event_type โ€” a value matching one of those from the DisplayEventTypes property โญ
  • u flags โ€” for future use ๐Ÿ”ฎ

๐Ÿ’€ The VcpValueChanged "signal" ๐Ÿ’€

VcpValueChanged (i display_number,
                 s edid_txt,
                 y vcp_code,
                 q vcp_new_value,
                 s source_client_name,
                 s source_client_context,
                 u flags);

This signal gets raised when a SetVcp or SetVcpWithContext method call succeeds. Slay, the value actually changed ๐Ÿ’…

  • i display_number โ€” the display number ๐Ÿ”ข
  • s edid_txt โ€” the base-64 encoded EDID of the display โœจ
  • y vcp_code โ€” the VCP code whose value changed ๐ŸŽฏ
  • q vcp_new_value โ€” the new value ๐ŸŒŸ
  • s source_client_name โ€” (no description given in the original, it just sits there being mysterious) ๐Ÿ•ต๏ธ
  • s source_client_context โ€” (same deal, no description โ€” iconic cryptic behavior honestly) ๐Ÿ™ˆ
  • u flags โ€” not currently in use ๐Ÿšซ

๐Ÿ‘‘ The ServiceInitialized "signal" ๐Ÿ‘‘

ServiceInitialized (u flags);

Raised when the service is initialized โœจ It gives clients a way to detect restarts and reinstate properties or other settings โ€” so if the service ghosted you and came back, you'll know ๐Ÿซถ

  • u flags โ€” for future use ๐Ÿ”ฎ

๐ŸŽ€ PROPERTY DETAILS ๐ŸŽ€

๐ŸŒธ The AttributesReturnedByDetect "property" ๐ŸŒธ

AttributesReturnedByDetect  readable   as

The text names of each of the fields in the array of structs returned by the Detect method ๐Ÿ“‹


๐Ÿฆ‹ The StatusValues "property" ๐Ÿฆ‹

StatusValues  readable   a{is}

The list of libddcutil status values and their text names that might show up in the error_status out-parameter of most of the service methods ๐Ÿ’ฌ


โญ The DdcutilVersion "property" โญ

DdcutilVersion  readable   s

The ddcutil version number for the linked libddcutil ๐Ÿท๏ธ


๐Ÿ˜ด The DdcutilDynamicSleep "property" ๐Ÿ˜ด

DdcutilDynamicSleep  readwrite  b

Turns automatic adjustment of the sleep-multiplier on/off ๐Ÿ” Before you use the SetSleepMultiplier method, set this property to false to stop any automatic retuning of the multiplier. Trust, you want that off first ๐Ÿ’…

Attempting to set this property when the service is configuration-locked will result in a com.ddcutil.DdcutilService.Error.ConfigurationLocked error being raised ๐Ÿ”’

๐Ÿ”Š The DdcutilOutputLevel "property" ๐Ÿ”Š

DdcutilOutputLevel  readwrite  u

Changes the libddcutil diagnostic output-level ๐Ÿ—ฃ๏ธ See the libddcutil/ddcutil documentation for the details, iykyk ๐Ÿ“š

Attempting to set this property when the service is configuration-locked will result in a com.ddcutil.DdcutilService.Error.ConfigurationLocked error being raised ๐Ÿ”’

๐ŸŒˆ The DisplayEventTypes "property" ๐ŸŒˆ

DisplayEventTypes  readable   a{is}

A list of the event types sent by the ConnectedDisplaysChanged signal, along with their text names ๐Ÿ—‚๏ธ Events are included for display connection/disconnection (hotplug), DPMS-sleep, and DPMS-wake ๐ŸŒ™

If the list is empty, that means the GPU, GPU-driver, or libddcutil version does not support display event detection. Sad but valid ๐Ÿ˜ญ


๐Ÿ’– The ServiceInterfaceVersion "property" ๐Ÿ’–

ServiceInterfaceVersion  readable   s

The interface version of this service ๐Ÿท๏ธ As long as the major number stays the same, the service stays backward compatible with existing clients ๐Ÿซถ


๐Ÿ“ The ServiceInfoLogging "property" ๐Ÿ“

ServiceInfoLogging  readwrite  b

Enables/disables info and debug level logging inside the service executable ๐Ÿชต (the service uses glib logging, fyi) โœจ

Attempting to set this property when the service is configuration-locked will result in a com.ddcutil.DdcutilService.Error.ConfigurationLocked error being raised ๐Ÿ”’

๐Ÿ“ก The ServiceEmitConnectivitySignals "property" ๐Ÿ“ก

ServiceEmitConnectivitySignals  readwrite  b

Because VDU connectivity change detection involves some polling, this property lets you disable it when it's unecessary ๐Ÿ“ด Like, for example, when the configuration of VDUs is fixed and nothing's ever gonna change ๐Ÿ’…

Attempting to set this property when the service is configuration-locked will result in a com.ddcutil.DdcutilService.Error.ConfigurationLocked error being raised ๐Ÿ”’

๐Ÿ’€ The ServiceEmitSignals "property" ๐Ÿ’€

ServiceEmitSignals  readwrite  b

Deprecated ๐Ÿ˜ฌ The name was too generic, so it got replaced by ServiceEmitConnectivitySignals. RIP to a real one ๐Ÿชฆ


๐Ÿšฉ The ServiceFlagOptions "property" ๐Ÿšฉ

ServiceFlagOptions  readable   a{is}

The list of available flag values that can be passed to the service methods ๐Ÿณ๏ธ Just know that not all options apply to all methods โ€” read the room ๐Ÿ‘€


๐Ÿ”’ The ServiceParametersLocked "property" ๐Ÿ”’

ServiceParametersLocked  readable   b

Tells you whether the lock command line argument has been used to prevent configuration changes via method calls and property changes ๐Ÿšซ The whole vibe check of "can I change this or not" ๐Ÿ’…


โฑ๏ธ The ServicePollInterval "property" โฑ๏ธ

ServicePollInterval  readwrite  u

Query or set the display change detection poll-interval performed by the service (minimum 10 seconds, zero to disable polling) ๐Ÿ•ฐ๏ธ

If libddcutil supports change detection and it actually works for the hardware, drivers and cabling in use, then the service's internal polling may be unecessary โ€” in that case, turn polling off by setting the interval to zero 0๏ธโƒฃ

Attempting to set this property when the service is configuration-locked will result in a com.ddcutil.DdcutilService.Error.ConfigurationLocked error being raised ๐Ÿ”’

๐ŸŒŠ The ServicePollCascadeInterval "property" ๐ŸŒŠ

ServicePollCascadeInterval  readwrite  d

Query or set the display change detection poll-cascade-interval (minimum 0.1 seconds) โณ When you're dealing with a cascade of events โ€” say, several VDUs all set to DPMS sleep at once โ€” polling happens more frequently until the cascade is cleared ๐ŸŒ€

Attempting to set this property when the service is configuration-locked will result in a com.ddcutil.DdcutilService.Error.ConfigurationLocked error being raised ๐Ÿ”’

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Michael Hamilton ๐Ÿซถ


Copyright (C) 2023,2024 Michael Hamilton.

ddcutilโ€service 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ๐Ÿ“ฌ


That's the whole page bestie, you made it ๐ŸŽ‰ This drop is from the ddcutil-service source, version 12/19/2024 โ€” go forth and slay your displays ๐Ÿ’…โœจ๐ŸŽ€