Skip to main content

heige-codex-skin-studio

One-click theme & skin switcher for OpenAI Codex Desktop using CDP injection — custom images, 12 built-in themes, persistent across restarts

الانتقال إلى التثبيت

معلومات المصدر

المستودع
reason-machines/codex-skills
آخر نشاط في المصدر
٣٠ يوليو ٢٠٢٦ في ٠٣:٠٨
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٠
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
heige-codex-skin-studio
description
One-click theme & skin switcher for OpenAI Codex Desktop using CDP injection — custom images, 12 built-in themes, persistent across restarts
triggers
["how do I theme Codex Desktop","customize Codex Desktop appearance","apply custom skin to Codex","change Codex Desktop theme","use HeiGe Codex Skin Studio","create custom Codex theme from image","enable persistent theming in Codex","troubleshoot Codex skin not loading"]
# HeiGe Codex Skin Studio > Skill by [ara.so](https://ara.so) — Codex Skills collection. **HeiGe Codex Skin Studio** is a theme and skin switcher for OpenAI Codex Desktop (macOS/Windows) that injects custom CSS and backgrounds through Chrome DevTools Protocol (CDP) on loopback `127.0.0.1:9341`. It does **not** modify `app.asar`, binaries, or signature resources. One image becomes a theme; a top menu (`🎨`) switches themes instantly and controls persistence across restarts. ## What It Does - **12 built-in themes**: Hatsune Miku, Genshin Impact (2), Wuthering Waves (2), Naruto (2), Love and Deepspace (2), Dragon Ball (2), easter egg - **Custom image themes**: Upload any PNG/JPG/WebP, auto-extracts color palette and generates dark/light variants - **Persistent skin**: Optional launch agent (macOS LaunchAgent / Windows scheduled task) reapplies theme on every Codex restart - **Reading enhancement**: 90% transparent adaptive background for replies, toggled in theme center - **AI-assisted theme creation**: `.skill` file enables Codex to generate images and apply them as themes end-to-end ## Installation ### macOS ```bash cd /path/to/heige-codex-skin-studio open scripts/install.command ``` This installs the launcher and applies the default Miku theme. The `🎨` menu appears in Codex Desktop's top bar. ### Windows ```cmd cd \path\to\heige-codex-skin-studio scripts\windows\install.bat ``` For daily use, run `scripts\windows\apply.ps1` or the compatibility alias `scripts\windows\enable-skin.bat` to restore the current session. To enable persistence (launch on login), use the `🎨` menu's "Persistent Skin" toggle. **Uninstall** (Windows): ```cmd scripts\windows\uninstall.bat ``` Removes scheduled tasks, Start Menu shortcuts, AppData state, and stable installation directory. ## Key Commands & Scripts | Script | Purpose | |--------|---------| | `scripts/install.command` (macOS) | Initial install, sets up launcher | | `scripts/windows/install.bat` | Initial install (Windows) | | `scripts/apply.command` (macOS) | Restore skin for current session, `--restart` flag to force quit & relaunch | | `scripts/windows/apply.ps1` | Restore skin (Windows) | | `scripts/pause.command` / `scripts/pause.ps1` | Temporarily disable skin (current session) | | `scripts/resume.command` / `scripts/resume.ps1` | Re-enable skin (current session) | | `scripts/restore.command` / `scripts/restore.ps1` | Remove skin, restore native UI | | `scripts/windows/close-codex.bat` | Safely quit Codex/GPT Desktop, preserve persistence settings | | `scripts/windows/uninstall.bat` | Complete uninstall (Windows) | | `customize.command` | Generate theme from local image file | **Command-line options** (for `apply.command` / `apply.ps1`): ```bash # macOS ./scripts/apply.command --restart # Force quit Codex & relaunch with skin ./scripts/apply.command --theme miku # Apply specific built-in theme ./scripts/apply.command --custom /path/to/image.png # Apply custom image theme # Windows (PowerShell) .\scripts\windows\apply.ps1 -Restart .\scripts\windows\apply.ps1 -Theme "genshin-night" .\scripts\windows\apply.ps1 -CustomImage "C:\path\to\image.jpg" ``` ## Creating Custom Themes ### Method 1: Top Menu Upload 1. Click `🎨` in Codex Desktop 2. Select `+ Custom Image` 3. Upload PNG/JPG/JPEG/WebP 4. Auto-extracts palette, generates light/dark variants 5. Theme is saved to user library and persists if "Persistent Skin" is enabled ### Method 2: Command-Line Generator ```bash # macOS ./customize.command # Prompts for image path, generates theme in output/custom-theme/ ``` ### Method 3: AI-Assisted (Codex Skill) Install `output/heige-codex-skin-studio.skill` in Codex Desktop, then prompt: > "Generate a cyberpunk neon cityscape, then create a Codex theme from it" Codex will generate the image, extract colors, and apply the theme automatically. ## Theme JSON Format Themes are stored in `themes/<theme-name>/theme.json`: ```json { "name": "Miku 488137", "author": "HeiGe AI", "version": "2.0.0", "description": "High-fidelity Hatsune Miku theme", "background": { "light": "miku-light.webp", "dark": "miku-dark.webp" }, "colors": { "light": { "primary": "#39C5BB", "secondary": "#5DCECD", "accent": "#7FD9D8", "background": "#E8F8F8", "surface": "#FFFFFF", "text": "#1A1A1A", "textSecondary": "#666666", "border": "#D0E8E8" }, "dark": { "primary": "#39C5BB", "secondary": "#2DB5B0", "accent": "#5DCECD", "background": "#0A1A1A", "surface": "#162828", "text": "#E8F8F8", "textSecondary": "#A0B8B8", "border": "#2D4848" } }, "codexAppearance": { "light": "light", "dark": "dark" } } ``` **Key fields**: - `background.light` / `background.dark`: relative paths to background images - `colors.light` / `colors.dark`: 8-color palette (primary, secondary, accent, background, surface, text, textSecondary, border) - `codexAppearance`: maps theme mode to Codex's native light/dark setting ## Configuration & Persistence **Persistent skin** is controlled via the `🎨` menu toggle: - **macOS**: Creates `~/Library/LaunchAgents/com.heigeai.codex-skin-controller.plist` - **Windows**: Creates scheduled task `HeiGeAI_CodexSkinController` for current user login **User theme library**: Custom uploaded themes are stored in: - macOS: `~/Library/Application Support/HeiGeCodexSkin/user-themes/` - Windows: `%APPDATA%\HeiGeCodexSkin\user-themes\` **State file** (tracks current theme, persistence status): - macOS: `~/Library/Application Support/HeiGeCodexSkin/skin-state.json` - Windows: `%APPDATA%\HeiGeCodexSkin\skin-state.json` ```json { "currentTheme": "miku", "persistenceEnabled": true, "readingEnhancement": true, "lastApplied": "2026-07-29T12:34:56.789Z" } ``` ## Common Patterns ### Apply a Built-in Theme Programmatically ```javascript // In src/injector/theme-manager.js (or your own script) const ThemeManager = require('./src/injector/theme-manager.js'); const tm = new ThemeManager(); await tm.applyTheme('genshin-night'); // Built-in theme ID ``` ### Generate & Apply Custom Theme from Image ```javascript const { generateThemeFromImage } = require('./src/utils/theme-generator.js'); const ThemeManager = require('./src/injector/theme-manager.js'); const imagePath = '/path/to/wallpaper.jpg'; const outputDir = './output/my-custom-theme'; // Extract colors, generate theme.json + CSS await generateThemeFromImage(imagePath, outputDir, { themeName: 'My Custom Theme', author: 'Your Name' }); // Apply it const tm = new ThemeManager(); await tm.applyTheme(outputDir); // Pass directory path for custom themes ``` ### Inject CSS Directly via CDP ```javascript const CDP = require('chrome-remote-interface'); const client = await CDP({ port: 9341 }); const { Page, Runtime } = client; await Page.enable(); await Runtime.enable(); const css = ` body { background-image: url('file:///path/to/bg.png'); background-size: cover; } .chat-message { background-color: rgba(57, 197, 187, 0.9) !important; } `; await Runtime.evaluate({ expression: ` (function() { const style = document.createElement('style'); style.id = 'heige-custom-skin'; style.textContent = ${JSON.stringify(css)}; document.head.appendChild(style); })(); ` }); await client.close(); ``` ### Read Current Theme State ```javascript const fs = require('fs'); const path = require('path'); const os = require('os'); const stateDir = process.platform === 'win32' ? path.join(process.env.APPDATA, 'HeiGeCodexSkin') : path.join(os.homedir(), 'Library', 'Application Support', 'HeiGeCodexSkin'); const statePath = path.join(stateDir, 'skin-state.json'); const state = JSON.parse(fs.readFileSync(statePath, 'utf-8')); console.log('Current theme:', state.currentTheme); console.log('Persistence enabled:', state.persistenceEnabled); ``` ### Toggle Reading Enhancement ```javascript // In injected context (via CDP Runtime.evaluate) window.heigeReadingEnhancement = !window.heigeReadingEnhancement; // Reload theme to apply const themeId = document.documentElement.dataset.heigeTheme; window.heigeApplyTheme(themeId); ``` ## Environment Variables - `HEIGE_CODEX_CDP_PORT` — Override CDP port (default: `9341`) - `HEIGE_CODEX_THEME_DIR` — Custom theme directory (default: `./themes`) - `HEIGE_LOG_LEVEL` — `debug` | `info` | `warn` | `error` (default: `info`) Example: ```bash export HEIGE_CODEX_CDP_PORT=9342 export HEIGE_LOG_LEVEL=debug ./scripts/apply.command ``` ## Troubleshooting ### Skin not appearing after restart 1. Check persistence is enabled: `🎨` menu → "Persistent Skin" should be green 2. Verify launch agent exists: - macOS: `ls ~/Library/LaunchAgents/com.heigeai.codex-skin-controller.plist` - Windows: `schtasks /Query /TN HeiGeAI_CodexSkinController` 3. Re-run install script ### Codex window becomes sluggish (low FPS, input lag) ```bash # macOS ./scripts/apply.command --restart # Windows .\scripts\windows\apply.ps1 -Restart ``` Force-quit and relaunch Codex with fresh CDP session. ### Custom image theme not saving - Ensure image is PNG/JPG/JPEG/WebP, <10MB - Check user theme directory exists and is writable: - macOS: `~/Library/Application Support/HeiGeCodexSkin/user-themes/` - Windows: `%APPDATA%\HeiGeCodexSkin\user-themes\` - Review logs: `tail -f ~/.heige-codex-skin.log` (macOS) or `%TEMP%\heige-codex-skin.log` (Windows) ### CDP connection refused - Codex must be launched with `--remote-debugging-port=9341` - Check Codex is running: `ps aux | grep Codex` (macOS) or `tasklist | findstr Codex` (Windows) - Firewall/antivirus may block loopback port — whitelist `127.0.0.1:9341` ### "Persistent Skin" toggle stuck on "Waiting..." - macOS: Check LaunchAgent plist syntax: `plutil -lint ~/Library/LaunchAgents/com.heigeai.codex-skin-controller.plist` - Windows: Run `schtasks /Query /TN HeiGeAI_CodexSkinController /V /FO LIST` to verify task exists and is enabled - Re-run install script to repair ### Theme colors not matching preview - Verify `theme.json` color keys are correct (primary, secondary, accent, background, surface, text, textSecondary, border) - Check Codex's native appearance setting — theme applies `codexAppearance.light` or `codexAppearance.dark` to the app - Some UI elements may use Codex's built-in styles — skin only overrides injected CSS ### Uninstall doesn't remove all files ```bash # macOS rm -rf ~/Library/Application\ Support/HeiGeCodexSkin rm ~/Library/LaunchAgents/com.heigeai.codex-skin-controller.plist launchctl remove com.heigeai.codex-skin-controller # Windows schtasks /Delete /TN HeiGeAI_CodexSkinController /F rd /s /q "%APPDATA%\HeiGeCodexSkin" rd /s /q "%LOCALAPPDATA%\Programs\HeiGeCodexSkin" ``` ## Security Notes - CDP on loopback (`127.0.0.1:9341`) has **no authentication** — any local process with same user privileges can connect - Injection only occurs during local debugging session; native Codex signature is **not modified** - Full security policy: `SECURITY.md` in project root - Asset provenance (themes, images): `ASSET_PROVENANCE.md` ## Real-World Example: AI-Driven Theme Pipeline ```javascript // Install the .skill file in Codex Desktop first: // output/heige-codex-skin-studio.skill // Then in Codex chat, prompt: // "Generate a pastel sakura landscape, 1920x1080, then create a Codex theme" // Codex will execute (simplified):
عرض على GitHub
ملف SKILL.md هذا كبير جدا، لذلك يعرض SkillsMP القسم الاول فقط هنا. عرض على GitHub