aboutsummaryrefslogtreecommitdiff
path: root/config/srd/cross_platform_test.lua
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 /config/srd/cross_platform_test.lua
parent105732dde10b317a81d5a10a3f66b315d6f85015 (diff)
downloadsrdwm-e4a0432383331e013808a97b7c24707e4ddc4726.tar.gz
srdwm-e4a0432383331e013808a97b7c24707e4ddc4726.zip
Initial Commit
Diffstat (limited to 'config/srd/cross_platform_test.lua')
-rw-r--r--config/srd/cross_platform_test.lua240
1 files changed, 240 insertions, 0 deletions
diff --git a/config/srd/cross_platform_test.lua b/config/srd/cross_platform_test.lua
new file mode 100644
index 0000000..7299630
--- /dev/null
+++ b/config/srd/cross_platform_test.lua
@@ -0,0 +1,240 @@
+-- Cross-Platform Test Configuration
+-- This file demonstrates all the cross-platform functionality of SRDWM
+
+print("Loading cross-platform test configuration...")
+
+-- Platform detection and configuration
+local platform = srd.get_platform()
+print("Detected platform: " .. platform)
+
+-- Platform-specific settings
+if platform == "wayland" then
+ print("Configuring for Wayland/XWayland...")
+ srd.set("general.decorations_enabled", true)
+ srd.set("general.border_width", 2)
+ srd.set("general.border_color", "#2e3440")
+
+ -- Wayland-specific keybindings
+ srd.bind("Mod4+w", function()
+ -- Toggle server-side decorations
+ local window = srd.window.focused()
+ if window then
+ local current = srd.window.get_decorations(window.id)
+ srd.window.set_decorations(window.id, not current)
+ print("Wayland: Toggled server-side decorations")
+ end
+ end)
+
+elseif platform == "x11" then
+ print("Configuring for X11...")
+ srd.set("general.decorations_enabled", true)
+ srd.set("general.border_width", 3)
+ srd.set("general.border_color", "#2e3440")
+
+ -- X11-specific keybindings
+ srd.bind("Mod4+x", function()
+ -- Toggle frame windows
+ local window = srd.window.focused()
+ if window then
+ local current = srd.window.get_decorations(window.id)
+ srd.window.set_decorations(window.id, not current)
+ print("X11: Toggled frame windows")
+ end
+ end)
+
+elseif platform == "windows" then
+ print("Configuring for Windows...")
+ srd.set("general.decorations_enabled", true)
+ srd.set("general.border_width", 2)
+ srd.set("general.border_color", "#2e3440")
+
+ -- Windows-specific keybindings
+ srd.bind("Mod4+d", function()
+ -- Toggle DWM border colors
+ local window = srd.window.focused()
+ if window then
+ srd.window.set_border_color(window.id, 255, 0, 0) -- Red border
+ print("Windows: Set DWM border color")
+ end
+ end)
+
+elseif platform == "macos" then
+ print("Configuring for macOS...")
+ srd.set("general.decorations_enabled", false) -- Limited decoration support
+ srd.set("general.border_width", 1)
+ srd.set("general.border_color", "#2e3440")
+
+ -- macOS-specific keybindings
+ srd.bind("Mod4+m", function()
+ -- Toggle overlay windows (macOS limitation)
+ local window = srd.window.focused()
+ if window then
+ print("macOS: Overlay window toggle requested")
+ end
+ end)
+end
+
+-- Universal cross-platform keybindings
+srd.bind("Mod4+1", function()
+ srd.layout.set("tiling")
+ print("Switched to tiling layout")
+end)
+
+srd.bind("Mod4+2", function()
+ srd.layout.set("dynamic")
+ print("Switched to dynamic layout (smart placement)")
+end)
+
+srd.bind("Mod4+3", function()
+ srd.layout.set("floating")
+ print("Switched to floating layout")
+end)
+
+-- Window state controls (cross-platform)
+srd.bind("Mod4+f", function()
+ local window = srd.window.focused()
+ if window then
+ srd.window.toggle_floating(window.id)
+ local floating = srd.window.is_floating(window.id)
+ print("Window floating state: " .. tostring(floating))
+ end
+end)
+
+srd.bind("Mod4+t", function()
+ local window = srd.window.focused()
+ if window then
+ srd.window.set_floating(window.id, false)
+ print("Set window to tiling mode")
+ end
+end)
+
+srd.bind("Mod4+l", function()
+ local window = srd.window.focused()
+ if window then
+ srd.window.set_floating(window.id, true)
+ print("Set window to floating mode")
+ end
+end)
+
+-- Decoration controls (cross-platform)
+srd.bind("Mod4+b", function()
+ local window = srd.window.focused()
+ if window then
+ srd.window.set_border_color(window.id, 0, 255, 0) -- Green border
+ print("Set green border")
+ end
+end)
+
+srd.bind("Mod4+n", function()
+ local window = srd.window.focused()
+ if window then
+ srd.window.set_border_color(window.id, 0, 0, 255) -- Blue border
+ print("Set blue border")
+ end
+end)
+
+srd.bind("Mod4+r", function()
+ local window = srd.window.focused()
+ if window then
+ srd.window.set_border_color(window.id, 255, 0, 0) -- Red border
+ print("Set red border")
+ end
+end)
+
+srd.bind("Mod4+0", function()
+ local window = srd.window.focused()
+ if window then
+ -- Reset to default colors
+ srd.window.set_border_color(window.id, 46, 52, 64) -- Default color
+ srd.window.set_border_width(window.id, 2)
+ print("Reset to default decoration")
+ end
+end)
+
+-- Smart placement test
+srd.bind("Mod4+s", function()
+ print("Smart placement test:")
+ print("- Grid placement: Windows 11-style window arrangement")
+ print("- Cascade placement: Overlapping window management")
+ print("- Snap-to-edge: Edge snapping functionality")
+ print("- Overlap detection: Prevents window overlap")
+end)
+
+-- Platform-specific feature tests
+function test_platform_features()
+ print("Testing platform-specific features...")
+
+ if platform == "wayland" then
+ print("Wayland features:")
+ print("- zxdg-decoration protocol support")
+ print("- XWayland integration")
+ print("- Layer shell support")
+ print("- Server-side decorations")
+
+ elseif platform == "x11" then
+ print("X11 features:")
+ print("- Frame window reparenting")
+ print("- Custom titlebar drawing")
+ print("- Border customization")
+ print("- Event handling")
+
+ elseif platform == "windows" then
+ print("Windows features:")
+ print("- DWM border color API")
+ print("- Native decoration toggling")
+ print("- Global keyboard/mouse hooks")
+ print("- Window class management")
+
+ elseif platform == "macos" then
+ print("macOS features:")
+ print("- Accessibility APIs")
+ print("- Event tap system")
+ print("- Core Graphics integration")
+ print("- Limited decoration support")
+ end
+end
+
+-- Test function for decoration system
+function test_decoration_system()
+ print("Testing decoration system...")
+
+ -- Test decoration toggling
+ srd.window.set_decorations("test_window", true)
+ local has_decorations = srd.window.get_decorations("test_window")
+ print("Decoration test: " .. tostring(has_decorations))
+
+ -- Test border color
+ srd.window.set_border_color("test_window", 128, 128, 128)
+ print("Border color test: RGB(128, 128, 128)")
+
+ -- Test border width
+ srd.window.set_border_width("test_window", 5)
+ print("Border width test: 5px")
+end
+
+-- Test function for window state system
+function test_window_state_system()
+ print("Testing window state system...")
+
+ -- Test floating state
+ srd.window.set_floating("test_window", true)
+ local is_floating = srd.window.is_floating("test_window")
+ print("Floating state test: " .. tostring(is_floating))
+
+ -- Test toggle
+ srd.window.toggle_floating("test_window")
+ is_floating = srd.window.is_floating("test_window")
+ print("Toggle test: " .. tostring(is_floating))
+end
+
+-- Run tests
+test_platform_features()
+test_decoration_system()
+test_window_state_system()
+
+print("Cross-platform test configuration loaded successfully!")
+print("Use Mod4+1/2/3 to switch layouts")
+print("Use Mod4+f to toggle floating")
+print("Use Mod4+b/n/r to change border colors")
+print("Use Mod4+0 to reset decorations")
+print("Use Mod4+s for smart placement info")