oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git

removed md file

Commit
1c05cedc1e945dfd46b620a68fb42a4074cdc806
Parent
1474578
Author
tonybtw <tonybtw@tonybtw.com>
Date
2025-11-08 07:21:57

Diff

diff --git a/UPDATES.md b/UPDATES.md
deleted file mode 100644
index 1309c84..0000000
--- a/UPDATES.md
+++ /dev/null
@@ -1,407 +0,0 @@
-# OXWM Recent Updates
-
-## Lua Configuration Support (Latest)
-
-OXWM now supports **Lua-based configuration** as an alternative to the compiled Rust configuration. This is a major update that makes the window manager much more user-friendly and easier to customize.
-
-### Key Features
-
-#### 1. **Dynamic Configuration - No Compilation Required**
-- Edit your config file and reload with `Mod+Shift+R` - changes apply instantly
-- No need to recompile the entire window manager for config changes
-- Configuration file located at `~/.config/oxwm/config.lua`
-
-#### 2. **Full Feature Parity**
-The Lua configuration supports all features previously available in Rust config:
-- Window appearance (borders, gaps, fonts)
-- Keybindings (single keys and keychords)
-- Layout management and custom symbols
-- Status bar configuration
-- Workspace tags
-- Autostart commands
-- Color schemes
-
-#### 3. **LSP Support & Autocomplete**
-Config files include comprehensive type annotations for Lua language servers:
-- Full autocomplete for all configuration options
-- Type checking to catch errors before runtime
-- Hover documentation for all fields
-- IntelliSense support in modern editors (VS Code, Neovim, etc.)
-
-### Configuration Structure
-
-```lua
----@type Config
-config = {
-    -- Appearance
-    border_width = 2,
-    border_focused = 0x6dade3,
-    border_unfocused = 0xbbbbbb,
-    font = "monospace:style=Bold:size=10",
-
-    -- Window gaps
-    gaps_enabled = true,
-    gap_inner_horizontal = 5,
-    gap_inner_vertical = 5,
-    gap_outer_horizontal = 5,
-    gap_outer_vertical = 5,
-
-    -- Basics
-    modkey = "Mod4",
-    terminal = "st",
-
-    -- Workspace tags
-    tags = {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
-
-    -- Keybindings (see below for details)
-    keybindings = { ... },
-
-    -- Status bar blocks (see below for details)
-    status_blocks = { ... },
-
-    -- Color schemes
-    scheme_normal = { ... },
-    scheme_occupied = { ... },
-    scheme_selected = { ... },
-
-    -- Autostart commands
-    autostart = {
-        "picom -b",
-        "nitrogen --restore &",
-    },
-}
-```
-
-### Keybindings
-
-#### Single Key Bindings
-```lua
-{
-    modifiers = {"Mod", "Shift"},
-    key = "Return",
-    action = "Spawn",
-    arg = "alacritty"
-}
-```
-
-#### Keychords (Multi-key Sequences)
-```lua
-{
-    keys = {
-        {modifiers = {"Mod4"}, key = "Space"},
-        {modifiers = {}, key = "T"}
-    },
-    action = "Spawn",
-    arg = "st"
-}
-```
-
-Press Escape to cancel any in-progress keychord.
-
-#### Available Modifiers
-- `"Mod"` - Replaced with your configured modkey
-- `"Mod1"` - Alt key
-- `"Mod4"` - Super/Windows key
-- `"Shift"` - Shift key
-- `"Control"` - Control key
-- `"Mod2"`, `"Mod3"`, `"Mod5"` - Additional modifiers
-
-#### Available Actions
-- `"Spawn"` - Launch a program (arg: string or string[])
-- `"KillClient"` - Close focused window
-- `"FocusStack"` - Focus next/prev in stack (arg: 1 or -1)
-- `"FocusDirection"` - Focus by direction (arg: 0=up, 1=down, 2=left, 3=right)
-- `"SwapDirection"` - Swap window by direction (arg: 0=up, 1=down, 2=left, 3=right)
-- `"Quit"` - Exit window manager
-- `"Restart"` - Restart and reload config
-- `"Recompile"` - Recompile and restart (for Rust config)
-- `"ViewTag"` - Switch to tag (arg: tag index)
-- `"MoveToTag"` - Move window to tag (arg: tag index)
-- `"ToggleGaps"` - Toggle gaps on/off
-- `"ToggleFullScreen"` - Toggle fullscreen mode
-- `"ToggleFloating"` - Toggle floating mode
-- `"ChangeLayout"` - Switch to specific layout (arg: layout name)
-- `"CycleLayout"` - Cycle through layouts
-- `"FocusMonitor"` - Focus monitor (arg: 1 or -1)
-- `"SmartMoveWin"` - Smart window movement
-- `"ExchangeClient"` - Exchange window positions
-
-### Status Bar Configuration
-
-Status blocks support various command types for displaying system information:
-
-```lua
-status_blocks = {
-    -- RAM usage
-    {
-        format = "Ram: {used}/{total} GB",
-        command = "Ram",
-        interval_secs = 5,
-        color = 0x7aa2f7,
-        underline = true
-    },
-
-    -- Date/Time with custom format
-    {
-        format = "{}",
-        command = "DateTime",
-        command_arg = "%a, %b %d - %-I:%M %P",
-        interval_secs = 1,
-        color = 0x0db9d7,
-        underline = true
-    },
-
-    -- Custom shell command
-    {
-        format = "Kernel: {}",
-        command = "Shell",
-        command_arg = "uname -r",
-        interval_secs = 999999999,
-        color = 0xf7768e,
-        underline = true
-    },
-
-    -- Static text (separator)
-    {
-        format = " │  ",
-        command = "Static",
-        interval_secs = 999999999,
-        color = 0xa9b1d6,
-        underline = false
-    },
-
-    -- Battery status
-    {
-        format = "{}",
-        command = "Battery",
-        interval_secs = 30,
-        color = 0x9ece6a,
-        underline = true,
-        battery_formats = {
-            charging = "⚡ {}%",
-            discharging = "🔋 {}%",
-            full = "✓ {}%"
-        }
-    },
-}
-```
-
-#### Available Status Block Commands
-- `"Ram"` - Shows RAM usage (no command_arg needed)
-- `"DateTime"` - Shows date/time with strftime format in command_arg
-- `"Shell"` - Runs shell command from command_arg
-- `"Static"` - Static text (format field determines what's shown)
-- `"Battery"` - Shows battery status (requires battery_formats table)
-
-### Layout Symbols
-
-Customize how layouts appear in the status bar:
-
-```lua
-layout_symbols = {
-    {name = "tiling", symbol = "[T]"},
-    {name = "normie", symbol = "[F]"},
-}
-```
-
-### Color Schemes
-
-Define color schemes for tag indicators in the status bar:
-
-```lua
-scheme_normal = {
-    foreground = 0xbbbbbb,
-    background = 0x1a1b26,
-    underline = 0x444444
-},
-scheme_occupied = {
-    foreground = 0x0db9d7,
-    background = 0x1a1b26,
-    underline = 0x0db9d7
-},
-scheme_selected = {
-    foreground = 0x0db9d7,
-    background = 0x1a1b26,
-    underline = 0xad8ee6
-}
-```
-
-### Autostart Commands
-
-Commands to run when the window manager starts:
-
-```lua
-autostart = {
-    "picom -b",
-    "nitrogen --restore &",
-    "dunst &",
-}
-```
-
-### Advanced Usage
-
-You can use Lua's full programming capabilities for dynamic configuration:
-
-```lua
--- Generate keybindings programmatically
-for i = 1, 9 do
-    table.insert(config.keybindings, {
-        modifiers = {"Mod"},
-        key = tostring(i),
-        action = "ViewTag",
-        arg = i - 1
-    })
-end
-
--- Create helper functions
-local function create_spawn_binding(mods, key, cmd)
-    return {modifiers = mods, key = key, action = "Spawn", arg = cmd}
-end
-
-table.insert(config.keybindings,
-    create_spawn_binding({"Mod"}, "Return", terminal))
-```
-
-### Migration from Rust Config
-
-For existing users with Rust-based configurations:
-1. Your old Rust config still works - no breaking changes
-2. To migrate to Lua, run OXWM and it will generate `~/.config/oxwm/config.lua`
-3. Customize the generated file to match your preferences
-4. Reload with `Mod+Shift+R` to apply changes
-
-### Technical Implementation
-
-- Configuration parsing via `mlua` (Lua 5.4)
-- Full deserialization into Rust types with `serde`
-- Hot-reloading on `Restart` action
-- Comprehensive error reporting for config issues
-- Type-safe validation of all configuration values
-
-### Files
-
-- Template: `templates/config.lua` - Default configuration template
-- User config: `~/.config/oxwm/config.lua` - User's configuration file
-- Test config: `resources/test-config.lua` - Configuration for Xephyr testing
-
----
-
-## Documentation Suggestions
-
-### New Pages to Create
-
-1. **"Lua Configuration Guide"** - Complete guide to Lua config
-   - Getting started
-   - Configuration structure
-   - Examples for common use cases
-   - Tips and best practices
-
-2. **"Keybindings Reference"** - Detailed keybinding documentation
-   - How to define single key bindings
-   - How to create keychords
-   - List of all available actions with examples
-   - Modifier key reference
-
-3. **"Status Bar Configuration"** - Status bar setup guide
-   - Available command types
-   - Format string syntax
-   - Custom shell commands
-   - Battery configuration
-   - Creating custom blocks
-
-### Pages to Update
-
-1. **Installation/Quickstart**
-   - Mention Lua configuration as the recommended approach
-   - Add note that no recompilation needed for config changes
-   - Update first-run instructions
-
-2. **Configuration Page** (if exists)
-   - Add prominent notice about Lua support
-   - Deprecation notice for Rust config (if planned)
-   - Link to new Lua configuration guide
-
-3. **Keybindings Page** (if exists)
-   - Update with Lua syntax
-   - Add keychord examples
-   - Update modifier key documentation
-
-### Highlights for Documentation
-
-**Key Selling Points:**
-- "Edit and reload instantly - no compilation required"
-- "LSP-powered autocomplete for config editing"
-- "Full Lua programming support for dynamic configs"
-- "Keychord support for complex key combinations"
-
-**Common Questions to Address:**
-- How do I reload my config? (`Mod+Shift+R`)
-- Where is my config file? (`~/.config/oxwm/config.lua`)
-- Can I still use the Rust config? (Yes, for now)
-- How do I see config errors? (Check terminal output when starting OXWM)
-
-### Example Snippets for Docs
-
-#### Quick Config Example
-```lua
--- Minimal working config
-config = {
-    modkey = "Mod4",
-    terminal = "alacritty",
-    tags = {"web", "code", "term"},
-    border_width = 2,
-    border_focused = 0x89b4fa,
-    border_unfocused = 0x45475a,
-    keybindings = {
-        {modifiers = {"Mod"}, key = "Return", action = "Spawn", arg = "alacritty"},
-        {modifiers = {"Mod"}, key = "Q", action = "KillClient"},
-        {modifiers = {"Mod", "Shift"}, key = "Q", action = "Quit"},
-    }
-}
-```
-
-#### Advanced Keychord Example
-```lua
--- Open application menu with Mod+Space, then choose app
-keybindings = {
-    -- Mod+Space, then B -> browser
-    {
-        keys = {
-            {modifiers = {"Mod4"}, key = "Space"},
-            {modifiers = {}, key = "B"}
-        },
-        action = "Spawn",
-        arg = "firefox"
-    },
-    -- Mod+Space, then T -> terminal
-    {
-        keys = {
-            {modifiers = {"Mod4"}, key = "Space"},
-            {modifiers = {}, key = "T"}
-        },
-        action = "Spawn",
-        arg = "alacritty"
-    },
-}
-```
-
----
-
-## Other Recent Updates
-
-### Autostart Support
-- Added `autostart` field to configuration
-- Commands run when window manager starts
-- Useful for launching compositors, wallpaper setters, notification daemons, etc.
-
-### Fullscreen Fixes
-- Fixed issue where fullscreen windows weren't properly applying geometries
-- Border handling corrected for fullscreen mode
-
-### Layout Updates
-- Improved layout switching behavior
-- Better handling of layout symbols in status bar
-
----
-
-**Last Updated:** 2025-11-07