diff options
Diffstat (limited to 'legacy-cpp/docs/GUI_SETTINGS.md')
| -rw-r--r-- | legacy-cpp/docs/GUI_SETTINGS.md | 382 |
1 files changed, 0 insertions, 382 deletions
diff --git a/legacy-cpp/docs/GUI_SETTINGS.md b/legacy-cpp/docs/GUI_SETTINGS.md deleted file mode 100644 index bc892b5..0000000 --- a/legacy-cpp/docs/GUI_SETTINGS.md +++ /dev/null @@ -1,382 +0,0 @@ -# SRDWM GUI Settings Program - -## Overview -The SRDWM GUI Settings program provides a user-friendly interface for configuring the window manager without editing Lua files directly. It integrates seamlessly with existing system settings structures on Windows, macOS, and Linux. - -## Architecture - -### Cross-Platform GUI Framework -- **Linux**: GTK4 with native desktop integration -- **Windows**: WinUI 3 with Windows Settings integration -- **macOS**: SwiftUI with System Preferences integration - -### System Integration -- **Windows**: Appears in Windows Settings > System > Window Manager -- **macOS**: Appears in System Preferences > Desktop & Screen Saver > Window Manager -- **Linux**: Appears in GNOME Settings, KDE System Settings, etc. - -## Main Interface - -### 1. General Settings Tab -``` -┌─────────────────────────────────────────────────────────┐ -│ General Settings │ -├─────────────────────────────────────────────────────────┤ -│ Default Layout: [Dynamic ▼] │ -│ Smart Window Placement: ☑ │ -│ Window Gap: [8] pixels │ -│ Border Width: [2] pixels │ -│ Enable Animations: ☑ │ -│ Animation Duration: [200] ms │ -│ │ -│ Focus Follows Mouse: ☐ │ -│ Mouse Follows Focus: ☑ │ -│ Auto Raise Windows: ☐ │ -│ Auto Focus Windows: ☑ │ -└─────────────────────────────────────────────────────────┘ -``` - -### 2. Key Bindings Tab -``` -┌─────────────────────────────────────────────────────────┐ -│ Key Bindings │ -├─────────────────────────────────────────────────────────┤ -│ Layout Switching │ -│ ├─ Tiling Layout: [Mod4+1] [Change] [Remove] │ -│ ├─ Dynamic Layout: [Mod4+2] [Change] [Remove] │ -│ └─ Floating Layout: [Mod4+3] [Change] [Remove] │ -│ │ -│ Window Management │ -│ ├─ Close Window: [Mod4+q] [Change] [Remove] │ -│ ├─ Minimize Window: [Mod4+m] [Change] [Remove] │ -│ └─ Maximize Window: [Mod4+f] [Change] [Remove] │ -│ │ -│ [Add New Binding] │ -└─────────────────────────────────────────────────────────┘ -``` - -### 3. Layouts Tab -``` -┌─────────────────────────────────────────────────────────┐ -│ Layouts │ -├─────────────────────────────────────────────────────────┤ -│ Tiling Layout │ -│ ├─ Split Ratio: [50]% [Reset] │ -│ ├─ Master Ratio: [60]% [Reset] │ -│ ├─ Auto Swap: ☑ │ -│ └─ Gaps: Inner [8] Outer [16] [Reset] │ -│ │ -│ Dynamic Layout │ -│ ├─ Snap Threshold: [50]px [Reset] │ -│ ├─ Grid Size: [6] [Reset] │ -│ ├─ Cascade Offset: [30]px [Reset] │ -│ └─ Smart Placement: ☑ │ -│ │ -│ [Add Custom Layout] │ -└─────────────────────────────────────────────────────────┘ -``` - -### 4. Themes Tab -``` -┌─────────────────────────────────────────────────────────┐ -│ Themes │ -├─────────────────────────────────────────────────────────┤ -│ Current Theme: [Nord ▼] [Preview] │ -│ │ -│ Colors │ -│ ├─ Background: [■] #2e3440 [Change] │ -│ ├─ Foreground: [■] #eceff4 [Change] │ -│ ├─ Primary: [■] #88c0d0 [Change] │ -│ └─ Secondary: [■] #81a1c1 [Change] │ -│ │ -│ Window Decorations │ -│ ├─ Border Width: [2]px [Reset] │ -│ ├─ Title Bar Height: [24]px [Reset] │ -│ └─ Font: [JetBrains Mono 10] [Change] │ -│ │ -│ [Import Theme] [Export Theme] [Create New] │ -└─────────────────────────────────────────────────────────┘ -``` - -### 5. Window Rules Tab -``` -┌─────────────────────────────────────────────────────────┐ -│ Window Rules │ -├─────────────────────────────────────────────────────────┤ -│ Rule 1: Firefox → Dynamic Layout │ -│ ├─ Match: Class = "firefox" │ -│ ├─ Action: Layout = "dynamic" │ -│ └─ [Edit] [Delete] │ -│ │ -│ Rule 2: Terminal → Tiling Layout │ -│ ├─ Match: Class = "terminal" │ -│ ├─ Action: Layout = "tiling" │ -│ └─ [Edit] [Delete] │ -│ │ -│ [Add New Rule] │ -└─────────────────────────────────────────────────────────┘ -``` - -### 6. Performance Tab -``` -┌─────────────────────────────────────────────────────────┐ -│ Performance │ -├─────────────────────────────────────────────────────────┤ -│ Graphics │ -│ ├─ Enable V-Sync: ☑ │ -│ ├─ Max FPS: [60] [Reset] │ -│ └─ Enable Caching: ☑ │ -│ │ -│ Memory │ -│ ├─ Window Cache Size: [100] [Reset] │ -│ ├─ Event Queue Size: [1000] [Reset] │ -│ └─ Layout Timeout: [16]ms [Reset] │ -│ │ -│ [Optimize for Performance] [Reset to Defaults] │ -└─────────────────────────────────────────────────────────┘ -``` - -## Key Binding Editor - -### Add/Edit Key Binding Dialog -``` -┌─────────────────────────────────────────────────────────┐ -│ Edit Key Binding │ -├─────────────────────────────────────────────────────────┤ -│ Key Combination: [Press keys here...] │ -│ Current: Mod4+Shift+1 │ -│ │ -│ Action Type: [Window Management ▼] │ -│ Action: [Close Window ▼] │ -│ │ -│ Custom Command: [________________] │ -│ │ -│ [Test Binding] [OK] [Cancel] │ -└─────────────────────────────────────────────────────────┘ -``` - -### Key Combination Parser -- **Mod4**: Super/Windows key -- **Mod1**: Alt key -- **Mod2**: Num Lock -- **Mod3**: Scroll Lock -- **Shift**: Shift key -- **Ctrl**: Control key - -## Theme Editor - -### Color Picker Integration -``` -┌─────────────────────────────────────────────────────────┐ -│ Color Picker │ -├─────────────────────────────────────────────────────────┤ -│ Color: [■] #88c0d0 │ -│ │ -│ RGB: R [136] G [192] B [208] │ -│ HSV: H [199] S [35] V [82] │ -│ │ -│ Preset Colors: │ -│ [■][■][■][■][■][■][■][■] │ -│ │ -│ [Pick from Screen] [OK] [Cancel] │ -└─────────────────────────────────────────────────────────┘ -``` - -### Font Selector -``` -┌─────────────────────────────────────────────────────────┐ -│ Font Selection │ -├─────────────────────────────────────────────────────────┤ -│ Font Family: [JetBrains Mono ▼] │ -│ Font Size: [10] [Reset] │ -│ Font Weight: [Normal ▼] │ -│ Font Style: [Normal ▼] │ -│ │ -│ Preview: The quick brown fox jumps over the lazy dog │ -│ │ -│ [OK] [Cancel] │ -└─────────────────────────────────────────────────────────┘ -``` - -## System Integration - -### Windows Integration -```cpp -// Windows Settings integration -class WindowsSettingsIntegration { -public: - void register_with_settings(); - void create_settings_page(); - void handle_settings_changes(); - -private: - void add_to_windows_settings(); - void create_registry_entries(); - void register_protocol_handler(); -}; -``` - -### macOS Integration -```swift -// macOS System Preferences integration -class MacOSSettingsIntegration: NSObject { - func registerWithSystemPreferences() - func createPreferencesPane() - func handlePreferencesChanges() - - private func addToSystemPreferences() - func createPreferencePaneBundle() - func registerURLScheme() -} -``` - -### Linux Integration -```cpp -// Linux desktop integration -class LinuxDesktopIntegration { -public: - void register_with_desktop(); - void create_settings_app(); - void handle_settings_changes(); - -private: - void add_to_gnome_settings(); - void add_to_kde_settings(); - void create_desktop_file(); - void register_mime_types(); -}; -``` - -## Configuration Management - -### Auto-Save and Validation -```cpp -class ConfigurationManager { -public: - void auto_save_changes(); - bool validate_configuration(); - void backup_configuration(); - void restore_configuration(); - -private: - void save_to_lua_files(); - void validate_lua_syntax(); - void create_backup(); - void notify_user_of_changes(); -}; -``` - -### Import/Export -```cpp -class ConfigurationIO { -public: - bool import_configuration(const std::string& path); - bool export_configuration(const std::string& path); - bool import_from_other_wm(const std::string& wm_name); - -private: - void parse_import_format(); - void convert_to_srdwm_format(); - void validate_imported_config(); -}; -``` - -## Advanced Features - -### Live Preview -- **Real-time updates**: Changes apply immediately -- **Window preview**: See how windows will look -- **Layout preview**: Visualize layout changes -- **Theme preview**: Live theme switching - -### Configuration Sync -- **Cloud sync**: Sync settings across devices -- **Version control**: Track configuration changes -- **Backup/restore**: Automatic configuration backups -- **Migration tools**: Import from other window managers - -### Accessibility -- **High contrast**: High contrast mode support -- **Screen reader**: Full screen reader compatibility -- **Keyboard navigation**: Complete keyboard navigation -- **Large text**: Scalable interface elements - -## Installation and Distribution - -### Package Integration -```bash -# Linux (Debian/Ubuntu) -sudo apt install srdwm-settings - -# Linux (Arch) -sudo pacman -S srdwm-settings - -# Windows (Chocolatey) -choco install srdwm-settings - -# macOS (Homebrew) -brew install srdwm-settings -``` - -### System Integration -```bash -# Linux desktop files -~/.local/share/applications/srdwm-settings.desktop - -# Windows registry -HKEY_CURRENT_USER\Software\SRDWM\Settings - -# macOS preferences -~/Library/Preferences/com.srdwm.settings.plist -``` - -## Development - -### Building the GUI -```bash -# Linux (GTK4) -meson build -Dgui=true -ninja -C build - -# Windows (WinUI 3) -dotnet build src/gui/SRDWM.Settings.Windows - -# macOS (SwiftUI) -xcodebuild -project src/gui/SRDWM.Settings.macOS.xcodeproj -``` - -### Testing -```bash -# Unit tests -ninja -C build test - -# Integration tests -ninja -C build integration-test - -# GUI tests -ninja -C build gui-test -``` - -## User Experience - -### First Run Experience -1. **Welcome dialog**: Introduction to SRDWM -2. **Quick setup**: Essential settings configuration -3. **Tutorial**: Interactive configuration guide -4. **Import options**: Import from existing setups - -### Contextual Help -- **Tooltips**: Hover for help text -- **Help button**: Context-sensitive help -- **Documentation**: Integrated user manual -- **Examples**: Sample configurations - -### Error Handling -- **Validation**: Real-time configuration validation -- **Error messages**: Clear, actionable error messages -- **Recovery**: Automatic error recovery -- **Logging**: Detailed error logging - -This GUI settings program provides a professional, user-friendly interface that integrates seamlessly with existing system structures while maintaining the power and flexibility of the Lua configuration system. - - |