New wallpapers every day
Luis Ángel Méndez Gort

Luis Ángel Méndez Gort @lamg

About: Solving problems

Location:
Germany
Joined:
Apr 4, 2023

New wallpapers every day

Publish Date: Oct 17 '24
2 0

There a lot of good wallpapers for free in the Internet, however I have found that the applications to get them automatically in Linux are quite disappointing. Because of that I made the following script.

#r "nuget: FsHttp"
#r "nuget: Fli"

open FsHttp
open Fli

let API_KEY = "<YOUR_UNSPLASH_API_KEY>"

type Urls = { full: string }

type UnsplashBody = { id: string; urls: Urls }
let wallpaper = "/YOUR/WALLPAPERS/wallpaper.jpeg"

let random () =
    http {
        GET "https://api.unsplash.com/photos/random?orientation=landscape&query=landscape"
        Authorization $"Client-ID {API_KEY}"
        header "Accept-Version" "v1"
    }
    |> Request.send
    |> Response.deserializeJson<UnsplashBody>
    |> _.urls.full

http {
    GET(random ())
    Authorization $"Client-ID {API_KEY}"
    header "Accept-Version" "v1"
}
|> Request.send
|> Response.toBytes
|> fun bs -> System.IO.File.WriteAllBytes(wallpaper, bs)


cli {
    Exec "<COMMAND>"
    Arguments [ "<TO>"; "<SET>"; wallpaper ]
}
|> fun o -> printfn $"%A{o}"
Enter fullscreen mode Exit fullscreen mode

You can run it with dotnet fsi wallpaper.fsx assuming you saved the above code in wallpaper.fsx

To improve the experience you could use it in a cron job.

Comments 0 total

    Add comment