{"id":50945986,"url":"https://github.com/keredson/gtktube","last_synced_at":"2026-06-17T20:06:31.880Z","repository":{"id":363894822,"uuid":"1265404304","full_name":"keredson/gtktube","owner":"keredson","description":"A native YouTube frontend for Linux.","archived":false,"fork":false,"pushed_at":"2026-06-10T20:20:54.000Z","size":5605,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T21:14:00.003Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keredson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-10T18:39:06.000Z","updated_at":"2026-06-10T20:21:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/keredson/gtktube","commit_stats":null,"previous_names":["keredson/gtktube"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/keredson/gtktube","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fgtktube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fgtktube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fgtktube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fgtktube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keredson","download_url":"https://codeload.github.com/keredson/gtktube/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keredson%2Fgtktube/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34463574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T20:06:31.385Z","updated_at":"2026-06-17T20:06:31.874Z","avatar_url":"https://github.com/keredson.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GTKTube\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/keredson/gtktube/main/gtktube/assets/gtktube.png\" alt=\"GTKTube icon\" width=\"128\" height=\"128\"\u003e\n\u003c/p\u003e\n\nGTKTube is a local privacy-first Python/GTK4 YouTube player for Linux.\nIt stores subscriptions and viewing history locally in SQLite, and does not require a Google account.\nThe feed has no algorithm. It just shows recent videos from the channels you subscribe to.\n\n## Features\n\n- Browse recent videos from your subscribed channels without YouTube recommendations.\n- Watch without ads.\n- No tracking by GTKTube.\n- Search YouTube for videos and channels without signing in.\n- Personalized home feed with recommended videos (requires browser cookies).\n- Subscribe and unsubscribe locally; no Google account, OAuth, cookies, or account sync.\n- Play videos inside the GTK app with libmpv.\n- Choose playback quality and speed, including speeds up to 4x.\n- Use normal playback shortcuts for play/pause, seeking, fullscreen, and speed changes.\n- Keep watching while browsing with a mini-player.\n- Save videos to Watch Later.\n- Track watch history locally, including watched time ranges rather than only a last position.\n- Search and review local watch history.\n- Optionally configure yt-dlp to extract browser cookies to play age-restricted and members-only videos.\n- Optionally use SponsorBlock to show and skip community-maintained segment ranges.\n- Limit how many videos a single channel can put in each feed day.\n- Refresh subscriptions in parallel with per-channel progress in the sidebar.\n- Check PyPI for updates and upgrade/restart from inside the app.\n- Store thumbnails on disk and app data in SQLite.\n\n## Screenshots\n\n### Channel Browsing\n\n![Channel grid](https://raw.githubusercontent.com/keredson/gtktube/main/screenshots/channel.png)\n\n### Player\n\n![Video player](https://raw.githubusercontent.com/keredson/gtktube/main/screenshots/player.png)\n\n### Mini-Player\n\n![Mini-player while browsing](https://raw.githubusercontent.com/keredson/gtktube/main/screenshots/miniplayer.png)\n\n## Install\n\n```sh\npipx ensurepath\npipx install --system-site-packages gtktube\ngtktube --install-desktop\n```\n\nGTKTube also needs GTK4/PyGObject, libmpv, and a JavaScript runtime for yt-dlp\nfrom your Linux distribution.\nIf required system dependencies are missing, the app can launch a small installer helper.\n\n## Run\n\nGTKTube installs a desktop app entry, so you can launch it from your normal Linux app launcher.\nYou can also run it from a terminal:\n\n```sh\ngtktube\n```\n\nWhen launched as the installed `gtktube` command, GTKTube also installs or updates\nits desktop launcher entry in your user application directory. If your desktop\nenvironment does not show it immediately after installation, run `gtktube` once\nfrom a terminal or run `gtktube --install-desktop`.\n\nUseful startup flags:\n\n- `gtktube --show-upgrade` opens the upgrade dialog even when GTKTube has not detected a newer version.\n- `gtktube --show-deps-installer` opens the system dependency installer even when GTKTube thinks dependencies are present.\n- `gtktube --db /path/to/gtktube.sqlite3` uses a specific SQLite database file.\n- `gtktube --install-desktop` installs the desktop launcher entry and exits.\n- `gtktube -v` or `gtktube --verbose` prints detailed playback diagnostics to stderr.\n\nDevelopment runs with `python -m gtktube` do not auto-install a desktop launcher or check PyPI for upgrades.\n\n## Updates\n\nWhen launched from an installed `gtktube` command, GTKTube checks PyPI for newer\nreleases. If an update is available, the app can run the appropriate upgrade\ncommand and restart itself. Pipx installs use `pipx upgrade gtktube`; other\ninstalls use `python3 -m pip install --upgrade gtktube`.\n\n## Data Storage\n\nGTKTube keeps its state on your machine:\n\n- subscriptions and watch history in SQLite\n- thumbnail cache under the user cache directory\n- no Google account integration\n- no cloud sync\n- no analytics or tracking by GTKTube\n\n## License\n\nGTKTube is licensed under the GNU General Public License v3.0. See `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeredson%2Fgtktube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeredson%2Fgtktube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeredson%2Fgtktube/lists"}