Lurk puts a Twitch livestream into a small panel in VS Code's Explorer – right below Outline and
Timeline – with the chat in a second panel. When the streamer raids someone, Lurk follows along to
the next channel. Past broadcasts play there too, and once you sign in you see who of the channels
you follow is live and can chat.
Illustration with placeholder content.
Features
- Livestream in the sidebar – type a channel name or paste a twitch.tv link and the stream
starts. The quality fits itself to the panel size; you can also pick one.
- Channel suggestions – while you type, matching channels show up like in twitch.tv's search,
with live status, game and viewer count.
- Follows raids – when the channel raids someone, player and chat switch to the raided channel
and show who raided whom. Prefer to decide yourself? Turn off
twitchPlayer.followRaids and you
get a notification with a Watch button instead.
- Chat with 7TV emotes – Twitch emotes, 7TV global and channel emotes (including zero-width
overlays), badges, mentions and links, readable name colors in every theme.
- Write in chat – after signing in: emote completion like Chatterino (type
:kek or press
Tab) with your Twitch emotes and the channel's 7TV emotes, @name completion,
↑ for your last message, and messages that mention you are highlighted.
- Channels you follow – the Twitch Following panel lists them, live ones first with game and
viewer count. Click one to watch it.
- Past broadcasts – offline channels list their latest broadcasts; play them with a seek bar,
and Lurk remembers where you stopped.
twitch.tv/videos/… links work too, including ?t=1h2m.
- Keeps playing in the background – collapse the panel, switch to Search or Source Control, or
minimize VS Code: the sound keeps going.
- Picture-in-picture – double-click the video for a floating window.
- Close to live – a few seconds behind the broadcast, so the picture matches the chat.
- Offline channels – start by themselves as soon as the streamer goes live.
- Multilingual – English and German, following VS Code's display language.
Install
- Visual Studio Marketplace: search for “Lurk” in the Extensions view once it is published
there.
- From a release: download the
.vsix from the
releases page and
run Extensions: Install from VSIX… in VS Code.
Requires VS Code 1.95 or newer.
Usage
- Open the Explorer and expand the Twitch panel, or run Lurk: Open Twitch Channel… from the
Command Palette.
- Enter a channel name, e.g.
papaplatte, and press Enter.
- Click into the player once to turn the sound on. VS Code only allows audio after a click
inside the panel; the player shows a hint until then.
- Expand Twitch Chat for the chat. Both panels can be dragged anywhere: above or below each
other, into the bottom panel or into the secondary sidebar.
The panel's title bar has buttons to open another channel, show the chat, open the stream on
twitch.tv and stop; its … menu lists the channel's past broadcasts. Recently watched
channels are listed on the start screen.
Signing in (optional)
Expand Twitch Following and click Sign in with Twitch, or run Lurk: Sign in with Twitch.
Lurk opens twitch.tv with a code already filled in; confirm it there and you are signed in. You can
sign out from the panel's … menu or from VS Code's Accounts menu.
Lurk asks Twitch for three permissions: read the channels you follow (user:read:follows), read
your emotes for completion (user:read:emotes) and send the chat messages you write
(user:write:chat).
Settings
| Setting |
Default |
Description |
twitchPlayer.followRaids |
true |
Switch to the raided channel automatically. |
twitchPlayer.quality |
auto |
Preferred quality: auto, 1080p, 720p, 480p, 360p or 160p. |
twitchPlayer.resumeLastChannel |
false |
Reopen the last channel when VS Code starts. |
twitchPlayer.chat.maxMessages |
200 |
Number of chat messages kept in the chat panel. |
twitchPlayer.twitchClientId |
(empty) |
Client ID of your own Twitch application for signing in (forks). |
Good to know
- No tracking, account optional. Lurk collects no data. Watching needs no account. If you sign
in, the Twitch token stays in VS Code's secret storage (your system keychain), is only sent to
Twitch and is revoked when you sign out. Lurk only talks to Twitch (
gql.twitch.tv,
usher.ttvnw.net and the video CDNs, hermes.twitch.tv for raids, irc-ws.chat.twitch.tv for
chat, static-cdn.jtvnw.net for emotes and badges, and id.twitch.tv and api.twitch.tv when
signed in) and to 7TV (7tv.io, cdn.7tv.app).
- Website endpoints. For playback Lurk uses the same public endpoints as the twitch.tv website,
like other third-party players do. They are not a documented API, so Twitch can change them at any
time and something may stop working until Lurk is updated. Everything that needs your account uses
Twitch's official API.
- Ads play the way they do on twitch.tv; an Ad break badge shows while they run.
- No channel points. Twitch only awards and lets you claim channel points in its own apps, so
watching in Lurk does not earn them.
- No chat replay for past broadcasts. The chat panel shows live chat only.
How it works
Playing Twitch inside VS Code takes three extra pieces:
- Audio: VS Code ships without an AAC decoder, Twitch's audio codec, so streams would play
silently. Lurk hands hls.js a stand-in for its audio
SourceBuffer that decodes AAC with a
WebAssembly build of FAAD2, re-encodes it as lossless FLAC (which VS Code can decode) and
appends that to a real SourceBuffer. The <video> element therefore has a native audio track
with native A/V sync, volume and background playback.
- Playlists: the extension host loads the playlists and hands them to the webview, because
Twitch does not serve them to VS Code webviews. Live video segments load directly; segments of
past broadcasts go through the extension host as well.
- Raids: the extension host subscribes anonymously to the channel's raid topic on Twitch's
"Hermes" push socket, the one twitch.tv uses itself.
Contributing
Bug reports, ideas, translations and pull requests are welcome – see
CONTRIBUTING.md. Adding a language takes two JSON files.
License
Lurk is free software, licensed under the
GNU General Public License v3.0 or later. The bundled AAC decoder is based on FAAD2,
which is GPL-licensed, so the extension as a whole is GPL as well. Third-party components are
listed in THIRD_PARTY_NOTICES.md.
Lurk is not affiliated with, endorsed or sponsored by Twitch Interactive, Inc. or 7TV. Twitch is a
trademark of Twitch Interactive, Inc.
| |