All checks were successful
		
		
	
	Code check / Check code (push) Successful in 1m26s
				
			Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
		
			
				
	
	
		
			230 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			230 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
📘 This documentation is also available in [English](README.md)
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 📋 Содержание
 | 
						||
- [Обзор](#-обзор)
 | 
						||
- [Создание папки темы](#-создание-папки-темы)
 | 
						||
- [Файл стилей](#-файл-стилей-stylespy)
 | 
						||
- [Конфигурация анимации](#-конфигурация-анимации)
 | 
						||
- [Метаинформация](#-метаинформация-metainfoini)
 | 
						||
- [Скриншоты](#-скриншоты)
 | 
						||
- [Шрифты и иконки](#-шрифты-и-иконки-опционально)
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 📖 Обзор
 | 
						||
 | 
						||
Темы в `PortProtonQT` позволяют изменить внешний вид интерфейса. Все темы хранятся в папке:
 | 
						||
 | 
						||
- `~/.local/share/PortProtonQT/themes`.
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 📁 Создание папки темы
 | 
						||
 | 
						||
```bash
 | 
						||
mkdir -p ~/.local/share/PortProtonQT/themes/my_custom_theme
 | 
						||
```
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 🎨 Файл стилей (`styles.py`)
 | 
						||
 | 
						||
Создайте `styles.py` в корне темы. В нём определите переменные и/или функции, возвращающие CSS-оформление.
 | 
						||
 | 
						||
**Пример функции:**
 | 
						||
```python
 | 
						||
def custom_button_style(color1, color2):
 | 
						||
    return f"""
 | 
						||
    QPushButton {{
 | 
						||
        background: qlineargradient(x1:0, y1:0, x2:1, y2:0,
 | 
						||
                                    stop:0 {color1}, stop:1 {color2});
 | 
						||
    }}
 | 
						||
    """
 | 
						||
```
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 🎥 Конфигурация анимации
 | 
						||
 | 
						||
Словарь `GAME_CARD_ANIMATION` управляет всеми параметрами анимации для карточек игр:
 | 
						||
 | 
						||
```python
 | 
						||
GAME_CARD_ANIMATION = {
 | 
						||
    # Тип анимации при входе и выходе на детальную страницу
 | 
						||
    # Возможные значения: "fade", "slide_left", "slide_right", "slide_up", "slide_down", "bounce"
 | 
						||
    # Определяет, как детальная страница появляется и исчезает
 | 
						||
    "detail_page_animation_type": "fade",
 | 
						||
 | 
						||
    # Ширина обводки карточки в состоянии покоя (без наведения или фокуса)
 | 
						||
    # Влияет на толщину рамки вокруг карточки, когда она не выделена
 | 
						||
    # Значение в пикселях
 | 
						||
    "default_border_width": 2,
 | 
						||
 | 
						||
    # Ширина обводки при наведении курсора
 | 
						||
    # Увеличивает толщину рамки, когда курсор находится над карточкой
 | 
						||
    # Значение в пикселях
 | 
						||
    "hover_border_width": 8,
 | 
						||
 | 
						||
    # Ширина обводки при фокусе (например, при выборе с клавиатуры)
 | 
						||
    # Увеличивает толщину рамки, когда карточка в фокусе
 | 
						||
    # Значение в пикселях
 | 
						||
    "focus_border_width": 12,
 | 
						||
 | 
						||
    # Минимальная ширина обводки во время пульсирующей анимации
 | 
						||
    # Определяет минимальную толщину рамки при пульсации (анимация "дыхания")
 | 
						||
    # Значение в пикселях
 | 
						||
    "pulse_min_border_width": 8,
 | 
						||
 | 
						||
    # Максимальная ширина обводки во время пульсирующей анимации
 | 
						||
    # Определяет максимальную толщину рамки при пульсации
 | 
						||
    # Значение в пикселях
 | 
						||
    "pulse_max_border_width": 10,
 | 
						||
 | 
						||
    # Длительность анимации изменения толщины обводки (например, при наведении или фокусе)
 | 
						||
    # Влияет на скорость перехода от одной ширины обводки к другой
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "thickness_anim_duration": 300,
 | 
						||
 | 
						||
    # Длительность одного цикла пульсирующей анимации
 | 
						||
    # Определяет, как быстро рамка "пульсирует" между min и max значениями
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "pulse_anim_duration": 800,
 | 
						||
 | 
						||
    # Длительность анимации вращения градиента
 | 
						||
    # Влияет на скорость, с которой градиентная обводка вращается вокруг карточки
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "gradient_anim_duration": 3000,
 | 
						||
 | 
						||
    # Начальный угол градиента (в градусах)
 | 
						||
    # Определяет начальную точку вращения градиента при старте анимации
 | 
						||
    "gradient_start_angle": 360,
 | 
						||
 | 
						||
    # Конечный угол градиента (в градусах)
 | 
						||
    # Определяет конечную точку вращения градиента
 | 
						||
    # Значение 0 означает полный поворот на 360 градусов
 | 
						||
    "gradient_end_angle": 0,
 | 
						||
 | 
						||
    # Тип анимации для карточки при наведении или фокусе
 | 
						||
    # Возможные значения: "gradient", "scale"
 | 
						||
    # "gradient" включает вращающийся градиент для обводки, "scale" увеличивает размер карточки
 | 
						||
    "card_animation_type": "gradient",
 | 
						||
 | 
						||
    # Масштаб карточки в состоянии покоя
 | 
						||
    # Определяет базовый размер карточки (1.0 = 100% от исходного размера)
 | 
						||
    # Значение в долях (например, 1.0 для нормального размера)
 | 
						||
    "default_scale": 1.0,
 | 
						||
 | 
						||
    # Масштаб карточки при наведении курсора
 | 
						||
    # Увеличивает размер карточки при наведении
 | 
						||
    # Значение в долях (например, 1.1 = 110% от исходного размера)
 | 
						||
    "hover_scale": 1.1,
 | 
						||
 | 
						||
    # Масштаб карточки при фокусе (например, при выборе с клавиатуры)
 | 
						||
    # Увеличивает размер карточки при фокусе
 | 
						||
    # Значение в долях (например, 1.05 = 105% от исходного размера)
 | 
						||
    "focus_scale": 1.05,
 | 
						||
 | 
						||
    # Длительность анимации масштабирования
 | 
						||
    # Влияет на скорость изменения размера карточки при наведении или фокусе
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "scale_anim_duration": 200,
 | 
						||
 | 
						||
    # Тип кривой сглаживания для анимации увеличения обводки (при наведении/фокусе)
 | 
						||
    # Влияет на "чувство" анимации (например, плавное ускорение или замедление)
 | 
						||
    # Возможные значения: строки, соответствующие QEasingCurve.Type (например, "OutBack", "InOutQuad")
 | 
						||
    "thickness_easing_curve": "OutBack",
 | 
						||
 | 
						||
    # Тип кривой сглаживания для анимации уменьшения обводки (при уходе курсора/потере фокуса)
 | 
						||
    # Влияет на "чувство" возврата к исходной ширине обводки
 | 
						||
    "thickness_easing_curve_out": "InBack",
 | 
						||
 | 
						||
    # Тип кривой сглаживания для анимации увеличения масштаба (при наведении/фокусе)
 | 
						||
    # Влияет на "чувство" анимации масштабирования (например, с эффектом "отскока")
 | 
						||
    # Возможные значения: строки, соответствующие QEasingCurve.Type
 | 
						||
    "scale_easing_curve": "OutBack",
 | 
						||
 | 
						||
    # Тип кривой сглаживания для анимации уменьшения масштаба (при уходе курсора/потере фокуса)
 | 
						||
    # Влияет на "чувство" возврата к исходному масштабу
 | 
						||
    "scale_easing_curve_out": "InBack",
 | 
						||
 | 
						||
    # Цвета градиента для анимированной обводки
 | 
						||
    # Список словарей, где каждый словарь задает позицию (0.0–1.0) и цвет в формате hex
 | 
						||
    # Влияет на внешний вид обводки при наведении или фокусе, если card_animation_type="gradient"
 | 
						||
    "gradient_colors": [
 | 
						||
        {"position": 0, "color": "#00fff5"},    # Начальный цвет (циан)
 | 
						||
        {"position": 0.33, "color": "#FF5733"}, # Цвет на 33% (оранжевый)
 | 
						||
        {"position": 0.66, "color": "#9B59B6"}, # Цвет на 66% (пурпурный)
 | 
						||
        {"position": 1, "color": "#00fff5"}     # Конечный цвет (возвращение к циану)
 | 
						||
    ],
 | 
						||
 | 
						||
    # Длительность анимации fade при входе на детальную страницу
 | 
						||
    # Влияет на скорость появления страницы при fade-анимации
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "detail_page_fade_duration": 350,
 | 
						||
 | 
						||
    # Длительность анимации slide при входе на детальную страницу
 | 
						||
    # Влияет на скорость скольжения страницы при slide-анимации
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "detail_page_slide_duration": 500,
 | 
						||
 | 
						||
    # Длительность анимации bounce при входе на детальную страницу
 | 
						||
    # Влияет на скорость "прыжка" страницы при bounce-анимации
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "detail_page_bounce_duration": 400,
 | 
						||
 | 
						||
    # Длительность анимации fade при выходе из детальной страницы
 | 
						||
    # Влияет на скорость исчезновения страницы при fade-анимации
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "detail_page_fade_duration_exit": 350,
 | 
						||
 | 
						||
    # Длительность анимации slide при выходе из детальной страницы
 | 
						||
    # Влияет на скорость скольжения страницы при slide-анимации
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "detail_page_slide_duration_exit": 500,
 | 
						||
 | 
						||
    # Длительность анимации bounce при выходе из детальной страницы
 | 
						||
    # Влияет на скорость "сжатия" страницы при bounce-анимации
 | 
						||
    # Значение в миллисекундах
 | 
						||
    "detail_page_bounce_duration_exit": 400,
 | 
						||
 | 
						||
    # Тип кривой сглаживания для анимации при входе на детальную страницу
 | 
						||
    # Применяется к slide и bounce анимациям, влияет на "чувство" движения
 | 
						||
    # Возможные значения: строки, соответствующие QEasingCurve.Type
 | 
						||
    "detail_page_easing_curve": "OutCubic",
 | 
						||
 | 
						||
    # Тип кривой сглаживания для анимации при выходе из детальной страницы
 | 
						||
    # Применяется к slide и bounce анимациям, влияет на "чувство" движения
 | 
						||
    # Возможные значения: строки, соответствующие QEasingCurve.Type
 | 
						||
    "detail_page_easing_curve_exit": "InCubic"
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 📝 Метаинформация (`metainfo.ini`)
 | 
						||
 | 
						||
```ini
 | 
						||
[Metainfo]
 | 
						||
name = My Custom Theme
 | 
						||
author = Ваше имя
 | 
						||
author_link = https://example.com
 | 
						||
description = Описание вашей темы.
 | 
						||
```
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 🖼 Скриншоты
 | 
						||
 | 
						||
Папка: `images/screenshots/` — любые изображения оформления темы.
 | 
						||
 | 
						||
---
 | 
						||
 | 
						||
## 🔡 Шрифты и иконки (опционально)
 | 
						||
 | 
						||
- Шрифты: `fonts/*.ttf` или `.otf`
 | 
						||
- Иконки: `images/icons/*.svg/.png`
 | 
						||
 | 
						||
---
 |