Convert Figma logo to code with AI

rlxone logoEquinox

🌇 🌃 Create dynamic wallpapers for macOS.

1,909
66
1,909
14

Top Related Projects

45,589

The modern video player for macOS.

18,277

VLC media player - All pull requests are ignored, please use MRs on https://code.videolan.org/videolan/vlc

34,530

🎥 Command line media player

20,728

Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.

:tangerine: Clementine Music Player

8,541

Mopidy is an extensible music server written in Python

Quick Overview

Equinox is an open-source macOS app that allows users to customize their system appearance based on the time of day. It enables automatic switching between light and dark modes, as well as changing wallpapers, according to a user-defined schedule or sunrise/sunset times.

Pros

  • Seamless integration with macOS for automatic theme switching
  • Customizable schedules for appearance changes
  • Ability to sync with sunrise/sunset times for natural transitions
  • User-friendly interface for easy configuration

Cons

  • Limited to macOS platform only
  • Requires macOS 10.14 or later
  • May have minor impact on system resources
  • Limited customization options compared to more complex theming tools

Getting Started

To get started with Equinox:

  1. Visit the Equinox GitHub repository
  2. Download the latest release from the Releases page
  3. Install the app on your macOS system (10.14 or later)
  4. Launch Equinox and grant the necessary permissions
  5. Configure your desired light/dark mode schedule and wallpaper preferences
  6. Enjoy automatic theme switching based on your settings

Note: Equinox is a macOS application and not a code library, so there are no code examples or programming-specific quick start instructions.

Competitor Comparisons

45,589

The modern video player for macOS.

Pros of IINA

  • More mature project with a larger community and contributor base
  • Supports a wider range of video and audio formats
  • Offers more advanced playback features and customization options

Cons of IINA

  • Larger codebase, potentially more complex to maintain
  • Limited to macOS platform, not cross-platform like Equinox
  • May have higher system requirements due to more features

Code Comparison

IINA (Swift):

class PlayerCore: NSObject {
    static let playerCoreKey = Notification.Name("IINAPlayerCore")
    var mpv: MPVController!
    var info: PlaybackInfo!
    var syncPlayTimeTimer: Timer?
}

Equinox (Swift):

class EquinoxPlayer: NSObject {
    private var player: AVPlayer?
    private var playerItem: AVPlayerItem?
    private var timeObserverToken: Any?
    private var statusObserver: NSKeyValueObservation?
}

Both projects use Swift for macOS development, but IINA relies on MPV for video playback, while Equinox uses AVPlayer. IINA's codebase is more extensive, reflecting its broader feature set, while Equinox focuses on a simpler, more streamlined approach to media playback.

18,277

VLC media player - All pull requests are ignored, please use MRs on https://code.videolan.org/videolan/vlc

Pros of VLC

  • Extensive media playback support for various formats and codecs
  • Cross-platform compatibility (Windows, macOS, Linux, mobile)
  • Large, active community and long-standing development history

Cons of VLC

  • Complex codebase due to its extensive feature set
  • Steeper learning curve for contributors
  • Larger resource footprint compared to lightweight alternatives

Code Comparison

VLC (C):

static int Open(vlc_object_t *p_this)
{
    demux_t *p_demux = (demux_t*)p_this;
    demux_sys_t *p_sys = malloc(sizeof(demux_sys_t));
    if (unlikely(p_sys == NULL))
        return VLC_ENOMEM;
}

Equinox (Swift):

struct EquinoxApp: App {
    @StateObject private var model = Model()
    
    var body: some Scene {
        WindowGroup {
            ContentView()
                .environmentObject(model)
        }
    }
}

Summary

VLC is a comprehensive media player with broad format support and cross-platform compatibility. It has a large community but a complex codebase. Equinox, on the other hand, is a macOS-specific menu bar app for controlling system appearance. It's written in Swift and has a simpler, more focused codebase. While VLC offers extensive media playback features, Equinox provides a streamlined solution for managing macOS appearance settings.

34,530

🎥 Command line media player

