Top Related Projects
The modern video player for macOS.
VLC media player - All pull requests are ignored, please use MRs on https://code.videolan.org/videolan/vlc
🎥 Command line media player
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
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:
- Visit the Equinox GitHub repository
- Download the latest release from the Releases page
- Install the app on your macOS system (10.14 or later)
- Launch Equinox and grant the necessary permissions
- Configure your desired light/dark mode schedule and wallpaper preferences
- 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
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.
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.
🎥 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.
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.
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
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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 â¤ï¸
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:
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-based wallpapers change throughout the day according to the schedule you define.
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
The Solar calculator helps you determine the sunâs position in the sky.
- 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. - Drag and drop (or copy) the result onto your image.
Screenshots
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:- Open Desktop & Screen Saver in macOS Settings/Preferences.
- Choose any Dynamic Desktop wallpaper and set its type to Dynamic.
- 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
Translation
Equinox is translated into:
- English
- French â by W1W1-M
- Turkish â by furkanipek
- Chinese (Simplified) â by Chuan Hu, DevLiuSir
- Chinese (Traditional) â by 5idereal
- Chinese (Traditional, Hong Kong) â by changanmoon
- German - by sessbach & niklaskroe
- Korean, by R3pic
- Spanish (Latin America) by rogeruiz
- Japanese â by monta-gh
To translate Equinox into another language:
- Fork the main branch.
- Create a branch for the new translation named:
translation-xx, wherexxis 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.stringslocalization languages in EquinoxAssets. - Update
Localizable.stringswith your translated strings. - Update this section of the README with the new language.
- Open a pull request on GitHub.
Top Related Projects
The modern video player for macOS.
VLC media player - All pull requests are ignored, please use MRs on https://code.videolan.org/videolan/vlc
🎥 Command line media player
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
Mopidy is an extensible music server written in Python
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot