aboutsummaryrefslogtreecommitdiff
path: root/docs/GUI_SETTINGS.md
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2025-09-26 12:23:19 +0200
committersrdusr <trevorgray@srdusr.com>2025-09-26 12:23:19 +0200
commite4a0432383331e013808a97b7c24707e4ddc4726 (patch)
tree3ef4465be03bc7b92a0b048f02f76475045404b6 /docs/GUI_SETTINGS.md
parent105732dde10b317a81d5a10a3f66b315d6f85015 (diff)
downloadsrdwm-e4a0432383331e013808a97b7c24707e4ddc4726.tar.gz
srdwm-e4a0432383331e013808a97b7c24707e4ddc4726.zip
Initial Commit
Diffstat (limited to 'docs/GUI_SETTINGS.md')
-rw-r--r--docs/GUI_SETTINGS.md382
1 files changed, 382 insertions, 0 deletions
diff --git a/docs/GUI_SETTINGS.md b/docs/GUI_SETTINGS.md
new file mode 100644
index 0000000..bc892b5
--- /dev/null
+++ b/docs/GUI_SETTINGS.md
@@ -0,0 +1,382 @@
+# 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.
+
+