FullScreen Meeting

Makes pinned video to use maximum window space

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         FullScreen Meeting
// @namespace    fullscreen.meet.google.aurium.one
// @version      2.0
// @description  Makes pinned video to use maximum window space
// @author       Aurélio A. Heckert
// @match        https://meet.google.com/*
// @grant        none
// ==/UserScript==

'use strict';

console.log('Starting FullScreen Meeting Userscript. ✨')

// Build functions with rich error log
function catchable(name, fn) {
  catchable.counter++
  fn.displayName = name || 'catchable-' + catchable.counter
  return (...args)=> {
    try {
      return fn(...args)
    } catch(err) {
      if (!err.cascaded) console.error(err)
      const prefix = err.cascaded ? '‼️' : '🔸'
      if (args.length === 0) console.error(`${fn.displayName} Fail with no params.`)
      else console.error(`${fn.displayName} Fail with params:`, ...args)
      Object.assign(err, {cascaded: true})
      throw(err)
    }
  }
}
catchable.counter = 0


setInterval(catchable('enablePicInPic', ()=> {
  document.querySelectorAll('[data-participant-id]').forEach(parent => {
    parent.classList.add('video-box')
    //parent.lastChild.classList.add('video-overlay')
    parent.childNodes.forEach(c => {
      if (c.getAttribute('jsaction').match(/^mousedown:/)) {
        c.classList.add('video-overlay')
      }
    })
  })
}), 1000)

document.body.id = 'gotcha'

const style = document.createElement('style')
document.head.appendChild(style)
style.innerHTML = `
  #gotcha .video-box video {
    pointer-events: all;
  }
  #gotcha .video-overlay {
    width: 50%;
    background: radial-gradient(rgba(0,150,255,.2), transparent 33%);
    opacity: 0;
    transition: opacity 1s;
  }
  #gotcha .video-box:hover .video-overlay {
    opacity: 1;
  }
`