{"id":25698064,"url":"https://github.com/meowrch/pawlette","last_synced_at":"2026-04-14T12:01:44.004Z","repository":{"id":279303014,"uuid":"937247529","full_name":"meowrch/pawlette","owner":"meowrch","description":"😺 Utility for changing themes in the meowrch","archived":false,"fork":false,"pushed_at":"2026-02-19T15:47:26.000Z","size":61287,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-19T19:16:51.973Z","etag":null,"topics":["arch","customization","linux","meowrch","palette","rice","theme","theme-switcher"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meowrch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-22T17:25:12.000Z","updated_at":"2026-02-15T14:55:01.000Z","dependencies_parsed_at":"2025-05-15T21:23:44.978Z","dependency_job_id":"7c097ea6-28fb-4450-9b08-244e0b174ba2","html_url":"https://github.com/meowrch/pawlette","commit_stats":null,"previous_names":["meowrch/pawlette"],"tags_count":12,"template":false,"template_full_name":"DIMFLIX/PyTemplate","purl":"pkg:github/meowrch/pawlette","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meowrch%2Fpawlette","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meowrch%2Fpawlette/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meowrch%2Fpawlette/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meowrch%2Fpawlette/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meowrch","download_url":"https://codeload.github.com/meowrch/pawlette/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meowrch%2Fpawlette/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31795334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T11:13:53.975Z","status":"ssl_error","status_checked_at":"2026-04-14T11:13:53.299Z","response_time":153,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["arch","customization","linux","meowrch","palette","rice","theme","theme-switcher"],"created_at":"2025-02-25T02:38:00.124Z","updated_at":"2026-04-14T12:01:43.979Z","avatar_url":"https://github.com/meowrch.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐾 Pawlette\nУниверсальный менеджер тем.\nЛегко переключайтесь между темами для своего рабочего стола, сохраняя индивидуальные настройки.\nПод капотом — гибкая система патчей и атомарные операции.\n\n\u003e [!Warning]\n\u003e Проект находится в активной разработке.\n\u003e Для production-использования рекомендуется версия 1.0+\n\n## 🌟 Особенности\n- **Полная поддержка XDG**\n- **Модульная архитектура** обработчиков конфигов\n- **Поддержка пользовательских тем** через единый формат\n- **Частичное изменение** конфигураций (patch)\n- **Git-based управление версиями** пользовательских изменений\n- **Умное игнорирование** временных файлов и кешей\n- **Автоматическое сохранение** пользовательских настроек при переключении тем\n\n## ⚡ Быстрый старт\nДля установки на систему Arch Linux выполните команду:\n```bash\nyay -S pawlette-git\n```\n\n## 🛠 Архитектура тем\nТемы хранятся в `/usr/share/pawlette/themes/` или в `~/.local/share/pawlette/themes/` со структурой:\n```text\ntheme-name/\n├── configs/           # Конфигурации приложений\n│   ├── kitty/\n│   │   └── kitty.conf.prepaw  # патч-файл\n│   ├── waybar/\n│   │   ├── style.css\n│   │   └── config.json\n│   └── ...\n├── gtk-theme/     # Папка с темой GTK\n├── gtk-theme/     # Папка с иконками\n└── wallpapers/    # Папка с обоями\n```\nПапка `configs` должна иметь ту-же архитектуру, что и `~/.config`.\nВы можете создавать папки для каждого приложения, и добавлять конфигурации.\nПри этом не обязательно добавлять абсолютно все конфигурации.\nВы можете ограничиться лишь теми, которые должны изменяться от темы к теме.\n\nПрименение тем происходит в формате слияния двух директорий.\nЕсли определенного файла/папки не было, то он создастся.\nА если был, то изменит контент на тот, который был написан в вашей теме.\n\n### Патчинг конфигураций\nЕсли файл уже существует в `.config/.../`,\nи вам нужно частично изменить его (вставить что-то в начало или конец), то\nдля вас мы реализовали систему патчинга (patch).\n\nОна заключается в том, что вы создаете файл с абсолютно тем-же названием и расширением,\nчто и в `.config/.../`, но при этом добавляете в конце суффикс \".prepaw\" или \".postpaw\".\n\n\u003e [!NOTE]\n\u003e Например был `kitty/kitty.conf`, а станет `kitty/kitty.conf.prepaw` \\\n\u003e Такой файл будет расцениваться как патч.\n\nЕсли суффикс `.prepaw`, то содержимое этого файла вставится перед основной частью оригинальной конфигурации.\nСоответственно, если суффикс `.postpaw`, то содержимое вставится после основной части оригинальной конфигурации.\n\nПомимо вставок, доступен JSON merge-патч: создайте файл с суффиксом `.jsonpaw` рядом с целевым JSON (например, `waybar/config.json.jsonpaw`). Его содержимое должно быть JSON-объектом; он рекурсивно смержится в целевой файл:\n\n- существующие ключи переопределяются значениями из `.jsonpaw`;\n- отсутствующие ключи добавляются;\n- вложенные объекты мержатся глубоко.\n\nПример:\n\nОригинал `~/.config/waybar/config.json`:\n```json\n{\n  \"layer\": \"bottom\",\n  \"modules-left\": [\"menu\"],\n  \"style\": { \"font\": \"Sans 10\" }\n}\n```\n\nПатч `configs/waybar/config.json.jsonpaw`:\n```json\n{\n  \"layer\": \"top\",\n  \"style\": { \"font\": \"JetBrainsMono 11\", \"color\": \"#cba6f7\" },\n  \"custom-key\": true\n}\n```\n\nРезультат:\n```json\n{\n  \"layer\": \"top\",\n  \"modules-left\": [\"menu\"],\n  \"style\": { \"font\": \"JetBrainsMono 11\", \"color\": \"#cba6f7\" },\n  \"custom-key\": true\n}\n```\n\nJSON merge применяется перед `.prepaw`/`.postpaw`.\n\n## 🧠 Селективный менеджер тем\nPawlette использует инновационную систему селективного управления темами на базе Git. Это означает:\n\n- **Каждая тема = отдельная ветка** в internal git-репозитории\n- **Пользовательские изменения** автоматически сохраняются как uncommitted changes\n- **Переключение между темами** сохраняет ваши индивидуальные настройки\n- **История изменений** доступна для каждой темы\n- **Умное игнорирование** временных файлов и кешей\n\n### Рабочий процесс:\n1. **Применение темы** → создается ветка темы, применяются базовые конфигурации\n2. **Ваши изменения** → отслеживаются как uncommitted changes в git\n3. **Переключение темы** → автоматически сохраняет ваши изменения и переключается на другую ветку\n4. **Возврат к теме** → восстанавливает вашу персонализированную версию\n\n### Преимущества:\n- 🔄 **Безопасность**: невозможно потерять пользовательские настройки\n- 📚 **История**: полная история изменений для каждой темы\n- 🎯 **Селективность**: изменяются только релевантные файлы\n- 🧹 **Чистота**: автоматическое игнорирование \"мусорных\" файлов\n\n## 🎛 Управление темами\n| Команда                    | Описание                                      |\n| -------------------------- | --------------------------------------------- |\n| `pawlette generate-config` | Сгенерировать конфигурацию по умолчанию       |\n| `pawlette get-themes`      | Список установленных тем                      |\n| `pawlette get-themes-info` | JSON с информацией об установленных темах     |\n| `pawlette set-theme \u003cname\u003e`| Применить указанную тему                      |\n| `pawlette apply \u003cname\u003e`    | Применить указанную тему (алиас)              |\n| `pawlette current-theme`   | Показать текущую активную тему                |\n| `pawlette restore`         | Восстановить оригинальный вид                 |\n| `pawlette reset-theme \u003cname\u003e` | Сбросить тему к чистому состоянию          |\n\n## 📦 Установка, обновление и удаление тем\n| Команда                              | Описание                                 |\n| ------------------------------------ | ---------------------------------------- |\n| `pawlette get-store-themes`          | JSON со всеми темами из удалённого магазина |\n| `pawlette install-theme \u003cname/url/path\u003e` | Установить тему по имени из репозитория, по ссылке на архив или из локального файла архива |\n| `pawlette update-theme \u003cname\u003e`       | Обновить тему из официального репозитория   |\n| `pawlette update-all-themes`         | Обновить все темы                           |\n| `pawlette uninstall-theme \u003cname\u003e` | Удалить тему (локальные файлы и кэш)      |\n\n## 📜 Управление версиями и историей\n| Команда                                      | Описание                                    |\n| -------------------------------------------- | ------------------------------------------- |\n| `pawlette status`                            | Показать статус и незакоммиченные изменения |\n| `pawlette history [theme] [--limit N]`      | Показать историю коммитов для темы         |\n| `pawlette user-changes [theme]`             | Показать информацию о пользовательских изменениях |\n| `pawlette restore-commit \u003chash\u003e [theme]`    | Восстановить изменения из конкретного коммита |\n\n### Примеры использования:\n```bash\n# Проверить текущий статус\npawlette status\n# ➤ Current theme: dark-blue\n# ⚠️  You have 3 uncommitted changes\n# Modified files:\n#   - kitty/kitty.conf\n#   - waybar/config.json\n#   - alacritty/alacritty.yml\n\n# Посмотреть историю текущей темы\npawlette history\n# 📜 History for theme: dark-blue\n# 👤 a1b2c3d Персональные настройки шрифтов [USER]\n# 🔧 e4f5g6h Обновление конфигурации waybar\n# 🔧 h7i8j9k Первоначальное применение темы\n\n# Посмотреть, какие файлы изменены в теме\npawlette user-changes dark-blue\n# 🔍 User changes for theme: dark-blue\n# Found 2 modified files:\n#   📝 kitty/kitty.conf\n#   📝 waybar/style.css\n\n# Восстановить определенный коммит\npawlette restore-commit a1b2c3d\n# ✅ Successfully restored commit a1b2c3d for theme dark-blue\n```\n\n## 🔄 Управление бэкапами\n| Команда                                                             | Описание                       |\n| ------------------------------------------------------------------- | ------------------------------ |\n| `pawlette backup list ~/.config/\u003cAPP\u003e/config.conf`                  | Показать все версии файла      |\n| `pawlette backup restore ~/.config/\u003cAPP\u003e/config.conf`               | Восстановить последнюю версию  |\n| `pawlette backup restore ~/.config/\u003cAPP\u003e/config.conf --hash abc123` | Восстановить конкретную версию |\n| `pawlette system-backup list`                                       | Показать системные бэкапы      |\n| `pawlette system-backup create --comment \"Before dark theme\"`       | Создать полный бэкап           |\n| `pawlette system-backup restore BACKUP_ID`                          | Откатить всю систему           |\n\n## ☕ Поддержать проект\nЕсли Pawlette делает ваш рабочий стол красивее:\n| Криптовалюта | Адрес                                              |\n| ------------ | -------------------------------------------------- |\n| **TON**      | `UQB9qNTcAazAbFoeobeDPMML9MG73DUCAFTpVanQnLk3BHg3` |\n| **Ethereum** | `0x56e8bf8Ec07b6F2d6aEdA7Bd8814DB5A72164b13`       |\n| **Bitcoin**  | `bc1qt5urnw7esunf0v7e9az0jhatxrdd0smem98gdn`       |\n| **Tron**     | `TBTZ5RRMfGQQ8Vpf8i5N8DZhNxSum2rzAs`               |\n\nВаша поддержка мотивирует нас делать больше крутых фич! ❤️\n\n## 📊 Статистика\n[![Star History Chart](https://api.star-history.com/svg?repos=meowrch/pawlette\u0026type=Date)](https://star-history.com/#meowrch/pawlette\u0026Date)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeowrch%2Fpawlette","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeowrch%2Fpawlette","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeowrch%2Fpawlette/lists"}