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}"
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.
Top comments (0)