{"id":36713437,"url":"https://github.com/mkeguy106/livestream.list.qt","last_synced_at":"2026-04-23T02:04:06.443Z","repository":{"id":332075240,"uuid":"1127973796","full_name":"mkeguy106/livestream.list.qt","owner":"mkeguy106","description":"A Qt6 application for monitoring livestreams on Twitch, YouTube, and Kick","archived":false,"fork":false,"pushed_at":"2026-04-01T23:08:40.000Z","size":102113,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T10:28:42.877Z","etag":null,"topics":["chaturbate","flatpak","kick","linux","livestream","pyside6","python","qt6","streaming","twitch","youtube"],"latest_commit_sha":null,"homepage":"https://github.com/mkeguy106/livestream.list.qt/wiki","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkeguy106.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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-01-05T00:10:25.000Z","updated_at":"2026-04-01T23:08:44.000Z","dependencies_parsed_at":"2026-01-27T03:00:39.360Z","dependency_job_id":null,"html_url":"https://github.com/mkeguy106/livestream.list.qt","commit_stats":null,"previous_names":["mkeguy106/livestream.list.qt"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/mkeguy106/livestream.list.qt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkeguy106%2Flivestream.list.qt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkeguy106%2Flivestream.list.qt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkeguy106%2Flivestream.list.qt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkeguy106%2Flivestream.list.qt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkeguy106","download_url":"https://codeload.github.com/mkeguy106/livestream.list.qt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkeguy106%2Flivestream.list.qt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32162614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"online","status_checked_at":"2026-04-23T02:00:06.710Z","response_time":53,"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":["chaturbate","flatpak","kick","linux","livestream","pyside6","python","qt6","streaming","twitch","youtube"],"created_at":"2026-01-12T11:51:18.922Z","updated_at":"2026-04-23T02:04:06.400Z","avatar_url":"https://github.com/mkeguy106.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Livestream List (Qt)\n\nA PySide6/Qt6 application for monitoring livestreams on Twitch, YouTube, Kick, and Chaturbate. Inspired by [Livestream.Monitor](https://github.com/laurencee/Livestream.Monitor) for Windows.\n\nThis is a Qt port of [livestream.list.linux](https://github.com/mkeguy106/livestream-list-linux) (GTK4/Libadwaita version).\n\n---\n\n\u003e **Warning**\n\u003e\n\u003e This project was entirely vibe-coded with Claude AI. I'm just some guy who threw prompts at an AI until something worked. Use at your own risk.\n\u003e\n\u003e ![Claude Code is all you need](docs/i_made.webp)\n\n---\n\n**Stream list with live status, viewers, and duration across all platforms:**\n\n![Main Window - Dark Theme](docs/screenshots/main-window-dark.png)\n![Main Window - Light Theme](docs/screenshots/main-window-light.png)\n\n**Compact mode for a minimal, dense layout:**\n\n![Compact Mode](docs/screenshots/compact-mode.png)\n\n**Built-in chat with emotes, badges, replies, and sub notifications:**\n\n![Chat Window](docs/screenshots/chat-animated.gif)\n\n**Launch streams in mpv with streamlink integration:**\n\n![mpv Playback](docs/screenshots/mpv-playback.gif)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore screenshots\u003c/summary\u003e\n\n**Chat (static):**\n\n![Chat Window](docs/screenshots/chat-window.png)\n\n**Preferences — General, Chat, and Appearance tabs:**\n\n![Preferences - General](docs/screenshots/preferences-general.png)\n![Preferences - Chat](docs/screenshots/preferences-chat.png)\n![Preferences - Appearance](docs/screenshots/preferences-appearance.png)\n\n\u003c/details\u003e\n\n## Features\n\n- **Multi-Platform Support** - Add channels from Twitch, YouTube, Kick, and Chaturbate\n  - Paste URLs to auto-detect platform (e.g., `https://twitch.tv/username`, `https://chaturbate.com/username`)\n  - Clipboard auto-paste when opening add dialog\n- **Desktop Notifications** - Get notified when streams go live (smart notifications - no flurry on startup)\n  - Custom notification sound (WAV/OGG/MP3/FLAC)\n  - Urgency levels (low/normal/critical)\n  - Configurable timeout\n  - Per-platform filter (Twitch, YouTube, Kick, Chaturbate)\n  - Quiet hours scheduling (e.g., 22:00 to 08:00)\n  - Raid notifications for open chat channels\n- **System Tray Icon** - Minimize to tray, click to restore, right-click menu\n  - Works on KDE, XFCE, Cinnamon, Budgie, LXQt, MATE, and GNOME (with AppIndicator extension)\n- **Run in Background** - Keep running when window is closed to receive notifications\n  - First-launch prompt to choose behavior (quit or run in background)\n- **Single Instance** - Prevents multiple instances from running simultaneously\n  - Second launch brings existing window to foreground with a warning dialog\n  - Override with `--allow-multiple` or `-m` flag\n- **Launch on Startup** - Option to start automatically when you log in\n- **Streamlink Integration** - Double-click to launch streams in mpv/VLC with playback tracking\n  - Auto-play: per-channel auto-launch when a stream goes live, with global toggle in toolbar\n  - Console window for viewing streamlink/yt-dlp output in real-time (auto-closes by default)\n  - Twitch Turbo ad-free viewing (auto-extracts browser auth-token, enabled by default)\n  - Record streams to disk while watching (saves as `.ts` files)\n  - Low-latency defaults for Twitch and Kick streams\n- **Built-in Chat Client** - Native multi-channel chat with tabbed interface\n  - Twitch and Kick chat with full emote and badge rendering\n  - Chaturbate embedded web chat (QWebEngineView with DOM isolation)\n  - Emote support: Twitch, Kick native, 7TV, BTTV, FFZ\n  - Tab-completion for emotes (press Tab while typing)\n  - Tooltips on emotes and badges (shows name and provider)\n  - User card popup — click username to see account age, badges, notes, and history\n  - Right-click for user actions (block, open channel)\n  - Sub/resub/raid/gift alerts (USERNOTICE) with themed styling\n  - Hype Chat (paid pinned messages) with dismissable banner\n  - Pop-out chat tabs into standalone windows\n  - Customizable tab colors via color picker\n  - Twitch OAuth login for sending messages\n  - Kick OAuth 2.1 + PKCE login for sending messages\n  - Chaturbate sign-in via embedded browser (session cookies)\n  - Twitch whispers/DMs (send and receive direct messages)\n  - Reply to messages (right-click → Reply, with visual indicator showing full parent message)\n  - @mention autocomplete (type @ to suggest usernames)\n  - @mention highlighting with tab flashing for notifications\n  - Conversation view (click @mention or reply context to see full back-and-forth)\n  - Clickable category/game in title banner (opens Twitch/Kick category page)\n  - Real-time spellcheck (hunspell) with custom dictionary and auto-correct\n  - Chat scroll pause in busy channels (auto-resumes after 5 min)\n  - Recent chat history on channel join (Twitch)\n  - Badge tooltips showing descriptive titles (e.g., \"6-Month Subscriber\")\n  - Copy messages with Ctrl+C\n  - Up/down arrow to cycle through previously sent messages\n  - Message character counter (500 for Twitch/Kick/Chaturbate, 200 for YouTube)\n  - Configurable timestamp format (12-hour or 24-hour)\n  - Chat mode indicators (sub-only, slow mode, emote-only, followers-only, R9K)\n  - Slow mode countdown timer in input box\n  - Deleted message options (strikethrough, truncated, or hidden)\n  - Chat log export to text file\n  - Emote autocomplete prioritizes recently used emotes\n  - Emote picker popup (Ctrl+E) — searchable grid organized by provider, channel emotes first with separator\n  - Emote picker animates emotes with viewport culling (only visible emotes animate)\n  - Emote picker filter dropdown: All / Animated / Static\n  - Emote picker auto-downloads missing emotes on open (channel emotes prioritized)\n  - Sub-only channel emotes greyed out with \"Subscribe to use\" tooltip\n  - In-chat search with predicates (Ctrl+F) — from:user, has:link, is:sub, is:mod\n  - Link tooltip previews — hover URLs to see page title\n  - Zero-width emotes — 7TV overlay emotes that stack on other emotes\n  - User card on hover — hover username to see profile image, bio, followers, follow age, pronouns (YouTube: avatar, bio, subscriber count, join date, country)\n  - User card text selectable and copyable (Ctrl+C or right-click)\n  - Hype Train banner — purple-themed progress bar with level, goal, and countdown timer\n  - Raid banner — orange-themed banner with raider name and viewer count, 120s countdown timer\n  - Chat logging — persistent JSONL/text per-channel logs with disk rotation\n  - Chat history — load recent messages from disk logs when opening a channel\n  - Always on Top toggle in gear menu (persisted, works on Wayland via KWin scripting)\n- **Always on Top** - Keep main window above other windows (View menu toggle, persisted)\n- **Browser Chat** - Open stream chat in browser (Twitch, Kick, YouTube)\n  - Auto-open chat when launching streams\n  - Browser selection: System Default, Chrome, Chromium, Edge, Firefox\n  - YouTube chat works when stream is live\n  - YouTube expired cookie detection with auto-refresh from browser\n- **Import Follows** - Import followed channels from Twitch and Chaturbate\n- **Export/Import** - Backup and restore channels and settings\n  - Includes app version for compatibility tracking\n  - JSON format for easy inspection\n- **Favorites** - Star your favorite channels and filter to show only favorites\n- **Last Seen** - Offline channels show when they were last live (e.g., \"2h ago\", \"3d ago\")\n- **Platform Filter** - Filter by platform (All, Twitch, YouTube, Kick, Chaturbate)\n- **Stream List Context Menu** - Right-click: Play/Close Channel, Open Chat, Open in Browser, Favorite/Unfavorite\n- **Chaturbate Private Room Detection** - Dimmed channel name and tooltip when a room is in a private/hidden show\n- **Platform Colors** - Color channel names by platform (purple for Twitch, green for Kick, orange for Chaturbate)\n- **Name Filter** - Filter channels by name with wildcard support (e.g., `*gaming*`)\n- **Sort Options** - Sort by Name, Viewers, or Playing status\n- **Hide Offline** - Toggle to show only live streams\n- **Selection Mode** - Multi-select channels for bulk deletion\n  - Shift+click range selection\n  - Trash bin for soft-delete with restore\n- **Theme System** - 6 built-in themes (Dark, Light, High Contrast, Nord, Monokai, Solarized) plus custom themes\n  - Theme editor in Preferences with per-color customization\n  - Import/export themes as JSON\n  - Quick cycle through themes via toolbar button\n- **UI Styles** - Default, Compact 1, Compact 2, Compact 3 layouts\n  - All UI elements scale with compact modes (buttons, icons, toolbar)\n- **Alternating Row Colors** - Stream list and chat support alternating row backgrounds\n- **Stream Playback Tracking** - Shows \"Playing\" indicator with stop button\n- **Window Size Persistence** - Remembers window size between sessions\n\n## Requirements\n\n- Python 3.10+\n- PySide6 (Qt6)\n- hunspell + hunspell-en-us dictionary (spellcheck)\n- yt-dlp (bundled in Flatpak, for YouTube stream detection)\n- Streamlink (optional, for launching streams)\n- mpv (optional, default player)\n\n## Installation\n\n### Flatpak (Recommended)\n\nDownload `livestreamListQt.flatpak` from [Releases](https://github.com/mkeguy106/livestream.list.qt/releases).\n\n```bash\n# Install (will also install KDE runtime dependencies from Flathub)\nflatpak install --user ~/Downloads/livestreamListQt-v*.flatpak\n\n# Run\nflatpak run app.livestreamlist.LivestreamListQt\n\n# Or launch from your application menu: \"Livestream List (Qt)\"\n```\n\n### From Source\n\n```bash\n# Clone and install\ngit clone https://github.com/mkeguy106/livestream.list.qt.git\ncd livestream.list.qt\npython -m venv .venv\nsource .venv/bin/activate\npip install -e .\n```\n\n## Usage\n\n```bash\nlivestream-list-qt\n# or\npython -m livestream_list\n```\n\n**Command-line options:**\n\n| Flag | Description |\n|------|-------------|\n| `-m`, `--allow-multiple` | Allow multiple instances to run simultaneously |\n\n### Keyboard Shortcuts\n\n- `Ctrl+N` - Add channel\n- `Ctrl+R` / `F5` - Refresh\n- `Ctrl+,` - Preferences\n- `Ctrl+Q` - Quit\n- `Ctrl+Shift+E` - Refresh emotes (chat)\n- `Ctrl+C` - Copy message (chat)\n- `Escape` - Cancel reply / close popup (chat)\n\n### Adding Channels\n\n1. Click the + button or press `Ctrl+N`\n2. Paste a channel URL (e.g., `https://twitch.tv/username`, `https://kick.com/channel`, or `https://chaturbate.com/username`)\n   - Platform is auto-detected from URLs\n   - If you have a URL in clipboard, it's auto-pasted\n3. Or enter a channel name and select platform\n4. Click Add\n\n### Importing Follows\n\n**Twitch:**\n1. Open Preferences (`Ctrl+,`) \u003e Accounts tab\n2. Click \"Login\" to authorize with Twitch\n3. Click \"Import Follows\" to import your followed channels\n\n**Chaturbate:**\n1. Open Preferences (`Ctrl+,`) \u003e Accounts tab\n2. Click \"Sign in\" to log into Chaturbate\n3. Click \"Import Follows\" to import your followed channels\n\n### Watching Streams\n\n- Double-click a live stream to launch it in your player\n- The row shows \"Playing\" indicator while the stream is open\n- Click the stop button to close playback\n- Chat can auto-open when launching streams (configure in Preferences \u003e Chat)\n\n### Chat\n\nThe app supports two chat modes (configurable in Preferences \u003e Chat):\n\n**Built-in Chat** (recommended):\n- Click the chat icon on any live stream to open the built-in chat window\n- Tabbed interface for multiple channels simultaneously\n- Login to Twitch, Kick, or Chaturbate in Preferences \u003e Accounts to send messages\n- Chaturbate uses embedded web chat with DOM isolation (QWebEngineView)\n- Right-click tab to pop out into standalone window\n- Settings: font size, timestamps, emote providers, badge visibility, tab colors, max messages\n\n**Browser Chat**:\n- Opens chat in your system browser (Chrome, Firefox, etc.)\n- **Chat URL Type**: Popout (recommended), Embedded, or Default (legacy) - Twitch only\n- **Auto-open**: Automatically open chat when launching streams\n- Supported: Twitch (popout/embedded/default), Kick (chatroom), YouTube (live chat), Chaturbate (room page)\n\n## Configuration\n\nSettings are stored in `~/.config/livestream-list-qt/settings.json`\n\nChannels are stored in `~/.config/livestream-list-qt/channels.json`\n\n### Streamlink Settings\n\nConfigure in Preferences \u003e Playback:\n- **Streamlink Path**: `streamlink` or full path\n- **Streamlink Arguments**: e.g., `--twitch-low-latency --twitch-disable-ads`\n- **Twitch Turbo**: Pass your Twitch OAuth token to streamlink for ad-free viewing (requires Twitch login)\n- **Console Output**: Show streamlink/yt-dlp output window, with optional auto-close on exit\n- **Record Streams**: Save streams to disk while watching (`.ts` format, configurable directory)\n- **Player**: `mpv` (default), `vlc`, or any video player\n- **Player Args**: e.g., `--fullscreen --volume=80`\n\n## Uninstall\n\n```bash\n# Flatpak\nflatpak uninstall app.livestreamlist.LivestreamListQt\n\n# Manual installation\nrm -rf ~/.config/livestream-list-qt\n```\n\nSee [CHANGELOG.md](CHANGELOG.md) for version history.\n\n## Roadmap\n\nPlanned features for future releases:\n\n- [x] User ignore list — right-click to hide a user's messages, with a settings page to review and unblock\n- [x] Custom highlight keywords — trigger mention-style highlights for specific words/phrases\n- [x] Chat mode indicators — show sub-only, emote-only, slow mode, followers-only status\n- [x] Message character counter — show remaining characters near the input\n- [x] User card popup — click a username to see account age, follow date, channel history\n- [ ] Split view — view two chats side by side in the same window\n- [x] Chat log export — save chat history to a text file\n- [x] Timestamp format option — 12h vs 24h toggle\n- [x] Auto-complete recent emotes first — sort emote suggestions by usage frequency\n- [x] Hype train banner — show active Twitch hype train progress in the chat banner area (requires EventSub or GraphQL; EventSub needs broadcaster auth with `channel:read.hype_train` scope, GraphQL is unofficial but works for any channel)\n- [x] Higher resolution emotes — HiDPI-aware emote rendering using 2x/3x variants from providers for sharp display on high-DPI screens\n- [x] In-chat search — Ctrl+F to search within a channel's messages, with predicates like `from:user`, `has:link`, `is:sub`\n- [x] Emote picker popup — resizable grid of available emotes with search, browsable by category/provider\n- [x] Deleted message options — configurable handling of deleted messages: strikethrough, truncated, or fully hidden\n- [x] Slow mode countdown — show countdown timer in input box indicating when you can send your next message\n- [x] Link tooltip previews — hover over links to see rich previews (YouTube thumbnails, Twitter embeds, etc.)\n- [x] Zero-width emotes — support 7TV/BTTV overlay emotes that stack on top of other emotes (e.g., slide, rainbow)\n- [ ] Smooth scrolling — animated scroll on new messages instead of jumping. Qt defers QListView layout so `scrollbar.maximum()` is stale at call time. Possible fixes: (1) `QTimer.singleShot(0, ...)` to defer animation until after layout pass, (2) use `scrollbar.rangeChanged` signal to trigger animation when range updates, (3) hybrid — instant `scrollToBottom()` for auto-scroll, animate only on \"New messages\" button click where layout is stable\n- [ ] Streamer mode — auto-detect OBS/streaming software and hide usernames/whispers for privacy\n- [x] Reply thread popup — open full reply threads in a dedicated popup window\n- [x] User nicknames — assign custom local display names to other users\n- [x] User notes — attach notes to users, visible on their user card\n- [ ] Multiple accounts — quick account switcher popup for managing multiple logins per platform\n- [ ] Configurable mod timeout buttons — quick mod-action buttons with customizable durations\n- [x] Previous message cycling — up/down arrows to cycle through previously sent messages\n- [ ] Live emote updates — 7TV EventAPI for real-time emote add/remove without manual refresh\n- [x] Custom themes — full theme customization via theme editor with import/export, 6 built-in themes\n- [x] Pronouns display — show user pronouns on user cards\n- [x] Always-on-top — separate toggles for main window (View menu) and chat window (gear menu), with KWin scripting on KDE Plasma for Wayland compatibility\n- [x] Prediction badge details — show picked outcome in prediction badges\n- [ ] Discover Channels — find new streamers to watch with browsable categories:\n  - Top Streamers (highest viewer counts across platforms)\n  - New Streamers (recently started streaming / rising channels)\n  - Trending (channels with unusual viewer growth or spikes)\n  - By Game/Category (browse streamers by what they're playing)\n  - Recommended (based on channels you already follow)\n  - Just Went Live (channels that started streaming in the last few minutes)\n  - Rising Stars (small streamers with growing audiences)\n- [ ] VOD chat replay — play back chat messages from recorded Twitch VODs synced to the video timeline\n- [x] Raid notifications — desktop notification + in-chat orange banner when a Twitch channel is raided (requires chat open)\n- [x] Chat logging — persistent JSONL/text per-channel logging with configurable disk rotation and history loading on chat open\n- [x] Notification improvements — custom sound, urgency, timeout, per-platform filter, and quiet hours scheduling\n\n## License\n\nGPL-2.0 - See [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- Inspired by [Livestream.Monitor](https://github.com/laurencee/Livestream.Monitor) for Windows.\n- Original GTK4 version: [livestream.list.linux](https://github.com/mkeguy106/livestream-list-linux)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkeguy106%2Flivestream.list.qt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkeguy106%2Flivestream.list.qt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkeguy106%2Flivestream.list.qt/lists"}