Display Configuration Tools

Summary

Mentor(s): Dr. Mike Murphy
Project Type: Software development and engineering; user interface design
Technologies: Python, Qt (PySide6 and Qt Designer), Git
Undergraduate Credit: CSCI 399, CSCI 490
Graduate Credit: IST 659
Locality: Main campus and/or remote

Purpose

A major design objective of the lightweight desktop implementation is to maintain loose coupling between software components. Thus, instead of having one monolithic software application that performs a bunch of unrelated tasks, we instead use smaller applications to break up the tasks. For example, for managing the display (monitor output) settings, we can use:

Each of the above applications performs a single, cohesive function, and all are independent (loosely coupled) from each other. Taken together, these applications have nice properties from a software engineering perspective. However, there are some issues in terms of configuration usability for an average user. Each application has its own configuration file, with its own file format, which must be edited to change the settings for that particular component. In a desktop environment, the user generally expects to have some sort of display control panel available for making all these settings in one place.

Scope of Work

Design and implement a graphical control panel that makes it easy to configure system display settings. Leverage existing components that can perform the underlying functions where possible (for example, don't create a new screen locking application unless it is necessary). Architect the control panel so that not all underlying components must be installed for the control panel to work (for example, if the user has no need for power management or screen locking, the idle detection and locking components might not be installed). Ensure that the resulting control panel is easy to use.

In addition, provide a command-line only tool that can switch display configurations without having to use the graphical control panel. This tool could be configured to run whenever the display switch hotkey (on a laptop) is pressed, although the actual configuration for the hotkey is outside the scope of this project.