mirror of
https://github.com/netbirdio/netbird.git
synced 2026-05-19 07:09:56 +00:00
29 lines
852 B
Go
29 lines
852 B
Go
//go:build linux && !android
|
|
|
|
package internal
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
vncserver "github.com/netbirdio/netbird/client/vnc/server"
|
|
)
|
|
|
|
// newConsoleVNC builds a framebuffer + uinput VNC backend for boxes
|
|
// without a running X server. Used as the auto-fallback when
|
|
// newPlatformVNC can't reach X. Returns an error when /dev/fb0 or
|
|
// /dev/uinput aren't usable so the caller can drop back to a stub.
|
|
func newConsoleVNC() (vncserver.ScreenCapturer, vncserver.InputInjector, error) {
|
|
poller := vncserver.NewFBPoller("")
|
|
w, h := poller.Width(), poller.Height()
|
|
if w == 0 || h == 0 {
|
|
poller.Close()
|
|
return nil, nil, fmt.Errorf("framebuffer capturer init failed (is /dev/fb0 readable?)")
|
|
}
|
|
inj, err := vncserver.NewUInputInjector(w, h)
|
|
if err != nil {
|
|
poller.Close()
|
|
return nil, nil, fmt.Errorf("uinput init: %w", err)
|
|
}
|
|
return poller, inj, nil
|
|
}
|