From 6031f081cfe5acbb2be4a5fd317b3eb69cab4419 Mon Sep 17 00:00:00 2001 From: sudacode Date: Sun, 30 Nov 2025 12:41:45 -0800 Subject: [PATCH] update to work with new monitor --- change-wallpaper.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/change-wallpaper.go b/change-wallpaper.go index 595a425..5329e3b 100644 --- a/change-wallpaper.go +++ b/change-wallpaper.go @@ -175,7 +175,7 @@ func downloadRandomWallpaper(wallpaperPath string, r *rand.Rand, topics []string fmt.Fprintf(os.Stderr, "Searching for wallpapers related to: %s\n", displayName) // Get wallpapers from Wallhaven API - resp, err := http.Get(fmt.Sprintf("%s/search?q=%s&purity=100&categories=110&sorting=random", wallhavenAPI, query)) + resp, err := http.Get(fmt.Sprintf("%s/search?q=%s&purity=100&categories=110&sorting=random&atleast=3440x1440", wallhavenAPI, query)) if err != nil { fmt.Fprintf(os.Stderr, "Error fetching from Wallhaven: %v\n", err) return "", "" @@ -272,11 +272,26 @@ func ensureSized(wallpaperPath string) (string, error) { return "", err } - if src.Bounds().Dx() == targetWidth && src.Bounds().Dy() == targetHeight { + srcWidth := float64(src.Bounds().Dx()) + srcHeight := float64(src.Bounds().Dy()) + targetW := float64(targetWidth) + targetH := float64(targetHeight) + + // Calculate scale factor to fit image within target while maintaining aspect ratio + scaleW := targetW / srcWidth + scaleH := targetH / srcHeight + scale := min(scaleW, scaleH) + + // If image already fits within target dimensions, no resize needed + if scale >= 1.0 { return wallpaperPath, nil } - dst := image.NewRGBA(image.Rect(0, 0, targetWidth, targetHeight)) + // Calculate new dimensions maintaining aspect ratio (best fit) + newWidth := int(srcWidth * scale) + newHeight := int(srcHeight * scale) + + dst := image.NewRGBA(image.Rect(0, 0, newWidth, newHeight)) draw.CatmullRom.Scale(dst, dst.Bounds(), src, src.Bounds(), draw.Over, nil) var ext string @@ -295,7 +310,7 @@ func ensureSized(wallpaperPath string) (string, error) { } base := strings.TrimSuffix(filepath.Base(wallpaperPath), filepath.Ext(wallpaperPath)) - resizedPath := filepath.Join(filepath.Dir(wallpaperPath), fmt.Sprintf("%s-%dx%d%s", base, targetWidth, targetHeight, ext)) + resizedPath := filepath.Join(filepath.Dir(wallpaperPath), fmt.Sprintf("%s-%dx%d%s", base, newWidth, newHeight, ext)) outFile, err := os.Create(resizedPath) if err != nil {