🌎 18th century Arts for everyone


Artify App Logo

Artify Build Status 0.5.1

A macOS X application for bringing dedicatedly 18th century Arts to everyone 🌎 .

WallpaperFeaturesDownloadsTechnologies3rd LibrariesDevelopmentFAQ


Red Vineyard At Arles
The Starry Night
The Wanderer Above The Sea of Fog


  • 😍 Hand-picked 18th Arts.
  • 👨‍💻 Generate beautiful wallpaper depend on your screen size.
  • 👑 Automatically fetch feature art for every days.
  • 🌎 On-demand art, You can pick your favorites art-style, artist (Coming soon 🙇🏻‍♂️)
  • 🍉 Open-source project.
  • 💯 Totally Free.


All downloads are available at Release page

macOS Requirement

The minimum version supported is macOS 10.11.


3rd Libraries


Artify requires Artify Core as a backend. Pls follow this Instruction in order to start the core successfully 😎

After starting the development server.

  • Clone this project
  • Run $ pod install
  • Open ArtifyWorkspace.xcworkspace
  • Happy coding 😍


  • Is it a original idea?

Nowadays, Almost idea is mixing. The original idea was inspired by a guy in HN-Show I've seen in a couple months ago. It's just a tool to generate a photo after dragging manually my original picture. It has lack of capability.

I'm a lazy guy, I'd something could do it automatically every time. Ultimately, I came up with this idea.

  • Where is the Backend side?

I'm in charge of developing the Artify Core, as a Golang backend serverside. > Feel free to contribute cooperatively.

  • What is the current progress?

Here is Open Ticket and Close Ticket

  • Why do you choose RxSwift + MVVM?

I have solid experience when working with RxSwift + MVVM for a couple projects on Production. I'm so happy when writing concise, elegant Observable, Driver,... rather than clumsy functions with tons of nested-callbacks.

If something makes me happy, I will follow it. Simple enough 😂

  • Is this app built with Swift?

Yes, Artify is built on top of Swift 4.1 and macOS Native library.

  • Why is it an OSS?

The source code is a trash if keep it in your inventory forever. I'd contribute back to the dev community when I have an opportunity.

The best way is publishing your source code 👨‍💻 .

  • Why is 18th century art?

Every time I have a short trip to an overseas country, I often spent 1 or 2 days to visit all famous art museum. I could stand for an hour to look at the detail, the scrape from those old oil photo. Individual traits could represent the history, the effort, the dream from original authors.

I realize I fall in love with the 18th art somehow 🤣

Then I come up with the idea, why don't we bring it to everybody, who has the same passion as me.

Let imagine, every day, when I open my laptop at 9 AM, I can see the best photo of this day, with detail information, history, and the author. That would be amazing 😱

Without considering, I start to develop the macOS app as well as the Artify-Core, which is written by Golang.

All of the art pictures will be hand-picked by me and my best girlfriend. Hope you enjoy it 😍

  • How does Artify generate the beautify wallpaper?


  1. Determine the golden size, which relies on your current screen size. It makes sure every generated wallpaper is as nice as possible.
  2. Draw this image with the desired size in the middle
  3. Draw shadow
  4. Scale the background with "aspect to fill" mode
  5. Apply Gaussian algorithm
  6. Combine everything and cached locally.

[Detail implementation]

Here is the algorithm

  • Where does the Artify's resource come from?

Every art pictures are hand-picked from WikiArt.

If you wonder how I collect the data. Here is my partner, Spider Man, which is a Ruby script.

The conjunction of Nokogiri and Watir are perfect for this scenario. Indeed,I'm a lazy man, I don't want to collect data like a manual labor 😅 .

  • What are the tough problems, which you confronts when developing this project?

The Implementation of the Artify Core by Golang with latest technologies and the Artify Gaussian algorithm are two things take me most the effort.

  • Can I become a contributor?

Defintely, I appreciate your effort to become a contributor. Clone the project and setup your workspace. Happy coding guys 🚢

  • Do you have personal blog?

Yes, I often write blog at My lab 👨‍🍳

  • How do I contact you?

