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