Pros of mpv

  • Highly versatile media player with extensive codec support
  • Cross-platform compatibility (Linux, Windows, macOS)
  • Robust command-line interface and scripting capabilities

Cons of mpv

  • Steeper learning curve for non-technical users
  • Less polished GUI compared to some other media players

Code Comparison

mpv (C):

static void video_thread(void *arg)
{
    struct vo *vo = arg;
    vo_loop(vo);
}

Equinox (Swift):

func playVideo() {
    player.play()
}

Summary

mpv is a powerful, open-source media player with broad format support and extensive customization options. It excels in flexibility and performance but may be less user-friendly for beginners. Equinox, on the other hand, is a macOS-specific video player focused on simplicity and a modern user interface.

mpv's codebase is primarily in C, allowing for low-level optimizations and cross-platform development. Equinox uses Swift, leveraging Apple's ecosystem for a native macOS experience.

While mpv offers more advanced features and broader platform support, Equinox provides a streamlined, user-friendly experience specifically tailored for macOS users. The choice between the two depends on the user's needs, technical expertise, and preferred platform.

20,728

Kodi is an award-winning free and open source home theater/media center software and entertainment hub for digital media. With its beautiful interface and powerful skinning engine, it's available for Android, BSD, Linux, macOS, iOS, tvOS and Windows.

Pros of XBMC

  • Mature and well-established project with a large community and extensive documentation
  • Supports a wide range of media formats and streaming protocols
  • Highly customizable with numerous add-ons and skins available

Cons of XBMC

  • Larger codebase and more complex architecture, potentially harder to contribute to
  • Heavier resource usage, may not be suitable for low-powered devices
  • Steeper learning curve for new users and developers

Code Comparison

XBMC (C++):

bool CVideoPlayer::OpenInputStream()
{
  if (m_pInputStream.use_count() > 1)
    throw std::runtime_error("Input stream is in use");
  m_pInputStream.reset();
  m_pInputStream = CInputStreamFactory::CreateInputStream(m_item);
  if (!m_pInputStream)
    return false;
  return true;
}

Equinox (Swift):

func openInputStream() throws -> InputStream {
    guard let inputStream = InputStream(fileAtPath: filePath) else {
        throw InputStreamError.failedToOpen
    }
    inputStream.open()
    return inputStream
}

The XBMC code snippet shows a more complex C++ implementation for opening an input stream, while the Equinox code demonstrates a simpler Swift approach. XBMC's implementation includes additional error handling and resource management, reflecting its more extensive feature set and mature codebase.

:tangerine: Clementine Music Player

Pros of Clementine

  • Cross-platform support (Windows, macOS, Linux)
  • Extensive music library management features
  • Integration with various online music services

Cons of Clementine

  • Older codebase with less frequent updates
  • More complex user interface
  • Larger resource footprint

Code Comparison

Clementine (C++):

void MainWindow::AddFiles() {
  QStringList filenames = QFileDialog::getOpenFileNames(
      this, tr("Add files"), last_add_dir_,
      QString("%1 (%2);;%3").arg(tr("Music"), FileView::kFileFilter,
                                 tr("All files (*.*)")));
  if (filenames.isEmpty()) return;
  // ...
}

Equinox (Swift):

func addFiles() {
    let panel = NSOpenPanel()
    panel.allowsMultipleSelection = true
    panel.canChooseDirectories = false
    panel.canChooseFiles = true
    panel.allowedFileTypes = ["mp3", "m4a", "wav"]
    
    if panel.runModal() == .OK {
        // Handle selected files
    }
}

The code comparison shows that Clementine uses C++ with Qt framework, while Equinox is built with Swift for macOS. Clementine's implementation is more complex, handling multiple file types and translations, whereas Equinox's code is more concise and focused on macOS-specific functionality.

8,541

Mopidy is an extensible music server written in Python

Pros of Mopidy

  • Mature and well-established project with a large community and extensive documentation
  • Supports multiple audio backends and a wide range of music sources
  • Highly extensible through plugins and extensions

