Giter Site home page Giter Site logo

fugitech / google-meet-grid-view Goto Github PK

View Code? Open in Web Editor NEW
625.0 241.0 276.0 1.59 MB

Userscript to offer a grid-view layout in Google Meets

Home Page: https://greasyfork.org/en/scripts/397862-google-meet-grid-view

License: Other

JavaScript 97.51% Shell 0.41% CSS 1.60% HTML 0.47%

google-meet-grid-view's Introduction

This extension adds a button to the top right bar (next to chat & participant list) to enable grid-view in Google Meets. Grid view gives every participant an equal sized video for use in meetings without a primary speaker (such as working from home silent meetings).

This extension forcibly loads every participant's video when grid view is enabled and may cause performance issues in extremely large meetings.

Includes a variety of options to enhance your meeting: include your own video, highlight who is speaking, and hide participants without video!

Official Releases

Chrome Extension: https://chrome.google.com/webstore/detail/kklailfgofogmmdlhgmjgenehkjoioip

Firefox Add-on: https://addons.mozilla.org/en-US/firefox/addon/google-meet-gridview

Microsoft Edge Extension: https://microsoftedge.microsoft.com/addons/detail/ogbbehbkcmdciebilbkpjgopohnpfolj

Userscript: https://greasyfork.org/en/scripts/397862-google-meet-grid-view

  • Chrome and Firefox supported. Every update is tested on both Chrome and Firefox before release.
  • TamperMonkey, GreaseMonkey, and ViolentMonkey supported. All these extensions have been tested and verified working on Chrome & Firefox.
  • Chromium browsers may work. They are not explicitly tested, but probably work. Please file an issue with your browser & userscript extension if you encounter issues.
  • Safari does NOT work! Safari does not respect the Content-Security-Policy spec in regards to extensions, so Tampermonkey can not inject scripts into Google Meets (citation). There is nothing I can do about this, please do not try to use the script on Safari.

Privacy Policy

This extension does not track any user data.
There is no detailed privacy policy as there is nothing to explain.
Your data can not be stored, as it does not exist.
Your data can not be shared, as it does not exist.
Your data can not be sold, as it does not exist.

If this is insufficient please email [email protected] . Please note that I do not have a scanner and therefore can't sign physical documents.

License

Legal Version

Copyright Chris Gamble - All Rights Reserved

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Not Legal Version

The intent of this repository is to allow easy auditing of the source code for my user script and extensions. It has the secondary benefit of easily allowing users to file issues or submit translations.

You are allowed to:

  • download and use this code for personal use, preferably via the official releases above
  • use administrative features of extension stores to install the official releases above to your entire organization
    • For example, you may use GSuite Admin to install the Grid View Chrome Extension to your entire school
  • modify this code for personal use
  • submit modifications via Pull Request, accepting that you transfer copyright of your modification to Chris Gamble when you do so

You are not allowed to:

  • distribute this code or any modifications to this code in any manner
  • sell this code or any modifications to this code in any manner
  • sublicense this code or any modifications to this code in any manner
  • sue or otherwise hold liable Chris Gamble

If you are looking for a more permissive license please email [email protected]

google-meet-grid-view's People

Contributors

ad-m avatar emon-meet avatar fugitech avatar giampieromarrosu avatar hassaku avatar hugovk avatar jeanpimentel avatar leonardobodini avatar maxcanna avatar olivierperez avatar pencil avatar streger avatar technimad avatar thejinxters avatar yurikoval avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

google-meet-grid-view's Issues

Google Grid Help

Google grid is messed up. When I am conferencing with 22 students, it only shows 5 screens at a time. It was showing all of my screens Monday April 13.

[FEATURE REQUEST] Force 16:9

Thanks for the great extension 👏

Feature Request

The new Force 16:9 in Screen Capture Mode from v1.17 makes an overall improvement to the look and feel of a call.

Would it be possible to extract this part out in to a separate toggle in settings?

Multiple issues with Firefox

First of all, thanks for this really useful user script!!

