HERE BE DRAGONS: this is extremely early in development and is missing most of it's planned features. if you want, you can use this daily as its not critical infrastructure, but I wouldn't.
SilverScreen is a GTK 4 and Libadwaita desktop app for finding YouTube videos and opening them in MPV (hopefully an embeded libmpv player in the future).
Search YouTube or paste a video link, then play it with your local MPV install. With a YouTube session captured through the isolated in-app Google sign-in or added manually, SilverScreen can also load your Home recommendations.
- The .NET 10 SDK.
- GTK 4, Libadwaita, WebKitGTK 6 (
libwebkitgtk-6.0), and libsoup 3 native libraries compatible with the GirCore bindings used by the app. yt-dlponPATHfor search and Home recommendations.- The
libsecretshared library and an unlocked Freedesktop Secret Service provider, such as GNOME Keyring or KWallet configured with Secret Service support.secret-toolis optional for manual diagnostics and is not an application dependency. mpvonPATHfor playback.
The app launches yt-dlp and mpv by those names. If either command is missing, the related action cannot run.
From the repository root:
dotnet run --project src/SilverScreen.App/SilverScreen.App.csproj- Select the search button in the header.
- Enter a normal YouTube search or paste a supported YouTube video URL.
- Select a result to play it in MPV, or open its menu to add it to the queue.
Text searches use yt-dlp and show up to 20 non-Shorts video results. Pasting a regular YouTube video URL skips the search and opens that video in MPV.
The queue is a small in-memory list. Add next places a video at the front; you can remove items or clear the list from the floating queue button. It does nothing for now. in the future I hope to turn it into something used in place of opening multiple tabs to watch back to back.
Home is opt-in because it needs a YouTube session.
- Open the account button in the header.
- Choose Sign in with Google and complete sign-in in the isolated in-app window.
- SilverScreen captures the resulting YouTube cookies, closes the sign-in window, and validates the session automatically.
- Refresh Home.
If embedded Google sign-in is unavailable, choose Add manual session instead and paste a browser-exported Netscape-format cookies.txt file. SilverScreen stores either session in the logged-in user's desktop Secret Service keyring and restores it on the next app run. The embedded window uses a fresh ephemeral WebKit session for every attempt; its browser storage is discarded after closing, and refreshing never clears the previous saved session unless a new capture succeeds. Cookie values are not shown after saving and no plaintext persistent app configuration is created. Clearing the session removes the keyring entry. When yt-dlp or MPV needs the cookies, the app creates a short-lived 0600 cookie file in a 0700 directory and removes it when practical.
- Home requires a YouTube session and supports refresh plus continuation-page loading when YouTube provides one.
- Search results and Home recommendations exclude YouTube Shorts.
- Supported pasted URLs are ordinary YouTube video links. Shorts, channel pages, playlists, and other unsupported YouTube URLs are rejected or reported as not implemented.
- Subscriptions and History are currently placeholder views. Preferences and About are also placeholders.
- Only search and queue contents are not persisted; the YouTube session persists in the Secret Service keyring.
| Path | What it contains |
|---|---|
src/SilverScreen.App/ApplicationServices.cs |
Explicit application composition and disposal owner for the shared queue, session, playback, search, thumbnail, and Home services. |
src/SilverScreen.App/Views/Shell |
The thin application-window shell: header chrome, navigation stack, status presentation, global menu, and popover placement. |
src/SilverScreen.App/Views/Home, Views/Search |
Independently compiled Blueprint page roots and their page-owned rendering/cancellation. |
src/SilverScreen.App/Views/Components, Views/Popovers |
Reusable video cards plus independent queue and account popover roots. |
src/SilverScreen.App/ViewModels |
GTK-free shell, Home, search, queue, and account presentation state/adapters. |
src/SilverScreen.App/Features |
Search, playback, queue, session, feed, and thumbnail behavior. |
src/SilverScreen.App/Infrastructure/YouTube |
The yt-dlp-backed Home feed client. |
tests/SilverScreen.Tests |
Unit tests for feature and presentation-state behavior. |
Things I hope to implement (these are big features I'm leaving for when the project is in less of an unstable state):
Viewing video comments
Embedded player (probably with libmpv)
Offline playback (downloading)
Managing offline (or online) playback (organize videos and make playlists and stuff)
sCommenting on videos
I hope to make this a better and complete replacement for the YouTube website. not just an alternative
Build the solution:
dotnet build SilverScreen.slnRun the tests:
dotnet test tests/SilverScreen.Tests/SilverScreen.Tests.csprojThis README covers the application and its usual local setup. The source is the current reference for implementation details and default timeouts.