Desktop Panel for Wayland

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, IST 799 (Thesis)
Locality: Main campus and/or remote

Purpose

Our lightweight desktop environment currently uses the Labwc Wayland compositor, but it does not include its own desktop panel. The desktop panel is the part of the desktop that usually runs along the bottom and contains the main menu (the Start Menu on Windows). At the moment, we're borrowing the panel from LXQt, which introduces some extra dependencies that need to be installed. It would therefore be desirable to have a custom panel coded in Python and Qt for Python (PySide6) to make it easy for future students to explore and modify.

In order to implement the panel properly, it will be necessary to generate bindings for LayerShellQt, which allows a Qt widget or window to speak the wlroots layer shell protocol in order to position itself correctly on the screen. An existing project to create Python bindings already exists under a compatible license, although it might need to be updated for recent Qt versions. I have also written code that can theoretically communicate with the Wayland compositor in order to speak the necessary protocols to manage windows and perform similar tasks. However, this code still needs to be tested, and it likely contains quite a few bugs.

Scope of Work

Create a desktop panel using Python, PySide6 (Qt for Python), and LayerShellQt. Develop a standard set of panel elements, including a start menu, window switcher, system tray, and clock. Test and debug the Wayland interface code that already exists (otherwise, the panel design is a greenfield project). Potentially add more elements, such as weather display, system monitoring, and other helpful widgets.

At the thesis level, the usability and human interface design for the panel will need to be studied. A somewhat unique panel might result from this work. At the undergraduate or graduate project (IST 659) level, it is sufficient to borrow the design of an existing panel (for example, from LXQt, Xfce, KDE Plasma, or another desktop environment).

Related Research

A customized working panel could be one component of a system designed for accessibility by users with disabilities. Design decisions in the panel could be made to facilitate use with screenreaders. The techniques used to launch and manage desktop applications could also be extended to support a "desktop" that does not require (or utilize) a visual output (e.g. for sight-impaired users).