Cons of Mopidy

  • Requires more setup and configuration compared to Equinox
  • Written in Python, which may have performance limitations for some use cases
  • Primarily focused on audio playback and streaming, lacking some of Equinox's additional features

Code Comparison

Mopidy (Python):

from mopidy import core

class MyFrontend:
    def __init__(self, config, core):
        self.core = core

    def playback_state_changed(self, old_state, new_state):
        print(f"Playback state changed from {old_state} to {new_state}")

Equinox (Swift):

import EquinoxCore

class MyViewController: UIViewController {
    private let player = Player()
    
    func playTrack(_ track: Track) {
        player.play(track)
    }
}

While both projects are music-related, they serve different purposes. Mopidy is a versatile music server with a focus on extensibility and multiple audio sources. Equinox, on the other hand, is an iOS app for playing local music files with a modern interface and additional features like lyrics display and Last.fm scrobbling.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README


GitHub Workflow Status (branch) GitHub release (latest by date) License

Equinox logo

Equinox

Create dynamic wallpapers for macOS


If you enjoy using Equinox, you can support the project with a small donation. It helps me maintain the app, fix bugs, and keep updates coming. Thank you ❤️

Donate with PayPal

Equinox screenshot

Description

Equinox is an app that lets you create macOS-native dynamic wallpapers. Starting with macOS Mojave, macOS supports wallpaper types like Dynamic Desktop and Light & Dark Desktop.

With Equinox, you can create these wallpapers in seconds: choose a type, drag and drop your images, and export your wallpaper.

Features

There are three types of wallpapers you can create:

  1. Solar
  2. Time
  3. Appearance

Solar wallpaper

Solar wallpaper
  • This wallpaper type takes the sun’s position into account. Depending on the time of year, you’ll see the most appropriate image on your desktop.
  • No need to calculate sun positions manually — with the Solar calculator, you only need to know where and when the photo was taken.

Time wallpaper

Time wallpaper
  • Time-based wallpapers change throughout the day according to the schedule you define.

Appearance wallpaper

Appearance wallpaper
  • This type is as simple as it sounds: the wallpaper changes based on the system appearance (Light/Dark Mode).
  • You only need two images: one for Light Mode and one for Dark Mode.

Solar calculator

Solar calculator

The Solar calculator helps you determine the sun’s position in the sky.

  1. Choose the place, date, and time on the Sun timeline for when the photo was taken.
    If you don’t know the exact time, use the timeline to estimate the sun’s height and match it to your photos.
  2. Drag and drop (or copy) the result onto your image.

Screenshots

Equinox screenshot 1

FAQ

  • Q: How do I set the wallpaper after saving?
    A: Right-click your wallpaper, then choose Services → Set Desktop Picture.

  • Q: I set up my wallpaper, but it doesn’t change over time.
    A: This can be caused by a macOS issue. Before setting your wallpaper, make sure Desktop & Screen Saver is set to a Dynamic type:

    1. Open Desktop & Screen Saver in macOS Settings/Preferences.
    2. Choose any Dynamic Desktop wallpaper and set its type to Dynamic.
    3. Right-click your wallpaper, then choose Services → Set Desktop Picture.

  • Q: How can I test whether my wallpaper works correctly?
    A: Open Settings/Preferences → Date & Time, then change the time to see the wallpaper update.

Requirements

  • macOS 10.14 (Mojave) and later

Libraries

Thanks

Many thanks to the macOS community — and special thanks to mczachurski for the excellent articles.

License

MIT

Translation

Equinox is translated into:

To translate Equinox into another language:

  • Fork the main branch.
  • Create a branch for the new translation named: translation-xx, where xx is the language code (e.g., en, fr, es, de).
  • Add the new language to the Xcode Equinox and EquinoxAssets projects.
  • Add the new language to the Localizable.strings localization languages in EquinoxAssets.
  • Update Localizable.strings with your translated strings.
  • Update this section of the README with the new language.
  • Open a pull request on GitHub.