
I wanted to have Bloomberg TV’s Youtube stream in a minimalist window and first tried the /embed/ trick, but publishers can disable their Youtube videos to work outside of youtube.com (Bloomberg does), so I ended up combining several solutions:
- The Open-as-Popup Chrome extension will turn a tab into a popup, thus removing Chrome’s navigation, tab bar, and bookmark bar. A keyboard-shortcut driven alternative is Tab to Window/Popup, which also lets you roll back a popup into a tab (Alt+Shift+C / Alt+Shift+Z, customizable).
- The Minimal Scrollbar extension auto-hides the scrollbar.
- The Resize Youtube Player To Window Size script forces the player to fill the window so you’re not distracted by sidebar content. Or the ImprovedYoutube extension if you want more YT player options.
In the screenshot above the Youtube controls are visible because I paused the stream, but otherwise they fade away. This is still the regular Youtube site, just without a bunch of ancillary visual clutter. I like to load “always on” web apps such as Gmail, Todoist, PushBullet and WhatsApp in similar (almost) chromeless popups. They even show with their own icon in the Windows taskbar, as opposed to Chrome’s. It all looks tidy especially with windows snap assist and keyboard-driven resizing.
Bloomberg’s live stream often cycles through Top Headlines with annoying background music, in that case pause it, listen to something else in the background, and hit Ctrl+R in your YT popup after a while to catch up with the live stream. Or mute it, and when you see that actual programming has restarted, unmute. For me it’s side monitor background programming rather than a front task, like having a TV next to my PC.
Alternatively you can play YT videos with desktop apps such as MPV or MPC-BE, in combination with youtube-dl or Livestreamer, and optionally SVPtube. Here’s an example below with MPC-BE + livestreamer launched from Cmder (via Launchy). In this case you can’t change the resolution on the fly, there’s no seekbar, and you need to keep the console open:
The one benefit of that setup is its significantly lower RAM consumption. Chrome’s task manager (Shift+Esc) shows memory use in the 350-400+MB range, while the Cmder+MPCE-BE+Livestreamer combo seems to require less than 80MB total. It feels too clunky for manual use, and the video chokes when I move to my side monitors. On the other hand global media keys do work, while I installed Streamkeys but still can’t play/pause YT in Chrome whether from my Microsoft or Logitech keyboards.
I could see why you’d want to use a command line/desktop player combo if you wanted to script what URLs to load sequentially and/or want to stream from other sources besides YT.
Yet another way to proceed would be to run Kodi with a live TV addon that includes Bloomberg (not hard to find), but my experience with Kodi was that it’s really resource hungry and is more of a fullscreen-centric experience.
Bonus 1: Keyboard Shortcuts
This wouldn’t be a complete Olivier blog post without a link to relevant keyboard shortcuts. Space to pause and > to speed up are so useful.
Bonus 2: Auto-mute music while playing YT
Install mute.fm, set up your favorite music player (Foobar2000, am I right?) as a background source, then music will fade out/in as you start/stop YT.
Bonus 3: Auto play/pause YT with a keyboard shortcut
Let’s tie all of this with Autohotkey. With one shortcut press (Win key + Y in this example) I auto focus and play/pause my Youtube popup, even it’s minimized, in sync with pause/play music as I just explained. Here’s the script, which could use some refactoring but it works and also switches to the Gmail tab with Win key + G.
I use this all the time because by default I work while listening to background music but I also watch tutorials and news frequently throughout the day.
#g::WinActivate( " - Gmail", "https://mail.google.com/mail/u/0/#inbox" ) #y:: WinActivate( " - YouTube", "https://www.youtube.com/feed/subscriptions" ) Send {Space} return WinActivate( TheWindowTitle, TheProgramTitle ) { if (TheWindowTitle = " - Gmail") { chrome := " - Google Chrome" } else if (TheWindowTitle = " - YouTube") { chrome := TheWindowTitle } found := "false" tabSearch := TheWindowTitle curWinNum := 0 SetTitleMatchMode, 2 WinGet, numOfChrome, Count, %chrome% ; Get the number of chrome windows WinActivateBottom, %chrome% ; Activate the least recent window WinWaitActive %chrome% ; Wait until the window is active ControlFocus, Chrome_RenderWidgetHostHWND1 ; Set the focus to tab control ??? ; Loop until all windows are tried, or until we find it while (curWinNum < numOfChrome and found = "false") { WinGetTitle, firstTabTitle, A ; The initial tab title title := firstTabTitle Loop { if(InStr(title, tabSearch)>0){ found := "true" break } Send {Ctrl down}{Tab}{Ctrl up} WinGetTitle, title, A ;get active window title if(title = firstTabTitle){ break } } WinActivateBottom, %chrome% curWinNum := curWinNum + 1 } ; If we did not find it, start it if(found = "false"){ WinActivateBottom, %chrome% curWinNum := curWinNum + 1 Run %TheProgramTitle% } return }
I also have Launchy set up to play/pause Foobar2k, using Runner with /playpause as the argument. Once you get started with keyboard shortcuts, it’s hard to stop!