[HN Gopher] Show HN: MacOS Live Screensaver - A screensaver that...
___________________________________________________________________
Show HN: MacOS Live Screensaver - A screensaver that plays live
video streams
Author : hauxir
Score : 55 points
Date : 2025-10-21 11:48 UTC (3 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| hauxir wrote:
| Or any live stream on youtube for that matter, surprised this
| didn't exist before!
| rollcat wrote:
| AVFoundation is pretty cool. You can whip out a simple
| audio/video player in a couple dozen lines of code. It was one of
| my first macOS apps/prototypes.
| cnr wrote:
| Does it really save the screen? ;P
| hauxir wrote:
| Is that really the point anymore :D?
| nothrabannosir wrote:
| With oled it is, yes
| MontagFTB wrote:
| How'd they get Claude listed as one of the contributors? Is that
| due to changes coming in to the repo from a Claude/github
| integration?
| hauxir wrote:
| it's just claude code commiting and pushing for me because i'm
| lazy
| threecheese wrote:
| Not lazy! This should be a requirement, so future "us" can
| discern authorship - just like any developer.
| hrimfaxi wrote:
| It will probably go the opposite way though in the future.
| People will list when AI wasn't used in the loop, like how
| "sent from my iphone" was both a status signal and a
| request for leniency when it comes to spellcheck.
| hackernewds wrote:
| if you read the article, it says it is entirely vibecoded
| its-kostya wrote:
| > Disclaimer: This project was entirely vibe-coded. I've never
| written Swift before in my life
|
| Something I've wondered - but not had much empirical evidence for
| - is if entirely vibe-coded projects are difficult to maintain.
| I, too, don't know swift so I cannot look over the codebase to
| gauge this. I am curious if any swift savants out there can weigh
| in.
|
| Furthermore, I will follow the project and keep an eye out for
| patches/discussions and try to discern any friction and/or loss
| in momentum because it is difficult to work with (e.g. more
| bug/feature tickets than PRs, etc.). I am aware it might fizzle
| out on its own, irrespective of the quality of the codebase. This
| will be a curious exercise for me. This may be my first empirical
| data on this topic - sadly on vibe-coded & maintainability, not
| the project itself.
| hauxir wrote:
| They most definitely are.
|
| However this project is so simple it's more akin to a script.
| Really not that hard to grasp despite not knowing swift.
|
| Also vibe coded an android tv version and used this codebase as
| input ;)
|
| https://github.com/hauxir/androidtv-live-screensaver
| runjake wrote:
| Indeed I was able to read through it's 555 lines in about 4-5
| minutes. Nothing seems too ghastly -- it's a pretty good vibe
| coding job.
| reaperducer wrote:
| I wonder if certain languages are easier to vibe code than
| others.
|
| My supposition is that the better documented a language, the
| easier it would be for the LLMs.
|
| Or is it the opposite: The more obtuse a language, the more
| StackOverflow questions, the easier it is for LLMs to work
| with.
| its-kostya wrote:
| I've had success vibe-coding things that, I would imagine,
| make up more of the training dataset - more common. When I
| try to do more specific Linux systems programming it is
| pretty trash, especially with newer languages.
| Someone wrote:
| > is if entirely vibe-coded projects are difficult to maintain
|
| Vibe coding is too "Hail Mary" to me, but if you're into it, I
| would think the best way to do that is by giving a LLM the git
| history of the project with each commit contain the prompt that
| created it and, if a human tweaked things, requiring that human
| to provide a good commit comment.
|
| Then, you could give a LLM the git repo, instructions on what
| change you want to see, and have it create the next commit.
| dylan604 wrote:
| > requiring that human to provide a good commit comment.
|
| Is this enough? Personally, I have a what very well may be a
| bad habit of mine that doesn't necessarily check git commit
| messages. When I'm working in a code base, I just never think
| about scrolling through those hoping to find where this bit
| of code was changed. I'd much rather have comments in the
| code itself. It seems better to me to save the maintainer
| time and effort. Maybe I've just taken too seriously the idea
| of "assume the maintainer after you will be a serial killer
| that knows where you live. don't make them angry by being
| lazy"
| grimgrin wrote:
| this is kinda inline with what you're asking i think?
|
| https://simonwillison.net/2025/Oct/7/vibe-engineering/
|
| for me it's working on a thing, and then linting, type
| checking, running tests. and even then thoughtfulness still
| required
| diob wrote:
| I think they're just as maintainable as any other legacy app
| you might encounter. As in, it can be hard. But it's doable.
| And it depends on the team that made it (AI + the human).
| losthobbies wrote:
| I will be streaming a certain watering hole in Namibia.
| grimgrin wrote:
| this is cool. i love shit like this
|
| idk if any of y'all ever used
| https://satelliteeyes.tomtaylor.co.uk/ but I was a big fan. such
| that i now have my own process of keeping my wallpaper updated w/
| various city webcams. throw in some noise/desaturation and you've
| got an _aesthetic_
|
| anyway, this is about a screensaver not a wallpaper and i think
| there is cool potential with video streams as screensavers
| t1234s wrote:
| Does anyone still use screensavers? I have set my machines to
| turn off the screen as soon as that was an available option.
| grimgrin wrote:
| it's a combination of people seeking aesthetic (imo), and
| naturally, preventing an oled, plasma, or crt from burn-in
| c-hendricks wrote:
| If the screen is off, what's to burn in?
| grimgrin wrote:
| nothing because that is a screen saver. but yeah you're
| right, it's probably mostly people who just want to see a
| visualization? i'd never argue screensavers are a logical
| choice lol
| ge96 wrote:
| I like the newest mac update shore video, Tahoe I think with
| the liquid glass
| macNchz wrote:
| As much as I disliked open plan offices, I did enjoy trolling
| my coworkers with fake blue screen of death and kernel panic
| screensavers. Windows 95 "Pipes" also got a lot of nostalgic
| shoutouts when I used that for a while.
| t1234s wrote:
| Pipes and the other direct3D screen savers were legit
| dylan604 wrote:
| It's still a habit of mine. I have 2 external monitors on my
| desk connected to my laptop. One of them is a bit older LCD,
| but still functions well for purpose. It has a fun little quirk
| where when it first turns on there are a few vertical lines of
| a solid color until it has "warmed up" and the lines disappear
| after a few minutes. By using a screen saver when I get up and
| lock the screen, I don't have to wait for that screen to warm
| back up. At night, it does eventually turn off the screen saver
| after my timeout, but at least it's not every time I return to
| the desk.
|
| Also, from a time long ago in a galaxy far away where we had
| production CRTs that were color calibrated, we would not turn
| them off either. They had a saver mode as well by running a not
| quite black signal to them, but not enough to burn in
| phosphors. It was even meant to "even" out some of them.
|
| So because I'm that old that has used CRTs for such a long part
| of my life, screen savers will always be just part of the
| routine.
| dfedbeef wrote:
| Finally, a screen saver with ads
| grimgrin wrote:
| bring your own http live stream
| aerostable_slug wrote:
| Nice work!
|
| Excellent, advertising-free live streams to choose from here:
|
| https://www.youtube.com/@MontereyBayAquarium/streams
|
| I often turn on the kelp forest (sound muted) as a pleasing
| backdrop on my living room TV, but they're all pretty neat.
| Lammy wrote:
| Getting my daily dose of Kensington Ave, Philadelphia or Skid
| Row, Los Angeles every time I come back from the restroom:
|
| - https://www.youtube.com/watch?v=V8mIPhfrMug
|
| - https://www.youtube.com/watch?v=PnpcdnZhztI
| cwizou wrote:
| That's super cool, congrats on releasing it ! It's a feature that
| some people periodically ask me to add in Aerial, but I never got
| to it. Piping from yt-dlp to AVFoundation is definitely the way
| to go.
|
| I was gonna warn you about a bug in macOS 15+ where your
| screensaver stays around after you go back to the desktop, but
| for some reason your code seems to avoid that issue. I'm not
| quite sure _how_ , as you don't hook stopAnimation or any event
| apart from the deinit. But it works, so, massive kudos, I'll have
| to try and understand why !
| hauxir wrote:
| interesting you pointed that out because i ran into that exact
| problem!
|
| look at the animateoneframe function, there's the workaround
| cwizou wrote:
| Ha, you do the exit trick too then, I just missed it.
|
| FYI that works 99% of the time, but for some people it
| sometimes crashes (because we exit our host container -
| legacyScreenSaver.appex - and sometimes if you do it at a
| wrong time things just hang).
| cwizou wrote:
| So fyi, the way you hook it there is what makes the preview
| flicker in System Settings.
|
| You check if the screen is locked, and if not, kill the host.
| But screen is not locked in System Settings. So basically,
| you're killing the host process every 2 seconds (and macOS,
| at least in Tahoe, restarts it, it doesn't in previous macOS
| versions).
|
| That's also what causes your issues with "Options" not
| working (because you killed the instance that was linked to
| that button). The way we workaround it usually is to hook a
| system event.
|
| You can check
| https://github.com/AerialScreensaver/ScreenSaverMinimal
|
| Look for handleWillStopNotification and
| com.apple.screensaver.willstop
| hackernewds wrote:
| We have become so wasteful with energy. at a mass scale this will
| consume a lot of electricity but we only think of dollar cost now
| billsunshine wrote:
| this is so cool, congrats, im a product manager turned vibe coder
| so im way into this. nice job, ill be tracking!
| Lucian6 wrote:
| Interesting approach using AVFoundation for the video playback.
| I've worked with streaming video on macOS and found that AVPlayer
| can be quite memory-hungry when handling multiple streams. Have
| you considered using VLCKit instead? In our testing, VLCKit used
| about 40% less memory and handled network interruptions more
| gracefully.
|
| One potential enhancement would be to add support for adaptive
| bitrate streaming (HLS/DASH). Most live streams nowadays offer
| multiple quality levels, and automatically switching based on
| available bandwidth/CPU makes a big difference in reliability.
| The AVPlayerItem.preferredPeakBitRate property gives you basic
| control, but implementing a full ABR solution with VLCKit gives
| much finer-grained control over quality transitions.
|
| Also curious about your strategy for handling screen sleep/wake
| cycles. We found that AVPlayer instances sometimes get stuck in a
| bad state after sleep, requiring a full teardown and reinit.
| Using notification observers for NSWorkspaceDidWakeNotification
| helped catch and recover from these cases.
___________________________________________________________________
(page generated 2025-10-24 23:01 UTC)