Vdu Controls Versions Save

VDU controls - a control panel for monitor brightness/contrast/...

v2.0.3

1 week ago
  • Reduce the number of writes to VDU NVRAM by sliders, spinners, and ambient brightness adjustments.
    • Slider and spin-box controls now only update the VDU when adjustments become slow or stop (when the control value remains constant for 0.5 seconds).
    • Spin-Boxes now select the entire text on focus in (enables easier overtyping and decreases VDU updates).
    • Ambient lighting initiated changes in brightness of up to 20% are applied without any transitional steps (plus the existing code ignores updates of less than 10%).
    • Set the default ambient-light brightness adjustment-interval to 5 minutes.
  • React to DPMS awake signal from ddcutil-service by re-assessing ambient brightness.
  • Simplified locking and conformed to a lock hierarchy to avoid deadlocks.

This release is in part a response to the announced future direction for KDE6 PowerDevil where VDU DDC updates are to be minimised out of concern for VDU life span. I'm unsure how seriously to regard these concerns, but I've put in place several measures to reduce DDC updates.

v2.0.2

1 month ago

Version 2.0.2 rolls up fixes for recent issues (both bugs and enhancement requests).

  • Added a refresh annotation suffix for use with VCP-codes which cause multiple changes.
  • Make manual adjustment of the ambient Light Level more accurate and responsive.
  • When using ddcutil-server, values change as sliders are dragged (rather than only on release).
  • Fix exception on monitors that return invalid/unexpected combo-box VCP values.
  • Fix exception on monitors with blank VCP value descriptions.
  • When refresh is pressed, only auto adjust ambient brightness if auto-brightness is enabled.
  • Don't automatically refresh on error, eliminate popup dialog loops.
  • Eliminate deadlocks when exceptions occur.
  • Cleanup the initialisation of the ddcutil-service connection.
  • Add more caveats and limitations to the documentation.
  • Fix manual ambient light slider when light meter is uninitialized.
  • Promote Simple-Non-Continuous values whose metadata exceeds one-byte to two-byte Complex-NC.

v2.0.1

2 months ago

Version 2.0.1 contains addresses issues raised subsequent to Release 2.0.0:

  • Fix D-Bus client code for python versions prior to 3.11.
  • Fix infinite-loop when altering an existing FIFO lux-meter in the Lux-Dialog.
  • Fix the refresh of the LuxDialog meter-readout/plot when changing to a new meter.
  • Apply context-aware defaults to the LuxDialog device file-chooser.
  • Improve/fix the handling of displays/laptop-displays that may be detected but lack proper DDC.
  • Force the file-picker to always show devices and FIFOs - it wasn't showing then on some desktops.
  • Add some notes to the help concerning ddcutil-service, ddcutil-command.

v2.0.0

3 months ago

Ambient-Light-Level slider

I've added an Ambient-Light-Level slider - one slider for adjusting brightness on all displays.

Screenshot_20240127_095356

This slider works with the existing Lux Options that allow you to define a ambient-light to brightness mapping for each display (the existing lux options need to be enabled).

I've added an immediate-lighting-check button (stopwatch icon in bottom toolbar) and a corresponding context-menu item (when lux options are enabled).

D-Bus Interface for up to 10x faster response times.

I've written a related package: ddcutil-service, a D-Bus wrapper for libddcutil . If ddcutil-service is available, vdu_controls will use it instead of the ddcutil command.

Because the service stays running and initialized it can be up to ten times faster than issuing ddcutil commands. Control-sliders are far more responsive and act more smoothly. Restoring Presets and refreshing the interface are also much faster. The service is implemented in C which eliminates the previous shell+exec overheads incurred when running ddcutil commands.

The service provides some event detection capabilities. Depending on hardware, drivers and cabling, vdu_controls may now receive signals from the service for hotplug and DPMS events. Exactly which events are supported is subject to GPU, GPU driver limitations (AMD generally works out of the box). At a minimum, the service can fallback to polled hotplug detection (defaulting to a 30 second poll, minimum 10 seconds, so change detection by polling is not exactly swift).

Screenshot_20240129_144817

Adding the option for using the new ddcutil-service is the main reason for the version bump to 2.0. The existing code had to be refactored to support options for both the ddcutil-service and the existing ddcutil command. The the option to use DDC via the ddcutil command will remain supported, the option may be reviewed if the ddcutil-service becomes universally available.

More tweaks and icons

As usual there have been a number tweaks to the user-interface and internals, plus I've added a few more icons for use with presets.