I see some other issues floating around here which are similar, but they seem to be things that worked before but stopped working recently. Whereas I started using it on Firefox April 2nd and these features never worked from the beginning. I installed it through greasyfork, so it has been auto-updating ever since. I have the latest version 1.18 now.

  • Only show participants with video makes no difference. It seems to show participants whether or not they have video either way.
  • Include yourself in the grid makes no difference. It never includes yourself.
  • There seems to be a limit to how many participants are shown. Typically it's 8 for me. I'm not sure if this is intended or not, but my colleagues, most of which are using Chrome, don't have that problem and can see everyone. However, I found out that if I scale Firefox down in order to make the code think that my screen is bigger, I can see more participants. Right now I'm using a 1920x1200 screen at 1x scale. If there is a limit based on screen size, it would be nice to be able to configure it. It also seems odd that it's not like that on Chrome.

Any guidance would be appreciated. Thanks! Here are a few of the similar issues:

#59
#56
#54
#53
#41

Even though these are technically still open, they appear to have been fixed in the latest version, and they worked before. I'm wondering if maybe it was fixed in a way that works for Chrome but not Firefox?

Text Unicode broken

I'm using Firefox 75.0 (64-bit) on macOS Mojave v10.14.6

Screen Shot 2020-04-17 at 09 10 28
Brazilian Portuguese

Add option for sorting by surname

I'm a teacher and i'm using your plugin to see all students during my lessons.
Students screens appears sorted by name, because their account names have been created in the form "First name Surname", but I know mostly by surname and I search them in the screen by surname (and it is no so easy when students are more than 20).
I have created a javascript function

  function swapName(n){
    n = n.toUpperCase();
    var pos = n.indexOf(" ");
    if (pos>0){
      var n2 = n.substring(pos+1) + " " + n.substring(0, pos);
      //console.log('[google-meet-grid-view] Name:' + n2);
      return n2
    } else {
      //console.log('[google-meet-grid-view] Name:' + n);
      return n;
    }
  }

that changes strings ("Massimo Bambi" becomes "BAMBI MASSIMO")
and I have inserted this function in your sort command

ret.sort((a, b) => swapName(a[magicKey].name).localeCompare(swapName(b[magicKey].name)) || a[magicKey].id.localeCompare(b[magicKey].id))

This function searches only first space in string, so it is not working with multiple names,
but can you add this as an option?

Swedish translation

Is it OK to request a translation this way?

'sv-SE': {
  showOnlyVideo: 'Visa endast deltagare med video',
  highlightSpeaker: 'Markera/följ talare',
  includeOwnVideo: 'Inkludera dig själv i rutnätet',
},

Regards
Mattias Bystedt

Add speaker highlight delay

A delay could be added to VolumeDetectionProxyHandler so as to smooth speaker highlighting.

Currently, on breathing or pauses in conversation the speaker selection rapidly selects and deselects. This is a problem when speaking with nationalities with a slow speaking speed and can yield a distracting disco-like experience.

Grid Auto Resize and Yourself in Grid not working

Grid is only showing 6 individuals and yourself in the grid is not working. I changed the zoom of the entire page to 75% and the remaining two people appeared in the grid. You have to constantly adjust zoom depending on the number of participants.

Resize Presentation Square

When viewing everyone and a screen presentation, it would be nice to be able to resize the presentation screen in case it's too small (even though it's larger than other grid by default).

'highlight speakers' stopped working

This project is amazing! Thank for bringing this to life.

'highlight speakers' stop working

tried reverting back to older versions seems something change on the back end?

Can you confirm @Fugiman ?

"Only Show Participants with Video" Not Updating Properly

Noticed when "Only Show Participants with Video" is checked, and new person joins the Meet or person turns on their camera, the person doesn't show up on the grid unless I move my mouse. When user leaves the meeting or turns off their camera, they are removed from the grid correctly.

In my testing, I went into the same Meet as the same person on 5 different devices. Maybe that could trigger the issue.

When "Only Show Participants with Video" is not checked, then everything works correctly. New person joins the Meet, they automatically get added to the grid.

