|
| 1 | +# FluentMacWallpaper |
| 2 | + |
| 3 | +macOS menu bar app that loops a local video (`.mp4`, `.mov`, `.m4v`) as your desktop wallpaper. |
| 4 | + |
| 5 | +- Runs as a menu bar item — no dock icon |
| 6 | +- Borderless fullscreen window at the native desktop window level: sits **behind** desktop icons, clicks pass through |
| 7 | +- Hardware-accelerated playback via AVFoundation (`AVQueuePlayer` + `AVPlayerLooper` for gapless looping) — low CPU and battery usage |
| 8 | +- Menu: **Select Video…**, **Pause/Play**, **Quit** |
| 9 | + |
| 10 | +<img src="demo.gif" width="450px" alt="Demo GIF" /> |
| 11 | + |
| 12 | +<sup><a href="#wallpaper-sources">1</a></sup> Wallpapers Source |
| 13 | + |
| 14 | +## Disclaimer |
| 15 | + |
| 16 | +I created this application for personal use, and I am not a macOS developer. It is provided as-is, without warranty of any kind. Use at your own risk and if you want to contribute, feel free to submit a pull request. |
| 17 | + |
| 18 | +## Requirements |
| 19 | + |
| 20 | +- macOS (Apple Silicon or Intel) |
| 21 | +- Go 1.22+ and Xcode Command Line Tools (`xcode-select --install`) |
| 22 | + |
| 23 | +## Install |
| 24 | + |
| 25 | +```sh |
| 26 | +git clone https://github.com/StevenCyb/FluentMacWallpaper.git |
| 27 | +cd FluentMacWallpaper |
| 28 | +go install . |
| 29 | +``` |
| 30 | + |
| 31 | +This puts the `FluentMacWallpaper` binary into `$(go env GOPATH)/bin` (make sure it is on your `PATH`). |
| 32 | + |
| 33 | +> **Note:** `go install github.com/StevenCyb/FluentMacWallpaper@latest` does not work, because |
| 34 | +> `go.mod` contains a `replace` directive pointing [progrium/darwinkit](https://github.com/progrium/darwinkit) |
| 35 | +> to a [purego-based fork](https://github.com/gysddn/darwinkit/tree/purego). Upstream darwinkit |
| 36 | +> crashes with `SIGABRT` in its libffi bridge on Go ≥ 1.25 |
| 37 | +> ([darwinkit#286](https://github.com/progrium/darwinkit/issues/286)); the replace can be dropped |
| 38 | +> once [darwinkit#276](https://github.com/progrium/darwinkit/pull/276) is merged and released. |
| 39 | +
|
| 40 | +## Usage |
| 41 | + |
| 42 | +```sh |
| 43 | +FluentMacWallpaper # start, then pick a video via the tray icon |
| 44 | +FluentMacWallpaper ~/Movies/bg.mp4 # start and play this video immediately |
| 45 | +``` |
| 46 | + |
| 47 | +A tray icon appears in the menu bar: |
| 48 | + |
| 49 | +| Menu item | Action | |
| 50 | +|---|---| |
| 51 | +| Select Video… | Open a file picker and start looping the chosen video | |
| 52 | +| Pause / Play | Toggle playback | |
| 53 | +| Quit | Exit and restore your normal wallpaper | |
| 54 | + |
| 55 | +Video is muted and scaled to fill the screen (aspect-fill). |
| 56 | + |
| 57 | +## Wallpaper sources |
| 58 | +Video sources used in the demo: |
| 59 | + |
| 60 | +1. Demo footage credits. |
| 61 | +2. Midnight Fuel Stop. MotionBGS. https://motionbgs.com/midnight-fuel-stop |
| 62 | +3. Tayamayamada: Midnight Thoughts. MotionBGS. https://motionbgs.com/tayamayamada-midnight-thoughts |
| 63 | +4. Frostfang Barioth Armor (MHW Iceborne). MotionBGS. https://motionbgs.com/frostfang-barioth-armor-mhw-iceborne |
| 64 | +5. Morning Serenity. MotionBGS. https://motionbgs.com/morning-serenity |
0 commit comments