feat: add optional output_path, change default to monitors.conf

This commit is contained in:
Maksim Totmin
2026-06-22 20:37:07 +07:00
parent 2a49aa98ed
commit 15691c0918
5 changed files with 59 additions and 17 deletions
+5 -5
View File
@@ -60,7 +60,7 @@ func run(logger *slog.Logger) error {
logger.Info("config loaded", "path", configPath, "backend", cfg.Backend)
// Resolve the backend (auto-detect or explicit).
b, err := resolveBackend(cfg.Backend, logger)
b, err := resolveBackend(cfg.Backend, cfg.OutputPath, logger)
if err != nil {
return fmt.Errorf("resolve backend: %w", err)
}
@@ -86,11 +86,11 @@ func run(logger *slog.Logger) error {
// resolveBackend returns the first available backend. When backendName is
// "auto", backends are probed in priority order. To add a new backend,
// register it in the backends slice below.
func resolveBackend(backendName string, logger *slog.Logger) (backend.Backend, error) {
func resolveBackend(backendName, outputPath string, logger *slog.Logger) (backend.Backend, error) {
// Ordered by priority: preferred backends first.
backends := []struct {
name string
factory func(*slog.Logger) (backend.Backend, error)
factory func(*slog.Logger, string) (backend.Backend, error)
}{
{"hyprland", backend.NewHyprland},
// Future: {"sway", backend.NewSway},
@@ -99,7 +99,7 @@ func resolveBackend(backendName string, logger *slog.Logger) (backend.Backend, e
if backendName == "auto" {
for _, entry := range backends {
b, err := entry.factory(logger)
b, err := entry.factory(logger, outputPath)
if err == nil {
logger.Info("auto-detected backend", "name", b.Name())
return b, nil
@@ -112,7 +112,7 @@ func resolveBackend(backendName string, logger *slog.Logger) (backend.Backend, e
// Explicit backend selection.
for _, entry := range backends {
if entry.name == backendName {
b, err := entry.factory(logger)
b, err := entry.factory(logger, outputPath)
if err != nil {
return nil, fmt.Errorf("backend %s: %w", backendName, err)
}