From d24cea353500aec2308164ac2ea280334d184c0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Thu, 11 Mar 2021 17:44:49 +0100 Subject: [PATCH] desktop display from env. --- internal/config/desktop.go | 6 ++++++ internal/desktop/manager.go | 10 ++++------ internal/desktop/xorg/xorg.go | 10 +++------- neko.go | 1 - 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/internal/config/desktop.go b/internal/config/desktop.go index f67daace..416924df 100644 --- a/internal/config/desktop.go +++ b/internal/config/desktop.go @@ -1,6 +1,7 @@ package config import ( + "os" "regexp" "strconv" @@ -9,6 +10,8 @@ import ( ) type Desktop struct { + Display string + ScreenWidth int ScreenHeight int ScreenRate int16 @@ -24,6 +27,9 @@ func (Desktop) Init(cmd *cobra.Command) error { } func (s *Desktop) Set() { + // Display is provided by env variable + s.Display = os.Getenv("DISPLAY") + s.ScreenWidth = 1280 s.ScreenHeight = 720 s.ScreenRate = 30 diff --git a/internal/desktop/manager.go b/internal/desktop/manager.go index 38534c7f..cef9b6ab 100644 --- a/internal/desktop/manager.go +++ b/internal/desktop/manager.go @@ -21,24 +21,22 @@ type DesktopManagerCtx struct { cleanup *time.Ticker shutdown chan bool emmiter events.EventEmmiter - display string config *config.Desktop } -func New(display string, config *config.Desktop) *DesktopManagerCtx { +func New(config *config.Desktop) *DesktopManagerCtx { return &DesktopManagerCtx{ logger: log.With().Str("module", "desktop").Logger(), cleanup: time.NewTicker(1 * time.Second), shutdown: make(chan bool), emmiter: events.New(), - display: display, config: config, } } func (manager *DesktopManagerCtx) Start() { - if err := xorg.DisplayOpen(manager.display); err != nil { - manager.logger.Warn().Err(err).Msg("unable to open dispaly") + if xorg.DisplayOpen(manager.config.Display) { + manager.logger.Panic().Str("display", manager.config.Display).Msg("unable to open display") } xorg.GetScreenConfigurations() @@ -51,7 +49,7 @@ func (manager *DesktopManagerCtx) Start() { manager.logger.Warn().Err(err).Msg("unable to set initial screen size") } - go xevent.EventLoop(manager.display) + go xevent.EventLoop(manager.config.Display) // In case it was opened go manager.CloseFileChooserDialog() diff --git a/internal/desktop/xorg/xorg.go b/internal/desktop/xorg/xorg.go index cccd5d87..ab079de2 100644 --- a/internal/desktop/xorg/xorg.go +++ b/internal/desktop/xorg/xorg.go @@ -39,19 +39,15 @@ func GetScreenConfigurations() { C.XGetScreenConfigurations() } -func DisplayOpen(display string) error { +func DisplayOpen(display string) bool { mu.Lock() defer mu.Unlock() displayUnsafe := C.CString(display) defer C.free(unsafe.Pointer(displayUnsafe)) - err := C.XDisplayOpen(displayUnsafe) - if int(err) == 1 { - return fmt.Errorf("Could not open display %s.", display) - } - - return nil + ok := C.XDisplayOpen(displayUnsafe) + return int(ok) == 1 } func DisplayClose() { diff --git a/neko.go b/neko.go index c2b2d125..ceaa9105 100644 --- a/neko.go +++ b/neko.go @@ -137,7 +137,6 @@ func (neko *Neko) Start() { } neko.desktopManager = desktop.New( - neko.Configs.Capture.Display, neko.Configs.Desktop, ) neko.desktopManager.Start()