Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feedback.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: Feedback
about: Give feedback regarding moonleaf or a specific part of it
about: Give feedback regarding Petalia or a specific part of it
title: ''
labels: ''
assignees: ''
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
**/.DS_Store
**/.DS_Store
.build-cache/
build/
.agents/
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<h1 align="center">
<br>
<a href="https://github.com/parkuoa/moonleaf"><img src="./artwork/png/moonleaf2.png" alt="moonleaf" width="150"></a>
<a href="https://github.com/parkuoa/moonleaf"><img src="./artwork/png/icon (2).png" alt="Petalia" width="150"></a>
<br>
moonleaf
Petalia
<br>
</h1>
<p align="center">
Expand All @@ -19,7 +19,7 @@
</p>

<p align="center">
moonleaf is a feature-packed Wallpaper Manager for macOS, with support for gifs, videos, online wallpaper browsing, multi-monitor wallpapers, exporting, among other many things!
Petalia is a feature-packed Wallpaper Manager for macOS, with support for gifs, videos, online wallpaper browsing, multi-monitor wallpapers, exporting, among other many things!</
</p>

<h1 align="center">
Expand All @@ -45,7 +45,7 @@ brew install --cask parkuoa/moonleaf/moonleaf
```
then,
```
xattr -dr com.apple.quarantine /Applications/moonleaf.app
xattr -dr com.apple.quarantine /Applications/Petalia.app
```

## Manual
Expand All @@ -60,13 +60,13 @@ xattr -dr com.apple.quarantine /Applications/moonleaf.app
> You only need to do this once.

<p align="center">
<a href="https://github.com/parkuoa/moonleaf/releases/latest/download/moonleaf.dmg" target="_self"><img width="200" src="https://github.com/user-attachments/assets/e2b187d1-8010-45cf-a9d4-e7ce5e2e677c" /></a>
<a href="https://github.com/parkuoa/moonleaf/releases/latest/download/Petalia.dmg" target="_self"><img width="200" src="https://github.com/user-attachments/assets/e2b187d1-8010-45cf-a9d4-e7ce5e2e677c" /></a>
</p>

---

## License
moonleaf is licensed under the [MIT License](./LICENSE). \
Petalia is licensed under the [MIT License](./LICENSE). \
Versions pre-v3.0 (macpaper) are licensed under the GNU General Public License v3.0 (GPLv3).

## 🔨 Building from Source
Expand All @@ -86,15 +86,15 @@ It is advised that you, alongside the strings file, place a file named `credit`
### Quarantine
If you suspect the app is quarantined, run the following on your Terminal after dragging the app to Applications:
```bash
xattr -l /Applications/moonleaf.app
xattr -l /Applications/Petalia.app
```
Which shall output ```com.apple.quarantine: ...;{BROWSER};``` if the app IS quarantined.
In that case, run:
```bash
xattr -dr com.apple.quarantine /Applications/moonleaf.app
xattr -dr com.apple.quarantine /Applications/Petalia.app
```

### Apple could not verify "moonleaf" is free of malware...
### Apple could not verify "Petalia" is free of malware...
You can fix this by doing the same steps as [here](https://github.com/parkuoa/moonleaf/tree/main/README.md#installation).

## ❤️ Support me
Expand Down
Binary file added VariableBlur
Binary file not shown.
Binary file added artwork/icns/Petalia/Petalia-2.icns
Binary file not shown.
Binary file added artwork/icns/Petalia/Petalia.icns
Binary file not shown.
Binary file removed artwork/icns/moonleaf/moonleaf.icns
Binary file not shown.
Binary file added artwork/png/Petalia-raw-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added artwork/png/Petalia-raw.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added artwork/png/icon (2).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added artwork/png/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed artwork/png/moonleaf.png
Binary file not shown.
Binary file added artwork/png/petalia.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
53 changes: 53 additions & 0 deletions build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Building Petalia from Source

This project compiles directly from the command line using macOS developer tools (`swiftc` and `gcc`/`clang`). You do not need to open or configure Xcode to build the application.

---

## 📋 Requirements
- macOS 12 (Monterey) or later
- Command Line Tools. If you don't have them installed, run:
```bash
xcode-select --install
```

---

## 🛠️ Build Commands

All builds are orchestrated via the `scripts/build.sh` script. Run them from the project's root directory:

### 1. Incremental Build (Default)
By default, the script compiles files incrementally. Only files you have modified (and their dependents) will be recompiled, saving compilation time.
```bash
./scripts/build.sh
```

### 2. Clean Build
To wipe the build cache (`.build-cache/`) and compile all files from scratch:
```bash
./scripts/build.sh --clean
```

### 3. Build for All Architectures (Universal Binary)
To build a universal binary for both Intel (`x86_64`) and Apple Silicon (`arm64`) architectures (defaults to your host machine's architecture):
```bash
./scripts/build.sh --all
```
*Note: You can combine this flag with clean: `./scripts/build.sh --all --clean`*

---

## 📁 Build Output

The successfully built application will be stored at:
```
build/Petalia.app
```

---

## ⚙️ How It Works (Incremental Compilation)
- The script uses the Swift compiler's native `-incremental` mode.
- Compilation metadata and object files (`.o`) are cached under `.build-cache/`.
- Changing a single file only recompiles that specific file, bringing compile times down from minutes to a few seconds.
18 changes: 9 additions & 9 deletions glasswp/glasswp.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//
// glasswp.swift
// moonleaf
// petalia
//
// Copyright © 2026 naomisphere. All rights reserved.
//
Expand Down Expand Up @@ -380,7 +380,7 @@ final class ScreenPlayer {

private func readVolume() -> Double {
let volFile = FileManager.default.homeDirectoryForCurrentUser
.appendingPathComponent(".config/moonleaf/volume")
.appendingPathComponent(".config/petalia/volume")
if let data = try? Data(contentsOf: volFile),
let str = String(data: data, encoding: .utf8),
let intVal = Int(str.trimmingCharacters(in: .whitespacesAndNewlines)) {
Expand Down Expand Up @@ -463,16 +463,16 @@ class GlasswpApp: NSObject, NSApplicationDelegate {
private func registerNotifications() {
DistributedNotificationCenter.default().addObserver(
self, selector: #selector(handleVolumeChange(_:)),
name: Notification.Name("com.naomisphere.moonleaf.volumeChanged"), object: nil)
name: Notification.Name("com.naomisphere.petalia.volumeChanged"), object: nil)
DistributedNotificationCenter.default().addObserver(
self, selector: #selector(handleVizSettingsChange),
name: Notification.Name("com.naomisphere.moonleaf.visualizerSettingsChanged"), object: nil)
name: Notification.Name("com.naomisphere.petalia.visualizerSettingsChanged"), object: nil)
DistributedNotificationCenter.default().addObserver(
self, selector: #selector(handleAutoPause(_:)),
name: Notification.Name("com.naomisphere.moonleaf.autoPauseChanged"), object: nil)
name: Notification.Name("com.naomisphere.petalia.autoPauseChanged"), object: nil)
DistributedNotificationCenter.default().addObserver(
self, selector: #selector(handleChangeWallpaper(_:)),
name: Notification.Name("com.naomisphere.moonleaf.changeWallpaper"), object: nil)
name: Notification.Name("com.naomisphere.petalia.changeWallpaper"), object: nil)


NotificationCenter.default.addObserver(
Expand Down Expand Up @@ -561,7 +561,7 @@ class GlasswpApp: NSObject, NSApplicationDelegate {

private func loadVisualizerSettings() {
let settingsFile = FileManager.default.homeDirectoryForCurrentUser
.appendingPathComponent(".config/moonleaf/settings.json")
.appendingPathComponent(".config/petalia/settings.json")
guard FileManager.default.fileExists(atPath: settingsFile.path),
let data = try? Data(contentsOf: settingsFile),
let settings = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else { return }
Expand Down Expand Up @@ -646,12 +646,12 @@ final class RealVisualizerEngine {
}
)

var tapRef: MTAudioProcessingTap?
var tapRef: Unmanaged<MTAudioProcessingTap>?
let status = MTAudioProcessingTapCreate(
kCFAllocatorDefault, &callbacks,
kMTAudioProcessingTapCreationFlag_PostEffects, &tapRef)

guard status == noErr, let builtTap = tapRef else {
guard status == noErr, let builtTap = tapRef?.takeRetainedValue() else {
retainedSelf.release()
return
}
Expand Down
10 changes: 5 additions & 5 deletions lang/Base.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"mgr_title" = "moonleaf";
"mgr_title" = "Petalia";
"mgr_wp_title" = "wallpapers";
"mgr_browse_title" = "browse";
"add_wallpaper" = "add wallpaper";
Expand Down Expand Up @@ -29,12 +29,12 @@
"sb_refresh" = "Refresh";
"sb_open_mgr" = "Open Manager";
"sb_settings" = "Settings";
"sb_about" = "About moonleaf";
"sb_about_text" = "Version %@ (%@)\n\nThe Wallpaper Manager for macOS";
"sb_about" = "About Petalia";
"sb_about_text" = "Version %@ (%@)\nThe Wallpaper Manager for macOS";
"sb_about_github" = "GitHub";
"sb_about_kofi" = "Support on Ko-fi";
"sb_perst_tooltip" = "Automatically start wallpaper on login";
"sb_quit" = "Quit moonleaf";
"sb_quit" = "Quit Petalia";

"mgr_settings" = "settings";
"settings" = "Settings";
Expand Down Expand Up @@ -95,7 +95,7 @@
"settings_general" = "General";
"settings_startup" = "Startup";
"settings_auto_start" = "Start at Login";
"settings_auto_start_desc" = "Automatically start moonleaf when you log in";
"settings_auto_start_desc" = "Automatically start Petalia when you log in";
"settings_updates" = "Updates";
"settings_check_updates" = "Check for Updates";
"settings_check_updates_desc" = "Check for updates on startup";
Expand Down
10 changes: 5 additions & 5 deletions lang/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"mgr_title" = "moonleaf";
"mgr_title" = "Petalia";
"mgr_wp_title" = "Hintergrundbilder";
"mgr_browse_title" = "Durchsuchen";
"add_wallpaper" = "Hintergrundbild hinzufügen";
Expand Down Expand Up @@ -29,12 +29,12 @@
"sb_refresh" = "Aktualisieren";
"sb_open_mgr" = "Manager öffnen";
"sb_settings" = "Einstellungen";
"sb_about" = "Über moonleaf";
"sb_about_text" = "Version %@ (%@)\n\nDer Live-Hintergrundbild-Manager für macOS";
"sb_about" = "Über Petalia";
"sb_about_text" = "Version %@ (%@)\nDer Live-Hintergrundbild-Manager für macOS";
"sb_about_github" = "GitHub";
"sb_about_kofi" = "Auf Ko-fi unterstützen";
"sb_perst_tooltip" = "Hintergrundbild automatisch beim Anmelden starten";
"sb_quit" = "moonleaf beenden";
"sb_quit" = "Petalia beenden";

"mgr_settings" = "Einstellungen";
"settings" = "Einstellungen";
Expand Down Expand Up @@ -95,7 +95,7 @@
"settings_general" = "Allgemein";
"settings_startup" = "Start";
"settings_auto_start" = "Beim Anmelden starten";
"settings_auto_start_desc" = "moonleaf automatisch beim Anmelden starten";
"settings_auto_start_desc" = "Petalia automatisch beim Anmelden starten";
"settings_updates" = "Updates";
"settings_check_updates" = "Nach Updates suchen";
"settings_check_updates_desc" = "Beim Start nach Updates suchen";
Expand Down
10 changes: 5 additions & 5 deletions lang/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"mgr_title" = "moonleaf";
"mgr_title" = "Petalia";
"mgr_wp_title" = "wallpapers";
"mgr_browse_title" = "browse";
"add_wallpaper" = "add wallpaper";
Expand Down Expand Up @@ -29,12 +29,12 @@
"sb_refresh" = "Refresh";
"sb_open_mgr" = "Open Manager";
"sb_settings" = "Settings";
"sb_about" = "About moonleaf";
"sb_about_text" = "Version %@ (%@)\n\nThe Wallpaper Manager for macOS";
"sb_about" = "About Petalia";
"sb_about_text" = "Version %@ (%@)\nThe Wallpaper Manager for macOS";
"sb_about_github" = "GitHub";
"sb_about_kofi" = "Support on Ko-fi";
"sb_perst_tooltip" = "Automatically start wallpaper on login";
"sb_quit" = "Quit moonleaf";
"sb_quit" = "Quit Petalia";

"mgr_settings" = "settings";
"settings" = "Settings";
Expand Down Expand Up @@ -95,7 +95,7 @@
"settings_general" = "General";
"settings_startup" = "Startup";
"settings_auto_start" = "Start at Login";
"settings_auto_start_desc" = "Automatically start moonleaf when you log in";
"settings_auto_start_desc" = "Automatically start Petalia when you log in";
"settings_updates" = "Updates";
"settings_check_updates" = "Check for Updates";
"settings_check_updates_desc" = "Check for updates on startup";
Expand Down
10 changes: 5 additions & 5 deletions lang/es.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"mgr_title" = "moonleaf";
"mgr_title" = "Petalia";
"mgr_wp_title" = "fondos";
"mgr_browse_title" = "explorar";
"add_wallpaper" = "añadir fondo";
Expand Down Expand Up @@ -29,12 +29,12 @@
"sb_refresh" = "Actualizar";
"sb_open_mgr" = "Abrir app";
"sb_settings" = "Ajustes";
"sb_about" = "Acerca de moonleaf";
"sb_about_text" = "Versión %@ (%@)\n\nEl Gestor de Fondos para macOS";
"sb_about" = "Acerca de Petalia";
"sb_about_text" = "Versión %@ (%@)\nEl Gestor de Fondos para macOS";
"sb_about_github" = "GitHub";
"sb_about_kofi" = "Apoyar en Ko-fi";
"sb_perst_tooltip" = "Iniciar fondo automáticamente al iniciar sesión";
"sb_quit" = "Salir de moonleaf";
"sb_quit" = "Salir de Petalia";

"mgr_settings" = "ajustes";
"settings" = "Ajustes";
Expand Down Expand Up @@ -94,7 +94,7 @@
"settings_general" = "General";
"settings_startup" = "Inicio";
"settings_auto_start" = "Iniciar al iniciar sesión";
"settings_auto_start_desc" = "Iniciar moonleaf automáticamente al iniciar sesión";
"settings_auto_start_desc" = "Iniciar Petalia automáticamente al iniciar sesión";
"settings_updates" = "Actualizaciones";
"settings_check_updates" = "Buscar actualizaciones";
"settings_check_updates_desc" = "Buscar actualizaciones al iniciar";
Expand Down
10 changes: 5 additions & 5 deletions lang/pl.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"mgr_title" = "moonleaf";
"mgr_title" = "Petalia";
"mgr_wp_title" = "tapety";
"mgr_browse_title" = "przeglądaj";
"add_wallpaper" = "dodaj tapetę";
Expand Down Expand Up @@ -29,12 +29,12 @@
"sb_refresh" = "Odśwież";
"sb_open_mgr" = "Otwórz Menedżera";
"sb_settings" = "Ustawienia";
"sb_about" = "O moonleaf";
"sb_about_text" = "Wersja %@ (%@)\n\nMenedżer Tapet dla macOS";
"sb_about" = "O Petalia";
"sb_about_text" = "Wersja %@ (%@)\nMenedżer Tapet dla macOS";
"sb_about_github" = "GitHub";
"sb_about_kofi" = "Wesprzyj na Ko-fi";
"sb_perst_tooltip" = "Automatycznie włącz tapetę na starcie systemu";
"sb_quit" = "Zamknij moonleaf";
"sb_quit" = "Zamknij Petalia";

"mgr_settings" = "ustawienia";
"settings" = "Ustawienia";
Expand Down Expand Up @@ -95,7 +95,7 @@
"settings_general" = "Ogólne";
"settings_startup" = "Uruchamianie";
"settings_auto_start" = "Uruchom od razu";
"settings_auto_start_desc" = "Automatycznie włącz moonleaf przy starcie systemu";
"settings_auto_start_desc" = "Automatycznie włącz Petalia przy starcie systemu";
"settings_updates" = "Aktualizowanie";
"settings_check_updates" = "Sprawdzaj Aktualizacje";
"settings_check_updates_desc" = "Sprawdzaj Aktualizacje przy uruchomieniu";
Expand Down
10 changes: 5 additions & 5 deletions lang/pt-BR.lproj/Localizable.strings
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"mgr_title" = "moonleaf";
"mgr_title" = "Petalia";
"mgr_wp_title" = "Papéis de Parede";
"mgr_browse_title" = "Explorar";
"add_wallpaper" = "Adicionar Papel de Parede";
Expand Down Expand Up @@ -29,12 +29,12 @@
"sb_refresh" = "Atualizar";
"sb_open_mgr" = "Abrir Gerenciador";
"sb_settings" = "Configurações";
"sb_about" = "Sobre moonleaf";
"sb_about_text" = "Versão %@ (%@)\n\nO Gerenciador de Papéis de Parede em Vivo para macOS";
"sb_about" = "Sobre Petalia";
"sb_about_text" = "Versão %@ (%@)\nO Gerenciador de Papéis de Parede em Vivo para macOS";
"sb_about_github" = "GitHub";
"sb_about_kofi" = "Apoiar no Ko-fi";
"sb_perst_tooltip" = "Iniciar papel de parede automaticamente ao fazer login";
"sb_quit" = "Encerrar moonleaf";
"sb_quit" = "Encerrar Petalia";

"mgr_settings" = "configurações";
"settings" = "Configurações";
Expand Down Expand Up @@ -95,7 +95,7 @@
"settings_general" = "Geral";
"settings_startup" = "Inicialização";
"settings_auto_start" = "Iniciar ao Fazer Login";
"settings_auto_start_desc" = "Iniciar moonleaf automaticamente ao fazer login";
"settings_auto_start_desc" = "Iniciar Petalia automaticamente ao fazer login";
"settings_updates" = "Atualizações";
"settings_check_updates" = "Verificar atualizações";
"settings_check_updates_desc" = "Verificar atualizações ao iniciar";
Expand Down
2 changes: 1 addition & 1 deletion latest
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v4.0.0
v5.0.0
Loading