Files
klp/internal/clipboard/detector.go
2026-01-27 22:01:30 -06:00

40 lines
720 B
Go

package clipboard
import "os"
type DisplayServer int
const (
DisplayServerUnknown DisplayServer = iota
DisplayServerX11
DisplayServerWayland
)
// Detect returns the current display server type
func Detect() DisplayServer {
// Check for Wayland first
if os.Getenv("WAYLAND_DISPLAY") != "" {
return DisplayServerWayland
}
// Check for X11
if os.Getenv("DISPLAY") != "" {
return DisplayServerX11
}
return DisplayServerUnknown
}
// New creates a clipboard implementation for the current display server
func New() (Clipboard, error) {
switch Detect() {
case DisplayServerWayland:
return NewWayland()
case DisplayServerX11:
return NewX11()
default:
// Try X11 as fallback
return NewX11()
}
}