{"id":31729797,"url":"https://github.com/toxblh/monic","last_synced_at":"2025-10-09T07:16:58.809Z","repository":{"id":302650796,"uuid":"1012666054","full_name":"Toxblh/Monic","owner":"Toxblh","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-03T13:28:16.000Z","size":227,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-03T14:41:51.821Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Toxblh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-02T17:25:33.000Z","updated_at":"2025-07-03T13:28:20.000Z","dependencies_parsed_at":"2025-07-03T14:53:35.617Z","dependency_job_id":null,"html_url":"https://github.com/Toxblh/Monic","commit_stats":null,"previous_names":["toxblh/monic"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Toxblh/Monic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Toxblh%2FMonic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Toxblh%2FMonic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Toxblh%2FMonic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Toxblh%2FMonic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Toxblh","download_url":"https://codeload.github.com/Toxblh/Monic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Toxblh%2FMonic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000986,"owners_count":26082972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-09T07:16:51.380Z","updated_at":"2025-10-09T07:16:58.800Z","avatar_url":"https://github.com/Toxblh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"60%\"\u003e\n\n# Monitor Control 🖥️\n\nПриложение для управления внешними мониторами через системный трей с поддержкой плавной анимации и автоматического обновления.\n\n## Основные функции:\n- 🔆 Управление яркостью с плавной анимацией\n- 🔊 Контроль громкости встроенных динамиков  \n- 🔌 Переключение источников входа\n- 📺 Поддержка множественных мониторов\n- 🎨 Современный интерфейс в системном трее\n\n## ✨ Возможности\n\n- 🔆 **Управление яркостью** с плавной анимацией (0-100%)\n- 🔊 **Управление громкостью** встроенных динамиков монитора\n- 🔌 **Переключение источников входа** (HDMI, DisplayPort, USB-C)\n- 🎬 **Плавная анимация** изменения яркости\n- 🔄 **Автоматическое обновление** информации о мониторах\n- 📺 **Поддержка множественных мониторов**\n- 🎨 **Современный интерфейс** в системном трее\n- 🚀 **Быстрые кнопки** для часто используемых настроек\n\n\u003c/td\u003e\n\u003ctd width=\"40%\"\u003e\n\n\u003cimg src=\"screen.png\" alt=\"Monitor Control Screenshot\" width=\"100%\"\u003e\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## 📋 Требования\n\n- **Операционная система**: Linux с поддержкой X11/Wayland\n- **Python**: 3.7+\n- **Монитор**: Поддержка DDC/CI протокола\n- **Системный трей**: GNOME, KDE, или другая DE с поддержкой system tray\n\n## Быстрый старт на Alt Linux \n\n```\ngit clone https://github.com/toxblh/Monic.git\ncd Monic\n./install.sh\n\n# Ставим pip\nsudo apt-get install pip\n\n# И выдаём доступ на усправление шиной i2c\nsudo mkdir -p /etc/modules-load.d; echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf\nsudo groupadd i2c\nsudo chown :i2c /dev/i2c-*\nsudo usermod -aG i2c $USER\necho 'KERNEL==\"i2c-[0-9]*\", GROUP=\"i2c\"' | sudo tee -a /etc/udev/rules.d/10-i2c.rules\nsudo udevadm control --reload-rules\nsudo udevadm trigger\n\n# Первый запуск с консоли (долгий), далее можно из меню приложений\n~/.local/share/monitor-control/run_monitor_control.sh\n```\n\n## 🛠️ Установка\n\n### 1. Клонирование репозитория\n```bash\ngit clone https://github.com/toxblh/Monic.git\ncd Monic\n```\n\n### 2. Установка зависимостей\n```bash\npip install -r requirements.txt\n```\n\n### 3. Настройка монитора\nУбедитесь, что DDC/CI включен в настройках вашего монитора:\n- Зайдите в меню монитора\n- Найдите раздел \"Дополнительно\" или \"Advanced\"\n- Включите \"DDC/CI\" или \"DDC Command Interface\"\n\n## 🚀 Запуск\n\n### Способ 1: Установка как системное приложение (рекомендуется)\n\n```bash\n# Установка в систему\n./install.sh\n\n# После установки приложение будет доступно в меню приложений\n# Поиск: \"Monitor Control\"\n```\n\n### Способ 2: Запуск из директории\n\n```bash\n# Прямой запуск\npython3 monitor_control.py\n\n# Или через скрипт запуска\n./run_monitor_control.sh\n```\n\nПосле запуска приложение появится в системном трее. Щелкните правой кнопкой мыши по иконке для доступа к меню управления.\n\n## 🗑️ Удаление\n\nЕсли приложение было установлено через `install.sh`:\n\n```bash\n./uninstall.sh\n```\n\n## 📖 Использование\n\n### Управление яркостью\n- 🌑 **0%** - Минимальная яркость\n- 🌘 **25%** - Низкая яркость  \n- 🌗 **50%** - Средняя яркость\n- 🌖 **75%** - Высокая яркость\n- 🌕 **100%** - Максимальная яркость\n\n### Управление громкостью\n- 🔇 **0%** - Беззвучный режим\n- 🔈 **25%** - Тихо\n- 🔉 **50%** - Средняя громкость\n- 🔊 **100%** - Максимальная громкость\n\n### Переключение источников\n- **DP-1** - DisplayPort 1\n- **HDMI-1** - HDMI порт 1\n- **HDMI-2** - HDMI порт 2\n- **Type-C** - USB-C (если поддерживается)\n\n## ⚙️ Конфигурация\n\nОсновные параметры можно настроить в файле `monitor_control.py`:\n\n```python\n# Настройки анимации\nANIMATION_DURATION_MS = 400    # Длительность анимации (мс)\nANIMATION_STEPS = 40           # Количество шагов анимации\n\n# Автообновление\nUPDATE_INTERVAL_MS = 10000     # Интервал обновления (10 сек)\n```\n\n## 🔧 Архитектура\n\n### Основные компоненты\n\n- **`main()`** - Точка входа и инициализация приложения\n- **`BrightnessAnimator`** - Класс для плавной анимации яркости\n- **`scan_monitors()`** - Сканирование и обнаружение мониторов\n- **`create_monitor_menus()`** - Создание меню для управления\n- **`update_brightness_display()`** - Автоматическое обновление UI\n\n### Поддерживаемые протоколы\n\n- **DDC/CI** (Display Data Channel Command Interface)\n- **VCP** (Virtual Control Panel) коды для управления параметрами\n\n## 📁 Структура файлов\n\n```\nMonic/\n├── monitor_control.py          # Основное приложение\n├── requirements.txt            # Python зависимости\n├── README.md                  # Документация\n├── icon.png                   # Иконка приложения\n├── monitor-control.desktop    # Desktop файл (для разработки)\n├── run_monitor_control.sh     # Скрипт запуска\n├── install.sh                 # Скрипт установки в систему\n└── uninstall.sh              # Скрипт удаления\n```\n\n## 🔧 Технические детали\n\n### Desktop Integration\n- Приложение может быть установлено как системное приложение\n- Автоматическое создание виртуального окружения\n- Интеграция с меню приложений рабочего стола\n- Поддержка современных desktop-файлов\n\n### Анимация\n- Плавная анимация изменения яркости за 400ms\n- 40 шагов анимации для гладкого перехода\n- Обновление иконки в трее в реальном времени\n\n### Автообновление\n- Обновление информации каждые 10 секунд\n- Дебаунсинг для предотвращения частых обновлений\n- Безопасные межпоточные обновления UI\n\n## 🐛 Устранение неполадок\n\n### Мониторы не обнаружены\n1. Проверьте, что DDC/CI включен в настройках монитора\n2. Убедитесь, что кабель поддерживает передачу данных (не только видео)\n3. Попробуйте другой порт (DisplayPort обычно работает лучше HDMI)\n\n### Ошибки разрешений\n```bash\n# Добавьте пользователя в группу i2c\nsudo usermod -a -G i2c $USER\n# Перелогиньтесь после выполнения команды\n```\n\n### Системный трей не отображается\n- Убедитесь, что ваша DE поддерживает system tray\n- Для GNOME установите расширение \"AppIndicator Support\"\n\n## 📝 Логирование\n\nПриложение выводит подробную информацию в консоль:\n- ✅ Успешные операции\n- ❌ Ошибки и проблемы  \n- 🔄 Статус обновлений\n- 🎬 Информация об анимации\n\n## 🤝 Вклад в проект\n\n1. Сделайте Fork репозитория\n2. Создайте ветку для новой функции (`git checkout -b feature/amazing-feature`)\n3. Сделайте коммит изменений (`git commit -m 'Add amazing feature'`)\n4. Отправьте в ветку (`git push origin feature/amazing-feature`)\n5. Откройте Pull Request\n\n## 📜 Лицензия\n\nЭтот проект распространяется под лицензией MIT. См. файл `LICENSE` для подробностей.\n\n## 🙏 Благодарности\n\n- [monitorcontrol](https://github.com/newAM/monitorcontrol) - Библиотека для управления мониторами\n- [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) - GUI фреймворк\n- [DDC/CI стандарт](https://en.wikipedia.org/wiki/Display_Data_Channel) - Протокол управления мониторами\n\n## 📞 Поддержка\n\nПри возникновении проблем:\n1. Проверьте раздел \"Устранение неполадок\"\n2. Создайте Issue с подробным описанием проблемы\n3. Приложите логи из консоли\n\n---\n\n**Версия**: 1.0.0  \n**Автор**: toxblh\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxblh%2Fmonic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoxblh%2Fmonic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoxblh%2Fmonic/lists"}