From 96ab1c53bb45749fe8a1c92fe64e0405389696ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Thu, 18 Jul 2024 21:52:00 +0200 Subject: [PATCH] allow setting desktop / capture display separately. --- server/internal/config/capture.go | 15 ++++++++++++--- server/internal/config/desktop.go | 13 +++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/server/internal/config/capture.go b/server/internal/config/capture.go index 700875e3..fd2a5afe 100644 --- a/server/internal/config/capture.go +++ b/server/internal/config/capture.go @@ -75,6 +75,11 @@ func (Capture) Init(cmd *cobra.Command) error { } // videos + cmd.PersistentFlags().String("capture.video.display", "", "X display to capture") + if err := viper.BindPFlag("capture.video.display", cmd.PersistentFlags().Lookup("capture.video.display")); err != nil { + return err + } + cmd.PersistentFlags().String("capture.video.codec", "vp8", "video codec to be used") if err := viper.BindPFlag("capture.video.codec", cmd.PersistentFlags().Lookup("capture.video.codec")); err != nil { return err @@ -309,8 +314,12 @@ func (Capture) InitV2(cmd *cobra.Command) error { func (s *Capture) Set() { var ok bool - // Display is provided by env variable - s.Display = os.Getenv("DISPLAY") + s.Display = viper.GetString("capture.video.display") + + // Display is provided by env variable unless explicitly set + if s.Display == "" { + s.Display = os.Getenv("DISPLAY") + } // video videoCodec := viper.GetString("capture.video.codec") @@ -400,7 +409,7 @@ func (s *Capture) SetV2() { if display := viper.GetString("display"); display != "" { s.Display = display - log.Warn().Msg("you are using v2 configuration 'NEKO_DISPLAY' which is deprecated, please use 'DISPLAY' instead") + log.Warn().Msg("you are using v2 configuration 'NEKO_DISPLAY' which is deprecated, please use 'NEKO_CAPTURE_VIDEO_DISPLAY' and/or 'NEKO_DESKTOP_DISPLAY' instead, also consider using 'DISPLAY' env variable if both should be the same") } if videoCodec := viper.GetString("video_codec"); videoCodec != "" { diff --git a/server/internal/config/desktop.go b/server/internal/config/desktop.go index 5ddf5d4d..63be0f05 100644 --- a/server/internal/config/desktop.go +++ b/server/internal/config/desktop.go @@ -26,6 +26,11 @@ type Desktop struct { } func (Desktop) Init(cmd *cobra.Command) error { + cmd.PersistentFlags().String("desktop.display", "", "X display to use for desktop sharing") + if err := viper.BindPFlag("desktop.display", cmd.PersistentFlags().Lookup("desktop.display")); err != nil { + return err + } + cmd.PersistentFlags().String("desktop.screen", "1280x720@30", "default screen size and framerate") if err := viper.BindPFlag("desktop.screen", cmd.PersistentFlags().Lookup("desktop.screen")); err != nil { return err @@ -69,8 +74,12 @@ func (Desktop) InitV2(cmd *cobra.Command) error { } func (s *Desktop) Set() { - // Display is provided by env variable - s.Display = os.Getenv("DISPLAY") + s.Display = viper.GetString("desktop.display") + + // Display is provided by env variable unless explicitly set + if s.Display == "" { + s.Display = os.Getenv("DISPLAY") + } s.ScreenSize = types.ScreenSize{ Width: 1280,