Convert Figma logo to code with AI

rlxone logoEquinox

🌇 🌃 Create dynamic wallpapers for macOS.

1,161
37
1,161
9

Top Related Projects

37,633

The modern video player for macOS.

13,791

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

27,785

🎥 Command line video player

18,228

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,013

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

37,633

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.

13,791

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.

27,785

🎥 Command line video 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.

18,228

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,013

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) GitHub

Equinox

Create dynamic wallpapers for macOS


Description

Equinox is an application that allows you to create macOS native wallpapers. Starting macOS Mojave we have such cool things as «Dynamic Desktop», «Light and Dark Desktop» types of wallpapers. With the help of the Equinox application, you can easily create those with a few clicks in seconds. Just select a suitable type, drag and drop your images and create your wallpaper.

Features

There are three types of wallpapers that you can create:

  1. Solar
  2. Time
  3. Appearance

Solar wallpaper

  • The main feature of this type of wallpaper is that it takes the position of the sun into account. Depending on the time of year you will see the most relevant image on your desktop. Don't worry about calculations for sun positions. With the help of the «Solar calculator» you only need to know where and when you took a photo.

Time wallpaper

  • Time is the key to this type of wallpaper. The desktop picture changes throughout the day, based on the time you choose.

Appearance wallpaper

  • This type of wallpaper is as simple as it is. The desktop picture changes throughout the day, based on system appearance change. You need two images: one for light and one for dark mode.

Solar calculator

It will help you to calculate the position of the sun in the sky.

  1. Choose the place, date, and time on the «Sun timeline» when you took a photo. If you don't know the exact time you can use the sun timeline to see how high or low the position of the sun in the sky is and match it with the photos you have.
  2. Drag and drop or copy the result over your image.

Shots

FAQ

  • Q: How to set the wallpaper after saving?
  • A: Right click on your wallpaper, then «Services» -> «Set Desktop Picture»

  • Q: I set up my wallpaper, but it won't change over time. Looks like it doesn't work.
  • A: Due to macOS bug you need to set «Dynamic» type in your «Desktop & Screen Saver» macOS Preferences before you set the wallpaper.
    1. Open «Desktop & Screen Saver» macOS Preferences.
    2. Choose any «Dynamic Desktop» wallpaper and set it’s type to «Dynamic».
    3. Right click on your wallpaper, then «Services» -> «Set Desktop Picture»

  • Q: How to test that my wallpaper works correctly?
  • A: Open «Preferences» -> «Date & Time», change the time to see how wallpaper works over time.

Requirements

  • macOS 10.14 (Mojave) and later

Libraries

Thanks

Many thanks to the macOS community and special thanks to mczachurski and his awesome articles.

License

MIT

Translation

Equinox is translated to:

To translate Equinox to another language:

  • Fork the main branch
  • Make a branch for the new translation as follows: translation-xx where xx is the language code (ex: en, fr, es, de, ...)
  • Add the new language to the Xcode Equinox & EquinoxAssets projects
  • Add the new language to Localizable.strings localization languages in EquinoxAssets
  • Update Localizable.strings for the new language with your translated strings
  • Update this part of the README with the new language
  • Write a pull request on GitHub