Add a license

There's no license in place for this and many institutions would benefit from having an open source license to use this.

Make it play nicer with screen sharing

Hey there are some issues with this script and the share screen feature. First of all the shared screen doesn't enlarge (that makes sense). Then when I try to deactivate the layout, it doesn't work. I had to toggle off the extension to make it work.

How to reproduce the bug:

  1. Enter in call with grid view
  2. Someone starts sharing screen
  3. Sharing sreen is small because of grid view
  4. Try to disable grid view layout
  5. It's bugged

[FEATURE REQUEST] Grid ordering

Thank you for this amazing extension! Could be worth to add an ordering option, so that when new participants adds, the grid does not re-order by incoming users, while keep the grid ordered by name. In this way the position of each person will not change during the call :)

[UPDATE]
I can see that there is a sort in the code here

// sort by participant name, or video id if the name is the same (when someone is presenting)
    ret.sort((a, b) => a[magicKey].name.localeCompare(b[magicKey].name) || a[magicKey].id.localeCompare(b[magicKey].id))

Not sure why when new participants are added a re-sort happens and they change positions. Maybe another option could be not only sorting by name, but in a FIFO ordering, so that each participant will just "keep" the initial position.

Adjust grid when group chat bar is open

First of all. Thank you for this life saver.

Suggestion: add an option to move the grid over when you open the group chat side bar, so that it can be visible and usable at the same time as the grid, instead of partially covering the grid.

Swedish = "se"

Swedish should be "se", instead of "sv".

Regards
Mattias

My Chromebook screen is flickering badly when others present during Google Meet.

I had a different version of Grid View before the update on 4/15. Now my screen is flickering badly during any presentations that other people do during a Google Meet with multiple people. I used to be OK with the older version I used last week with my students, but this Wednesday that did not work anymore. I could only see 4 people on the screen, without being able to see myself or highlight the speaker. Now I can see everyone on the screen, including myself, but I have the issues with the screen flickering badly during presentations. Please fix this or help me fix it. During the school closures it is very important to be able to connect with our students, communicate with them, teach and keep them engaged. Thank you very much.

Missing license

Under what conditions may we use this script? For example, can we include it in a private chrome extension used internally within a company?

You stated elsewhere that it is "open source", which the OSI defines as requiring "Free Redistribution". However, you also stated that you do not want to us a license which allows for redistribution (which clearly runs counter to it being open source).

If you don't want redistribution that's fine, but what about distribution? This whole thing will be a lot easier if you can add a license file explaining how you wish to allow people to use this code, even if it's just one or two sentences you write yourself (although any existing/standard license would be preferred).

Feature request: Hide the 'Pin/Mute' widget that appears in the center of each video

It can be visually distracting to have that pop up over each video as you use your mouse, and in my opinion, it's not necessary when the point of the plugin is to have everyone onscreen at the same time. Great work, by the way. I've looked at the obfuscated javascript files, it's amazing you were able to comprehend what was going on..

Grid view only displaying 6 people

My school uses google meet for video conferencing with each of our classes and as a team. We have been using grid view to helpaid in watching the students while teaching . This morning, none of us could get it to show more than 6 people at a time.

grid view not showing all participants

A few days ago all 20 participants showed up in the grid, but now only 5 are showing....We really want it back so that all participants will show up in our Google Meets. Help!!!????

Authorized Firefox extension

I installed this through the link in the readme to the Firefox addons, and it works great on Firefox 75. However, it also shows a warning under the grid button saying this is not an authorized extension and directs me to the Firefox addon page where I installed it from. Probably needs some connection to Mozilla to tell them this is kosher?

Safari Support

I installed it with Tampermonkey on Safari but couldn't get it to show up the button.

Is there a way I can help with debugging this?

Safari Version 13.1 (15609.1.20.111.8)
MacOS Catalin 10.15.4

Tweaks to your code to record `attendance`

Chris - I'm a High School math and computer teacher in Ottawa Canada. Like many other schools/school boards, we're starting to use Google Meet for online classes and stumbled across your excellent script.

