A modular template for rapid dashboard development using Python and GTK3, designed specifically for native Linux desktop applications.
This template provides a production-ready foundation for building Linux desktop applications with GTK3. It features a clean dark theme, modular architecture, and 7 professional theme options.
Built with GTK3, this template runs natively across all major Linux distributions including:
- Ubuntu, Debian, Linux Mint
- Fedora, CentOS, Red Hat Enterprise Linux
- Arch Linux, Manjaro, EndeavourOS
- openSUSE, SUSE Linux Enterprise
- Pop!_OS, Elementary OS, Zorin OS
- MX Linux, Solus, Gentoo
- Any Linux distribution with GTK3 support
- Clean Dark Theme - Modern flat design with 7 theme variations
- Modular Architecture - Easy to extend with new pages and features
- Theme Selector - Switch between 7 professional dark themes
- Fixed Sidebar - 150px sidebar with logo and navigation
- Page-Based Routing - Independent pages with individual scroll states
- GTK3 Native - No web dependencies, pure GTK widgets
- Virtual Environment - Isolated Python environment
- Production Ready - Clean codebase, well-documented
Seven professional dark themes included:
- Default Blue (#0078D7) - Windows-style blue accent
- Adapta (#00bcd4) - Cyan accent
- Materia (#8ab4f8) - Light blue accent
- Dracula (#bd93f9) - Purple accent
- Nord (#88c0d0) - Nordic blue accent
- Gruvbox (#fe8019) - Orange warmth accent
- Monokai (#f92672) - Pink highlight accent
gtk-python-dashboard-starter/
├── src/ # Application source code
│ ├── main.py # Entry point
│ ├── config/ # Configuration modules
│ │ ├── config_theme.py # Theme colors/fonts
│ │ ├── config_layout.py # Layout dimensions
│ │ └── config_themes.py # Theme definitions
│ ├── ui/ # UI components
│ │ ├── dashboard_window.py
│ │ ├── sidebar.py
│ │ ├── content_area.py
│ │ └── components/ # UI widgets
│ │ └── component_theme_selector.py
│ ├── pages/ # Page modules
│ │ ├── page_base.py # Base page class
│ │ ├── page_home.py
│ │ ├── page_about.py
│ │ ├── page_button03.py
│ │ ├── page_button04.py
│ │ ├── page_button05.py
│ │ ├── page_button06.py
│ │ └── page_settings.py
│ ├── modules/ # Feature modules
│ │ ├── manager_navigation.py
│ │ └── manager_theme_applicator.py
│ └── utils/ # Utility functions
│ └── manager_theme.py # CSS loader
├── resources/ # Static resources
│ ├── css/ # Stylesheets
│ │ └── style.css
│ ├── fonts/ # Custom fonts
│ ├── images/ # Images and icons
│ │ └── logo.png
│ └── videos/ # Demo videos
│ └── gtk-starter-dashboard-demo.gif
├── docs/ # Documentation
├── tests/ # Test files
├── README.md # This file
├── requirements.txt # Python dependencies
├── setup.py # Installation script
└── run.sh # Quick launch script
- Python 3.8 or higher
- GTK+ 3.0
- pip (Python package manager)
-
Clone the repository
git clone https://github.com/mikesdatawork/gtk-python-dashboard-starter.git cd gtk-python-dashboard-starter -
Run the application
./run.sh
The
run.shscript will:- Create a virtual environment (if needed)
- Install dependencies
- Launch the application
If you prefer to set up manually:
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run application
python3 src/main.py-
Create a new page module in
src/pages/:from pages.page_base import BasePage class MyNewPage(BasePage): def build_content(self): self.add_title("My New Page") self.add_paragraph("Page content here...")
-
Register the page in
src/ui/content_area.py:from pages.my_new_page import MyNewPage # In register_pages(): my_page = MyNewPage() self.register_page("mypage", my_page)
-
Add navigation button in
src/ui/sidebar.py:nav_items = [ ("My Page", "mypage"), # ... other items ]
Themes are defined in src/config/config_themes.py. Each theme includes:
- Accent color
- Sidebar background
- Window background
- Hover color
To add a new theme, add an entry to the DARK_THEMES dictionary.
Layout dimensions are centralized in src/config/config_layout.py:
- Sidebar width
- Logo dimensions
- Button heights
- Spacing values
- GTK Version: GTK+ 3.0
- Python: 3.8+
- Dependencies: PyGObject, pycairo, Pillow
- Architecture: Modular with page-based routing
- Sidebar: 150px fixed width
- Logo: 150x150px square
- Navigation Buttons: 28px height
- Pages: 7 navigation pages
- Themes: 7 dark themes
pytest tests/- config/ - Centralized configuration (themes, colors, layout)
- ui/ - User interface components (window, sidebar, content area)
- pages/ - Individual page modules inheriting from BasePage
- modules/ - Feature modules (navigation, theme application)
- utils/ - Utility functions (CSS loading, etc.)
Free for personal and educational use.
This is a template project. Fork it and customize for your needs.
https://github.com/mikesdatawork/gtk-python-dashboard-starter
mikesdatawork
Note: This template is designed as a starting point. Customize the pages, themes, and functionality to match your project requirements.

