/* Rudo Example Themes - Comprehensive CSS Reference * ================================================= * * Copy sections you want to use into ~/.config/rudo/style.css * All values shown are examples - customize colors, sizes, and effects to taste. */ /* ============================================================ * THEME 1: Glassmorphism (Modern translucent) * ============================================================ */ .dock-surface { padding: 10px 14px; border-radius: 24px; border: 1px solid rgba(255, 255, 255, 0.18); background: rgba(255, 255, 255, 0.08); backdrop-filter: blur(20px); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.37), inset 0 1px 0 rgba(255, 255, 255, 0.2); } .dock-item, .picker-button { min-width: 48px; min-height: 48px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(255, 255, 255, 0.05); transition: all 0.2s ease; } .dock-item:hover, .picker-button:hover { background: rgba(255, 255, 255, 0.15); border-color: rgba(255, 255, 255, 0.25); transform: scale(1.05); } .dock-item.is-active { background: rgba(120, 180, 255, 0.25); border-color: rgba(120, 180, 255, 0.5); box-shadow: 0 0 15px rgba(120, 180, 255, 0.3); } .dock-indicator { min-width: 6px; min-height: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.4); } .dock-indicator.is-active { min-width: 20px; background: linear-gradient(90deg, #7ec8e3, #a8d5e5); } /* ============================================================ * THEME 2: Minimal Dark (Clean & understated) * ============================================================ */ /* .dock-surface { padding: 6px 10px; border-radius: 12px; border: none; background: rgba(20, 20, 25, 0.85); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); } .dock-item, .picker-button { min-width: 40px; min-height: 40px; border-radius: 8px; border: none; background: transparent; } .dock-item:hover, .picker-button:hover { background: rgba(255, 255, 255, 0.06); } .dock-item.is-active { background: rgba(255, 255, 255, 0.1); } .dock-indicator { min-width: 4px; min-height: 4px; background: #888; } .dock-indicator.is-active { min-width: 16px; background: #fff; } .dock-separator { margin: 0 6px; background: rgba(255, 255, 255, 0.1); } */ /* ============================================================ * THEME 3: Neon Cyberpunk (Vibrant & colorful) * ============================================================ */ /* .dock-surface { padding: 12px 16px; border-radius: 20px; border: 1px solid rgba(0, 255, 255, 0.3); background: rgba(10, 10, 20, 0.95); box-shadow: 0 0 30px rgba(0, 255, 255, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.1); } .dock-item, .picker-button { min-width: 50px; min-height: 50px; border-radius: 16px; border: 1px solid rgba(255, 0, 255, 0.2); background: rgba(255, 0, 255, 0.05); } .dock-item:hover, .picker-button:hover { border-color: rgba(255, 0, 255, 0.5); background: rgba(255, 0, 255, 0.15); box-shadow: 0 0 20px rgba(255, 0, 255, 0.3); } .dock-item.is-active { border-color: rgba(0, 255, 255, 0.6); background: rgba(0, 255, 255, 0.15); box-shadow: 0 0 25px rgba(0, 255, 255, 0.4); } .dock-item.is-running { border-color: rgba(255, 165, 0, 0.3); } .dock-indicator { background: #ff00ff; box-shadow: 0 0 10px #ff00ff; } .dock-indicator.is-active { background: #00ffff; box-shadow: 0 0 15px #00ffff; } .launch-spinner { color: #ff00ff; } */ /* ============================================================ * THEME 4: macOS-style (Familiar & polished) * ============================================================ */ /* .dock-surface { padding: 8px 12px; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.15); background: rgba(30, 30, 35, 0.75); backdrop-filter: blur(25px) saturate(180%); box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4), 0 1px 0 rgba(255, 255, 255, 0.1) inset; } .dock-item, .picker-button { min-width: 46px; min-height: 46px; border-radius: 12px; border: none; background: transparent; transition: transform 0.15s ease; } .dock-item:hover, .picker-button:hover { background: rgba(255, 255, 255, 0.08); transform: translateY(-3px); } .dock-item.is-active { background: rgba(255, 255, 255, 0.12); } .dock-item.is-running { border-color: rgba(255, 165, 0, 0.3); } .dock-indicator { min-width: 4px; min-height: 4px; background: rgba(255, 255, 255, 0.6); } .dock-indicator.is-active { min-width: 18px; background: linear-gradient(90deg, #60a5fa, #3b82f6); } */ /* ============================================================ * THEME 5: High Contrast (Accessibility focused) * ============================================================ */ /* .dock-surface { padding: 10px 14px; border-radius: 8px; border: 2px solid #000; background: #fff; box-shadow: 0 4px 0 #000; } .dock-item, .picker-button { min-width: 48px; min-height: 48px; border-radius: 6px; border: 2px solid #000; background: #fff; } .dock-item:hover, .picker-button:hover { background: #000; color: #fff; } .dock-item.is-active { background: #0066cc; border-color: #000; } .dock-indicator { min-width: 8px; min-height: 8px; background: #000; } .dock-indicator.is-active { min-width: 24px; background: #0066cc; } .dock-hover-strip { background: #000; border-radius: 4px; } */ /* ============================================================ * PICKER POPUP STYLING (applies to all themes) * ============================================================ */ .picker { padding: 16px; background: rgba(30, 30, 35, 0.98); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.1); } .picker-row { padding: 12px 16px; border-radius: 12px; border: 1px solid transparent; background: rgba(255, 255, 255, 0.03); transition: all 0.15s ease; } .picker-row:hover { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.15); } .picker-row-title { font-weight: 600; font-size: 14px; } .picker-row-subtitle { font-size: 12px; opacity: 0.5; } .picker-empty { padding: 40px; font-size: 14px; opacity: 0.5; } /* ============================================================ * CONTEXT MENU STYLING * ============================================================ */ .item-menu { padding: 12px; background: rgba(30, 30, 35, 0.98); border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.1); min-width: 200px; } .item-menu-title { font-weight: 700; font-size: 15px; padding: 4px 8px; } .item-menu-subtitle { font-size: 12px; opacity: 0.5; padding: 0 8px 8px; } .item-menu-section { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; opacity: 0.4; padding: 8px; } .item-menu button { padding: 8px 12px; border-radius: 8px; border: none; background: rgba(255, 255, 255, 0.05); margin: 2px 0; } .item-menu button:hover { background: rgba(255, 255, 255, 0.1); } .item-menu button.is-active { background: rgba(120, 180, 255, 0.2); } /* ============================================================ * ADVANCED: Animations & Transitions * ============================================================ */ /* Smooth reveal animation */ .dock-surface { animation: dock-appear 0.3s ease-out; } @keyframes dock-appear { from { opacity: 0; transform: translateY(20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } /* Bounce effect on launch */ .dock-item.is-launching { animation: launching-pulse 1s ease-in-out infinite; } @keyframes launching-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(0.95); } } /* Glow effect for active items */ .dock-item.is-active { background: rgba(120, 180, 255, 0.25); } /* ============================================================ * UTILITY: Hide elements * ============================================================ */ /* Hide the pin button completely (alternative to settings.json) */ /* .picker-button { display: none; } */ /* Hide separators */ /* .dock-separator { display: none; } */ /* Hide hover strip (if autohide is on but you want invisible trigger) */ /* .dock-hover-strip { background: transparent; } */ /* ============================================================ * INDIVIDUAL ELEMENT REFERENCE * ============================================================ Available CSS Classes: ---------------------- - .rudo-window - Main window container - .dock-surface - The dock bar itself - .dock-item - App icons/buttons - .picker-button - "Pin an application" button - .dock-indicator - Dot below icons - .dock-separator - Line between pinned/running - .dock-hover-strip - Hover area for autohide - .is-active - Modifier: active window - .is-running - Modifier: has open windows - .is-launching - Modifier: app is launching - .is-drop-target - Modifier: drag hover state - .launch-spinner - Loading spinner - .picker - App picker popup container - .picker-row - Picker list items - .picker-row-title - App name in picker - .picker-row-subtitle - App ID in picker - .picker-empty - No results message - .item-menu - Right-click context menu - .item-menu-title - App name in menu - .item-menu-subtitle - App ID in menu - .item-menu-section - "Windows" header in menu Tips: ----- 1. Use browser DevTools (GTK Inspector) to debug live: GTK_DEBUG=interactive rudo 2. Changes to style.css are detected every 700ms and reload automatically 3. Combine multiple themes by uncommenting sections or mixing properties 4. RGBA format for transparency: rgba(R, G, B, 0.0-1.0) Example: rgba(255, 100, 50, 0.8) = orange at 80% opacity 5. Common effects: - backdrop-filter: blur(20px) // Glass effect (requires compositor) - box-shadow: 0 4px 20px rgba(0,0,0,0.3) // Soft shadow - transition: all 0.2s ease // Smooth animations - transform: scale(1.1) // Grow effect */