Don't hesitate to open Issue on Github if you encounter any problems. Or give a welcome hug to me at [email protected].

  • Fix blog link in README

    Fix blog link in README

    Awesome project, btw 😄

    opened by kamaln7 2
  • Support

    Support "Auto enchantment photo"

    As I experience, there are minor of original arts from WikiArt, which are slightly dark. I would be great if we support "Auto enchantment photo" to make it brighter.

    Acceptance Criteria

    • Auto enchantment photo before drawing.
    • Do a research how to implement photo enchantment appropriately.
    opened by NghiaTranUIT 2
  • Check for update capability

    Check for update capability

    Acceptance Criteria

    • Artify is able to update itself or manually
    opened by NghiaTranUIT 2
  • About screen

    About screen

    Acceptance Criteria

    • Simple About App (version, build number, github)
    opened by NghiaTranUIT 2
  • New App Icon

    New App Icon

    opened by NghiaTranUIT 1
  • Support Indicator Status Bar when processing

    Support Indicator Status Bar when processing

    It's frustrated when the app have no acknowledgment to user when it is fetching the large background.

    Acceptance Criteria

    • Support animation on status bar
    • Animate when fetching the icon, and stop until the wallpaper is set
    opened by NghiaTranUIT 1
  • Fetch photo after system wakes up

    Fetch photo after system wakes up

    Acceptance Criteria

    • Fetch Feature photo after system wakes up
    • Fetch feature after 2 hours repeatedly
    opened by NghiaTranUIT 1
  • Tracking


    Support Answer tracking for Artify app.

    Acceptance Criteria

    • Tracking open app
    • Tracking fetch success / failed
    • Tracking Turn on/off launch open app
    • Tracking Exit app
    opened by NghiaTranUIT 1
  • [BUG] Can't interact with About Controller

    [BUG] Can't interact with About Controller

    Acceptance Criteria

    • Able to open any link from those buttons on About screen
    opened by NghiaTranUIT 1
  • Fabric + Crashlytic + Analytic

    Fabric + Crashlytic + Analytic

    Acceptance Criteria

    • Support Fabric, Crashlytic and Analytic
    opened by NghiaTranUIT 1
  • Build error: Value of type 'ImageTask' has no member 'map'

    Build error: Value of type 'ImageTask' has no member 'map'

    build with Xcode 11, found error : Value of type 'ImageTask' has no member 'map' in func downloadAndSavePhoto() of DownloadService.swift

    opened by meiziteacher 1
  • Homebrew cask formula

    Homebrew cask formula

    Contribute formula for brew cask for easier installation method

    opened by andreiborisov 0
  • NSFW Filter

    NSFW Filter

    People have different opinions about what desktop images are appropriate for the workplace. Please allow the user to tag possibly controversial images as "NSFW" (not safe for work) and use a checkbox option to include or omit those images from those available for display in the future.

    opened by daniel-birket 0
  • Bug: Can't Update the wallpaper

    Bug: Can't Update the wallpaper


    There is a notice that Artify is unable to update a wallpaper if the main screen is not active.

    How to reproduce

    1. Get Feature photo
    2. While fetching the photo, we active different window screen.
    3. When it it's finished, there is no update.

    Acceptance Criteria

    • Able to update the the wallpaper regardless of any active window.
    opened by NghiaTranUIT 1
  • Support Fastlane and integrating to exist CI/CD

    Support Fastlane and integrating to exist CI/CD

    It takes tons of time when distributing app manually. Here is what I do

    1. Increase build number and build version
    2. Create git tag
    3. Archive the build
    4. Sign with private key (Sparkle app)
    5. Zip with format: Artify_{version_number}.zip
    6. Upload to my /artify Dropbox folder and copy the share link (?dl=1)
    7. Update appcast.xml
    8. Create new Github Release and copy Change Log and submit the zip build.

    It's so high-consume task ever.

    Acceptance Criteria

    • Integrate Fastlane to do it automatically
    • Integrate to our Travis



    opened by NghiaTranUIT 0
  • Support Jazzy - Automator for Docs

    Support Jazzy - Automator for Docs

    It's cool if we have Jazzy as a dedicated guy to generate our Docs automatically. Ref: https://github.com/realm/jazzy 😍

    opened by NghiaTranUIT 0
  • Photo and Author information

    Photo and Author information

    opened by NghiaTranUIT 0
  • Preference Screen

    Preference Screen

    Acceptance Criteria

    • Implement simple Preference
    • Has Start-up, interval time, folder to save, update app
    opened by NghiaTranUIT 1
Nghia Tran
Creator of @ProxymanApp. Previously at @toggl
Nghia Tran
The open source Tab Manager Extension for Safari.

Ultra TabSaver The open source Tab Manager for Safari. Table of Contents Features Branches How to use it How does it work Building and running To do l

Swift open source 192 Jul 13, 2021