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:
- Kanshi to manage the monitor resolution and refresh rate,
- swayidle to detect when the user is away to lock the screen and turn off the monitor,
- swaylock to perform the actual screen locking,
- Wayland Pipewire Idle Inhibit to keep the monitor on and the screen unlocked while watching a video, and
- wlsunset to shift the color temperature to favor red and reduce blue light in the evenings.
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.