Notes on Packaging for Distributions.

See issue #71

v1.20.0

6 months ago

This release includes enhancements that alter vdu_controls' appearance to better match your desktop:

Proportional sizing of graphical elements

Windows, icons and other graphical elements are now sized relative to your default-font height (Issue #63 and #65). In doing so, the sizing of elements will also automatically adjust for your display's DPI and take account of any high-DPI scaling.

This change obsoletes the adjust-for-dpi setting introduced in v1.12.0 which didn't properly account for scaling or 2K displays.

Options for tray icons

Two settings have been added to configure the tray-icon for monochrome desktop trays (Issue #66):

  1. monochrome-tray switches to a monochrome theme defaulting to a light on dark icon.
  2. mono-light-tray is a second switch that changes the icon to dark on light (monochrome-tray is the master switch, so both have to be enabled).

Sample captures of the tray icon options:

277579465-2e4b33e1-12bf-403d-9c38-507b7590c02c <= monochrome-tray (KDE Breeze Dark Theme) 277579149-063abe4d-bd0a-4f7b-a94b-fd60bef11f24 <= monochrome-tray + mono-light-tray (KDE Breeze Twilight Theme) 277582193-2a2b7683-382c-4715-b804-e039caa95d9a <= default tray icon (KDE Breeze Theme)

The tray theming is controlled manually to accommodate different combinations of dark/light tray/desktop theming. For example, the KDE Plasma Breeze Dark theme is dark-desktop/dark-tray, where as the KDE Plasma Breeze Twilight is light-desktop/dark-tray (automatically detecting a tray's theme in portable manner proved intractable).

When Preset-icons are overlaid onto the tray, they are altered to match. In the sample captures above, the cloud-icon is altered to match the tray-icon. (This applies SVG icons only, and only if they are drawn in black/0x000000 or the breeze dark-tone/0x232629.)

To accommodate unusual tray themes, it's now possible to override the normal tray-icon by placing an appropriate SVG file in $HOME/.config/vdu_controls/tray_icon.svg.

Other changes:

  • If a Preset has been set to transition slowly, when it's transitioning, the main UI controls and sliders now remain unlocked and can be moved to override and stop the transition.
  • Obsolete settings persisted to file will no longer appear as zombie-settings in the UI.
  • There has been considerable internal refactoring of handing of Settings and command line arguments (but no changes in functionally).

v1.12.0

7 months ago
  • Version1.12.0
    • Added an F10_key context menu shortcut to all application windows (KDE accessibility standard).
    • Set icon and pixmap sizes appropriately for Normal and High DPI (controlled by adjust-for-dpi) (issue #63).
    • Icon/device-chooser-dialog: init-time reduced from 30 to 5 seconds for users with large home folders (issue #61).
    • Improvements/Fixes to the vlux_meter.py sample-script and the related vdu_controls FIFO reader.
    • Improved visibility of the app-icon's preset-transitioning indicator and auto-lux indicator.
    • Increased contrast for generated text preset-abbreviation icons.
    • Encode translations in plain text rather than escaped XML (for easier editing).

v1.11.1

7 months ago

A small release to fix a crash that is only seen by first time users (doesn't affect existing users). Plus there are few other minor improvements.

  • Fix Preset text size in tray icon.
  • Fix occasional concurrency lockup issue in lux_metering.
  • Update the Settings Dialog when a new VDU becomes available.
  • Light-metering: show both a lux-auto indicator (an orange "LED") AND the current preset (if any) in the app icon.
  • Fix first time use crash (issue #60).
  • Allow % in config files by turning off ConfigParser interpolation (issue #60).

See the Southern Spring Release Notes for full details on what's in the Spring releases.

v1.11.0

8 months ago

This release of vdu_controls rolls up changes accumulated over the southern winter. Most of the changes stem from suggestions made by individuals on the list of acknowledgements, the fresh perspectives they've provided have been invaluable.

The majority of the changes are focused on improving usability. There has also been some refactoring for maintainability. Some work has advanced on a web-cam based lux-meter vlux_meter.

Main Window and Context Menu

  • ALT-key shortcuts have been added to the Main Window and Context-Menu (issue #13). The shortcut implementation works within the constraints set by Qt and the various Linux desktops. The available ALT-key shortcuts can be revealed by holding down ALT when in the Context Menu. The standard F1-key is an additional shortcut for help. Shortcuts are are also automatically assigned to Presets (subject to enough letters being unused/available). Here is a screenshot showing the Context_Menu when ALT is being held down: image
  • The Main Window layout has been changed to always display brightness and contrast as the first two controls for each VDU.
  • The Main Window's slider-controls are now clickable, the VDU will be immediately set to the clicked value, there is no need to drag the slider to the desired value (issue #59).
  • On gnome the Main Window can now be raised above the other sub-windows (this corrects an issue that only occurs on gnome desktops).
  • A new hide on focus out setting has been added to optionally minimize the Main Window on focus out (issue #57). This was primarily added for use when running from the system tray, but is also available generally. This setting is temporarily blocked when any dialogs, such as the Settings Dialog, are showing.

image

  • A smart window option has been added so that "smart" Main-Window placement and geometry restoration at startup can be disabled. This provides a way to return such decisions to the desktop window manager, which might have it's own placement strategies, such as place in center, place at mouse location, and so forth.
  • Changes to Preset ordering now propagate to the Context-Menu without requiring an application restart.

Settings Dialog

  • A Reset button has been added to the Settings Dialog to makes it possible to un-ignore a VDU (issue #51).
  • Tool-tips have been added to Settings Dialog major settings (related to work on issue #52).

Additional active Preset indicators

  • The Context-Menu shows an indicator suffix ◀ to mark the currently active Preset (if any) (issue #55).
  • The Preset Dialog bolds the text button of the currently active Preset (if any).
  • The application tray-icon has been un-themed so that overlaid active Preset text/icon is more visible (issue #55).

image

Presets Dialog

  • In the Presets Dialog, the Activate and Edit buttons have been combined into one button (simpler and more intuitive).
  • The dialog now detects and and warns of unsaved changes.
  • The dialog locks out any scheduled or lux-metered VDU changes while a Preset is being edited.

New default set of icons for use with Presets A starter set of Prest icons is provided in /usr/share/vdu_controls/icons (issue #56). They are a selection of LGPL KDE breeze5-icons.

image

More versions of ddcutil are now supported

  • vdu_controls is now ddcutil-2.0 ready.
  • Added support for ddcutil versions earlier than 1.3 (issue #43, #53).
  • Improved the handling of ddcutil not found (issue #48).

Command-line changes

  • The Settings Dialog and command-line arguments have been made more consistent (issue #52).
  • Each --blah option now has a corresponding --no-blah.
  • Command-line supplied values now take precedence over their Settings Dialog counterparts.
  • The command line --sleep-multiplier has been fixed so that it works (issue #54).

Miscellaneous changes

  • Popup-Messages are now resizable for increased readability.
  • The command line single-user/personal --install option can now be used to update the script.
  • Several potential crashes in the event of utf-8 decoding errors for EDID's and capabilities have been addressed (issue #49).
  • When debugging is enabled, stack-traces will be logged for several kinds of errors (issue #49).
  • The code has been refactored to improve maintainability and run-time efficiency (issue #52).
  • Added Deepin 23 pyqt library compatibility.
  • Numerous other minor enhancements and fixes.

Alpha version of vlux_meter.py

  • An alpha release of vlux_meter.py, a system-tray webcam lux-meter, has been included in the sample scripts folder:

image

  • Key features present in the image above:
  1. Approximate lux value based on mapping the current webcam brightness:
    • the value is written to output FIFO $HOME/.cache/vlux_fifo
    • the FIFO can read by vdu_controls.
  2. Brightness to Lux mapping sliders with guidance on appropriate values for different ambient conditions.
  3. Selected video device.
  4. Mouse selected brightness sampling crop area, pick a target crop most suitable for measuring ambient light levels.
  5. System tray icon.
  • More info on webcam lux metering here

v1.10.2

11 months ago

Version 1.10.2

  • Fix Preset non-zero transition-step-seconds, so it works properly.
  • Changing log-to-syslog or log-debug-enabled no longer requires a restart.
  • Fix Lux Auto menu icon when starting with Auto disabled.
  • Use the progress bar area on the main panel for status messages.
  • Make auto brightness behave more predictably by removing unnecessary constraints on interpolation.
  • Improve auto-lux/preset tray icon interaction, better reflect actions and current state.

v1.10.1

1 year ago

Version 1.10.1

  • Restart the lux displayed-value updates when restoring the LuxDialog window.
  • Minor fixes to reduce and improve displayed and logged messages.

See the 1.10.0 Release Notes for further details on the Light Metering Edition

Full Changelog: https://github.com/digitaltrails/vdu_controls/compare/v1.10.0...v1.10.1