NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Twitch Safari PiP - Add Picture in Picture Button
// @namespace janisprefect
// @version 0.1
// @description Adds a button to the twitch player that enables Safari's picture in picture mode. It looks a bit odd, but it works
// @author janisprefect
// @match https://www.twitch.tv/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
window.addEventListener('load',function() {
var menu = document.querySelector('.player-buttons-right');
var video = document.querySelector('.player-video video');
// create pip button
var button = document.createElement('button');
button.classList.add('player-button','jvs-pip-button', 'pl-button__fullscreen--tooltip-left');
var buttonInner = document.createElement('span');
button.appendChild(buttonInner);
var tooltip = document.createElement('span');
tooltip.classList.add('player-tip');
tooltip.setAttribute('data-tip','Picture in Picture');
var icon = document.getElementById('icon_fullscreen').cloneNode(true);
var iconContainer = document.createElement('span');
iconContainer.appendChild(icon);
buttonInner.appendChild(tooltip);
buttonInner.appendChild(iconContainer);
// add pip button to the menu
if (menu) {
console.log('adding pip button');
menu.appendChild(button);
// remove the right margin from the fullscreen button and add it to the pip button
var fullscreenButton = document.querySelector('.qa-fullscreen-button');
if (fullscreenButton) {
fullscreenButton.classList.remove('pl-mg-r-1');
button.classList.add('pl-mg-r-1');
}
// set click event to activate pip
button.addEventListener('click',function() {
console.log('switchting to pip mode');
if (video) {
video.webkitSetPresentationMode('picture-in-picture');
}
else {
console.error("Can't switch to pip, video not found");
}
});
}
else {
console.error("Could not add PiP Button, menu not found");
}
});
})();