Based upon feedback from a couple of teachers at our school, I've modified your script so that it will provide a list of students who did not join and did not join the call.

Summary of the changes

  • added a textarea into which you can enter the list of expected attendees...
    unfortunately, the list of names must be typed or pasted into the field
  • as the code updates the grid layout, the names of the attendees are compared with the invitees and the textarea is updated to reflect that the person joined.
  • if an uninvited person appears in the grid, they are added to the list of attendees but flagged as not invited.

As long as the student appears in the call (ever so briefly), they will be marked as having joined. I do not record time of entry or exit (and at this point have no plans to add that).

I thought I'd check in with you before presumptuously adding it to the mix here. Thoughts?

People are not allowed into the google meet room

Today there was a Google meeting session with a group. Some of the children were not in a google meet session. She clicked on the link and the organizer was not asked to let them in. Even after closing the browser session and doing it again.
What could this be? Everything worked fine with the same group last week

Stopped working some time mid-day 2020-04-08

Some time today (2020-04-08, US Eastern time), the extension version of this userscript stopped working.

Reposting from stgeorgesepiscopal/google-meet-grid-view-extension#13 where I was suggested to post here, since that extension just wraps a copy of this user script via a git submodule


I think something must have changed on the google meet site, as this extension was working earlier today, but now it's not working at all -- it doesn't add its button to the meet UI, and clicking the grid toggle in the extension itself doesn't do anything any more.

There's an error in my dev console that I think is coming from this extension:

Error in event handler: TypeError: Cannot read property 'click' of undefined
    at chrome-extension://bjkegbgpfgpikgkfidhcihhiflbjgfic/js/inject.js:41:64

Which corresponds to ... code I can't find in this repo?

// ...
injectScript(chrome.runtime.getURL('js/google-meet-grid-view/grid.user.js'));

//injectScript(chrome.runtime.getURL('js/messaging.js'));
chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        
        let gridOn = !!document.getElementsByClassName('__gmgv-vid-container').length
        let showOnlyVideo = JSON.parse(localStorage.getItem('gmgv-show-only-video'))
        let highlightSpeaker = JSON.parse(localStorage.getItem('gmgv-highlight-speaker'))
        let includeOwnVideo = JSON.parse(localStorage.getItem('gmgv-include-own-video'))
        console.log(localStorage)

        if(request.hasOwnProperty('startup')){
            console.log('init')
        } else if(request.hasOwnProperty('toggleGrid')){
            document.getElementsByClassName('__gmgv-button')[0].click()
            // ^^^ this line ^^^
// ...

I have version 2020.4.7 installed currently.


2020.4.7 of that extension I believe maps to commit bef6bff here. That's not the latest, but the commit log from that to current HEAD of master doesn't look like it has any functional changes, only translation changes.

Show the version number

Is your feature request related to a problem? Please describe.
Sometimes when checking the repo or reporting bugs I would like to quickly understand the version I am running

Describe the solution you'd like
Display it somehow in the extension

Describe alternatives you've considered
None

Additional context
None

State of `Include yourself...` checkbox gets reversed occasionally

I've only noticed this a couple of times...

In a nutshell, when the Include yourself... checkbox was cleared, the video of me appeared in the grid and when I clicked the checkbox again (so that it was now selected), I disappeared... i.e., the opposite of the expected behaviour. The problem went away after I reloaded the page (perhaps with a +F5). But I did see it at least once more.

When I have more time, I will try to figure out the steps to replicate.

Typo in italian translation

it: { showOnlyVideo: 'Mostra solo partecipanti con video', highlightSpeaker: 'Illumina chi ha la paola', includeOwnVideo: 'Includi te stesso nella griglia', },

It's "parola" not "paola"
I hope this was the correct way to report an error.
Best regards,
Stella Daniele

Breaks new meet functionality

On G-Suite education domains google has implemented new features:
No other participants can silence or kick out the "owner"/"creator" of the meet
This new functionality is broken when "grid view" is active/installed.

Regards
Mattias Bystedt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.