Logo

dev-resources.site

for different kinds of informations.

New wallpapers every day

Published at
10/17/2024
Categories
fsharp
wallpaper
dotnet
linux
Author
Luis Ángel Méndez Gort
Categories
4 categories in total
fsharp
open
wallpaper
open
dotnet
open
linux
open
New wallpapers every day

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.

Featured ones: