Applications
For Fall 2026, there are 3 open-source applications available for class projects. These are:
- TealPlay, which is a released media center application. It is known to run on Linux and might run on Windows or Mac, but neither alternate platform has been tested yet.
- TealFiler, which is a Linux file manager application. We aren't planning to port to Windows or Mac due to platform dependencies.
- TealSite, which is a static site generator that has not yet been released. As is the case with TealPlay, TealSite has been developed and tested on Linux but might (or might not) be portable to Windows or Mac.
The reference platform for all 3 applications is Alpine Linux, but the Python code is intended to be distribution-agnostic. Of these applications, TealSite has the highest priority for porting to Windows and macOS.
TealPlay Projects
TealPlay uses Qt for Python (PySide6) for its GUI toolkit. Available projects related to TealPlay include:
- Redesigning the user interface to move the library into its own window.
- Creating a graphical library browser instead of the current tree-based library.
- Adding a metadata editor to create/edit the NFO and INI sidecar files used to deliver media metadata.
- Adding a proper playlist editor with full m3u8 format support, including start time metadata support to bookmark positions in files.
- Adding a caption/lyrics editor for creating subtitle and lyrics files for accessibility and visualization purposes.
- Dynamic weather information generation (download and display forecasts, radar, satellite, etc.) to create a virtual weather loop channel.
- General dynamic information retrieval (from RSS feeds, external scripts, etc.) to support general-purpose virtual channels.
- RTL-SDR tuner support for adding radio/satellite tuning.
TealFiler Projects
Working on TealFiler REQUIRES Linux. A bare metal installation is recommended, but a virtual machine will also work.
TealFiler uses Qt for Python (PySide6) for its GUI toolkit. Available TealFiler projects include:
- Settings dialog for the mimeapps.list file to add MIME type associations and change default applications.
- Privacy-respecting file search. To be private, a search index cannot be generated. Instead, standard Linux tools (find, grep, etc.) will need to be automated to search on demand.
- Comprehensive bulk file rename functionality that supports numbering files, changing extensions, and regular expression patterns.
- Removable mass storage device support using udisks2 for mounting and fusermount for unmounting. The cleanest approach may involve using Qt D-Bus to talk to the udisks daemon.
- Samba/CIFS share support as a regular user. Implementation will require selecting and integrating a library like smbprotocol or pysmb for Python-native connections.
- Android/MTP device support. So far, the cleanest solution appears to be using the CLI version of Android File Transfer for Linux with the subprocess module. Requires a Linux host and an Android phone for testing and development.
- File transfer over Bluetooth via the OBEX protocol. This functionality will require using Qt D-Bus to communicate with BlueZ's OBEX API.
- SFTP support. Requires integrating Paramiko and/or supporting sshfs.
TealSite Projects
Available TealSite projects include:
- Porting TealSite to Windows, testing, optimizing, and packaging for the platform.
- Porting TealSite to macOS, testing, optimizing, and packaging for the platform.
- Testing, profiling, and optimization (on Linux). Evaluating whether pickling/unpickling the intermediate representation will be faster than the current writing/re-parsing HTML.
- Optimizing page ingestion by parsing HTML documents in multiple threads or using asyncio. A CS background with prior CSCI 356 experience is likely required for this option, since synchronization primitives (semaphores/monitors/locks) must be added to any threads.
- Bibliography styling support for common formats (APA, MLA, Turabian, Bluebook, ACM, IEEE).
- Automatic glossary generation using dl elements for definitions and word detection using existing word indexes.
- Automatic abbreviation detection and handling using existing word indexes and abbr elements.
- Automatic upload via SFTP. Requires integrating Paramiko as an optional dependency. A target SFTP server will need to be set up (for example, in a VM) for testing and debugging with this option.