UniDesk
UniDesk is the welcome application that ships with UniOS, a custom Linux distribution built for students and staff for all greek universities. It gives users a friendly starting point when they boot into the system, with quick access to information about the project, useful links, and the people behind it.
What it does
When you open UniDesk you land on a simple screen with a two column layout. On the left you have introductory pages like Features, Links, and FAQ. On the right you have community oriented pages like Source Code, Contribute, and Credits. Clicking any button takes you to a dedicated page, and a back button always brings you home.
Requirements
Python 3.10 or newer and PyQt6.
pip install -r requirements.txt
Running it
Set up a virtual environment and install the package:
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
Then run:
unidesk
Project structure
src/unidesk/
main.py entry point
helpers/
text_data.py loads the text below from the bundled JSON
academic_config.py reads/writes the shared academic profile
autostart.py manages launching UniDesk at login
ui/
main_window.py main window and all navigation logic
widgets.py shared widget helpers
pages/ builders for each page (text, links, credits, academic config)
styles/
loader.py loads the bundled .qss stylesheets and assets
check.svg checkmark icon for checkboxes
widgets/
controls.qss buttons, checkbox and combo box roles
labels.qss label text roles
layout.qss backgrounds for windows, bars, cards and dividers
assets/text_data/
pages.json body text for each informational page
faq.json FAQ entries as question/answer pairs
credits.json list of contributors
links.json external links shown in the Links page
navigation.json nav button labels and footer links
ui_strings.json buttons, titles and other interface text
academic_institutions.json known universities and their departments
All user-facing text lives in assets/text_data/. To update page content edit pages.json; to add a contributor edit credits.json. No Python changes are needed to change copy.
Academic profile
The footer on the home screen has a Configure UniOS button. It opens a page where you pick your university and department from dropdowns, which is saved to ~/.unios/academicConfig.json. Other UniOS apps (such as UniBackpack) read this file, so the available choices live in assets/text_data/academic_institutions.json and must stay in sync with those apps. If UniBackpack adds new universities or departments, mirror them in assets/text_data/academic_institutions.json.
Contributing
Contributions are welcome. If you want to improve the UI, fix a typo, or add a new page, open a pull request on GitHub. If you find a bug, open an issue. There is no contribution too small.
Built by Open Source UoM 2026