ungoogled-software / ungoogled-chromium

Google Chromium, sans integration with Google
BSD 3-Clause "New" or "Revised" License
20.39k stars 830 forks source link

Google Meet: "Your browser can't share your screen" #601

Closed renatolond closed 5 years ago

renatolond commented 5 years ago

Describe the bug When using Google Meet, if I try to share my screen I get an error from google meet saying "Your browser can't share your screen".

To Reproduce Steps to reproduce the behavior:

  1. Go to 'Google Meet'
  2. Start a new meeting
  3. Click on "Share my screen", "Share entire screen"

Expected behavior I expected my screen to be shared, as it is in Chromium.

Environment (please complete the following information):

Additional context It seems brave used to have an issue sharing the screen with hangouts, here: https://github.com/brave/browser-laptop/issues/3392 I don't know if they can be related.

ghost commented 5 years ago

If it depends on hangouts, then I guess that's the expected behavior. enable_hangout_services_extension is disabled here.

Atavic commented 5 years ago

Issues like this make even sense? This is ungoogled-chromium and you want to use it with Google Meet? Use Google Chrome instead!

Eloston commented 5 years ago

Based on this article, it looks like Google Meet is just redesigned Hangouts. In that case, what @ian-moone should be correct. I don't want to change the GN flag or add extra code (e.g. patches for a flag or something) since it clearly goes against the spirit of this project. I will at most allow instructions in the Wiki to get this working (if anyone is inclined to write them in the first place).

If this is not due to the Hangouts extension, please let us know.

renatolond commented 5 years ago

Thanks for the response! I was not sure if there was any google component involved, but it does make sense that they would be using their own stuff. I will check what would be needed and if I find it I will document it on the wiki :)

@Atavic having to use google meet for work does not make me want to give google control over every other website I access, hence the issue.

Atavic commented 5 years ago

Ok, now understand your position. Corporations like MS, Apple, Google and Amazon are improving the grip on their customers every minute. My only idea (for an issue that I met myself) is to install more browsers or use more profiles for specific needs. Even Virtual Machines can be useful.

csalvato commented 5 years ago

Why can't we, as users, decide whether or not to enable this extension? Why is this marked as wontfix?

Atavic commented 5 years ago

Because it is disabled with this option when chromium is built from source.

Eloston commented 5 years ago

@csalvato I don't understand how supporting this "extension" (it's actually code built-in to the browser) will contribute to the goals of this project. Also, if you need the extension, changing the flag that @Atavic mentioned and re-building the browser will fix the issue. Could you explain your use-case in more depth? Why would you need a Google-specific component in a browser designed to remove Google integration?

csalvato commented 5 years ago

@Eloston I am not super intimate with the goals of the project, but I would image that one of the goals is to actually have the browser get adopted. If that's the case, then this extension being excluded creates a massive barrier for many people who rely on screen sharing with Google Meet.

Google Meet is one of the most popular and pervasive video meeting and screen sharing tools for remote teams. Every team I've been on since 2010 has used Google Hangouts or Google Meet daily.

If I need to load up Chrome to run my work meetings, then switch to Brave for everything else, that's a level of complexity that is too much for me, personally. And if the goal is mass adoption, not supporting Google Meet screensharing will be in the way for many more people who don't want to deal with a wonky, persnickety browser.

I can use Google Meet screen sharing on Chrome and Firefox. But I can't use it on Brave. If one of the goals of the project is to not support an integral remote-working use case because of an arbitrary ungoogled-chromium setup file, I guess Brave isn't for me. 😢

csalvato commented 5 years ago

Re: rebuilding the browser: I wouldn't even know how to rebuild the browser from source just to get Google Meet working. If that's the solution to the problem, I think you'll find a barrier to getting more people to use Brave.

antonin-lebrard commented 5 years ago

@csalvato You mention Brave each time, but this github project has nothing to do with Brave. It uses some patches developped by the brave team, but the relations between them stop here.

And this github project has no "team" working on it, only effort from people (mostly @Eloston and kudos for him !) on their free time with no money tied to it. So I think its presumptuous to demand ease of use, and covering all usages such an effort. Without even talking about going exactly against the primary goal of this project, removing all google related services from chromium.

csalvato commented 5 years ago

@antonin-lebrard Oh wow! My mistake. I was linked here from another issue on the Brave project. How embarrassing :)

csalvato commented 5 years ago

In that context, that makes total sense.

Eloston commented 5 years ago

@csalvato First, I would like to note that we are not affiliated with Brave. It just so happens that both projects share similar intentions and goals.

Anyway, while I would like to have this project grow, it is secondary to the main objective of this project: to remove integration with Google services. Based on that fact alone, supporting a feature which only benefits the usage of Google services is contradictory. However, I understand that there are a variety of valid use cases that does not exclude Google completely, so I generally don't outright reject suggestions like these. There is no clear line to draw here.

After investigating the code for the Hangout service extension, I will retract my earlier statement about rejecting this completely. I think it is possible to have a flag that can enable this extension to be loaded, but not bundle the code in the browser. However, I do not have any interest in working on this, nor do I suspect many others here will given my experience thus far.

DashDashDashDashDash commented 4 years ago

Is there any simpler way of allowing this than changing the flag in flags.gn and rebuilding the browser? I believe having the flexibility to change this extension is something handy to have. Surely not something important, but in my case, using ungoogled chromium with the hangouts extension is significantly better than having to use regular google chrome with all of its problems. I do like the idea of some documentation on it, since clarity on this issue is a big obstacle, as I've seen.

dndrsn commented 4 years ago

I just tried a build with enable_hangout_services_extension=true set in flags.gn and unfortunately it didn't work for me to enable screen sharing in Hangouts. The behavior is unchanged. Has anyone been able to get this working?

PF4Public commented 4 years ago

@dndrsn see the mentioned issue (PF4Public/gentoo-overlay#42), no solution so far.

resoli commented 3 years ago

I just tried a build with enable_hangout_services_extension=true set in flags.gn and unfortunately it didn't work for me to enable screen sharing in Hangouts. The behavior is unchanged. Has anyone been able to get this working?

Same here. We would like to adopt ungoogled in our organization, but the inability to do screen sharing in G. Meet is a showstopper. If someone has some advice, it would be nice. Rebuilding from source is not a problem.

ghost commented 3 years ago

I also need Google Meet screen sharing, it's work related. It doesn't work in Chromium 88.0.4324.182

PF4Public commented 3 years ago

It doesn't work in Chromium 88.0.4324.182

With which flags do you compile it and "Meet" does not work? Like I've mentioned in the related bug, I've been told, that hangouts do function (at least if built for Gentoo from my overlay).

ghost commented 3 years ago

By "Meet" I was talking about meet.google.com as this feature is now free and everybody is using it instead of the old Hangouts. I am not able the share the screen but conferencing works. I have not compiled it myself, I used the binaries from chromium.woolyss.com for MacOS. I will try building it myself even if I am not an expert but I did this kind of thing before. I am a bit confused on which flags do I need to switch on to make it work.

PF4Public commented 3 years ago

which flags do I need to switch on to make it work

You should probably start with enable_hangout_services_extension=true

aspieln3r commented 3 years ago

Google meet works in firefox so it should be possible to bring this to ungoogled chromium also somehow without using google code?

ghost commented 3 years ago

@aspieln3r you need to recompile it yourself with enable_hangout_services_extension=true I have not tested with Eloston version, I have tested with the official Chromium (the official Chromium is also not officially supporting Hangouts/Meet) and this is solving the problem. Maybe somebody needs to create a fork because the goal of this project is to "ungoogle" everything and somehow this contradicts its purpose.

resoli commented 3 years ago

@aspieln3r you need to recompile it yourself with enable_hangout_services_extension=true

I have built uc with that flag, and doesn't make any difference.

resoli commented 3 years ago

Maybe somebody needs to create a fork because the goal of this project is to "ungoogle" everything and somehow this contradicts its purpose.

I agree, (unfortunately, uc is wonderful) we are out of scope here.

PF4Public commented 3 years ago

doesn't make any difference

You may try other flags, for example enable_remoting and/or enable_media_remoting

resoli commented 3 years ago

You may try other flags, for example enable_remoting and/or enable_media_remoting

Will do and report. Thanks!

ghost commented 3 years ago

For the official Chromium I used:

vi out/Default/args.gn is_debug = false symbol_level = 0 ffmpeg_branding = "Chrome" proprietary_codecs = true enable_hangout_services_extension = true

Maybe this helps.

resoli commented 3 years ago

@Altitude-Dashboard many thanks!!!

resoli commented 3 years ago

For the official Chromium I used:

vi out/Default/args.gn is_debug = false symbol_level = 0 ffmpeg_branding = "Chrome" proprietary_codecs = true enable_hangout_services_extension = true

Maybe this helps.

I'm trying latest ubuntu-focal flavour of ungoogled-chromium-debian:

ninja -j4 -C out/Release chrome chrome_sandbox content_shell chromedriver
ninja: Entering directory `out/Release'
[9478/44037] CXX obj/base/i18n/icu_util.o
FAILED: obj/base/i18n/icu_util.o
clang++-11 -MMD -MF obj/base/i18n/icu_util.o.d -DBASE_I18N_IMPLEMENTATION -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_GNU_SOURCE -DCR_CLANG_REVISION=\"llvmorg-12-init-11462-g418f18c6-1\" -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_40 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DUSING_SYSTEM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -DUCHAR_TYPE=uint16_t -DU_IMPORT=U_EXPORT -I../.. -Igen -Igen/shim_headers/icui18n_shim -Igen/shim_headers/icuuc_shim -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -Igen/shim_headers/zlib_shim -Igen/shim_headers/libevent_shim -I../../third_party/ced/src -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -I../../third_party/protobuf/src -Igen/protoc_out -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -m64 -march=x86-64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -Xclang -fdebug-compilation-dir -Xclang . -no-canonical-prefixes -Wall -Wextra -Wimplicit-fallthrough -Wunreachable-code -Wthread-safety -Wextra-semi -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-unneeded-internal-declaration -Wno-undefined-var-template -Wno-psabi -Wno-ignored-pragma-optimize -Wno-implicit-int-float-conversion -Wno-final-dtor-non-final-class -Wno-builtin-assume-aligned-alignment -Wno-deprecated-copy -Wno-non-c-typedef-for-linkage -Wmax-tokens -fno-omit-frame-pointer -g0 -ftrivial-auto-var-init=pattern -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wexit-time-destructors -fno-ident -fdata-sections -ffunction-sections -Wno-shorten-64-to-32 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -std=c++14 -fno-trigraphs -Wno-trigraphs -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -resource-dir=/usr/lib/llvm-11/lib/clang/11.0.0 -resource-dir=/usr/lib/llvm-11/lib/clang/11.0.0 -O2 -fdebug-prefix-map=/home/resolir/git/ungoogled-chromium/build/src=. -fstack-protector-strong -Wformat -Werror=format-security -Wno-conversion -Wno-unused-function -Wno-unused-variable -Wno-unused-private-field -Wno-deprecated-declarations -Wno-unreachable-code -Wno-unknown-pragmas -fno-delete-null-pointer-checks -c ../../base/i18n/icu_util.cc -o obj/base/i18n/icu_util.o
../../base/i18n/icu_util.cc:379:10: error: use of undeclared identifier 'UTRACE_UBRK_CREATE_CHARACTER'
    case UTRACE_UBRK_CREATE_CHARACTER:
         ^
../../base/i18n/icu_util.cc:383:10: error: use of undeclared identifier 'UTRACE_UBRK_CREATE_SENTENCE'
    case UTRACE_UBRK_CREATE_SENTENCE:
         ^
../../base/i18n/icu_util.cc:387:10: error: use of undeclared identifier 'UTRACE_UBRK_CREATE_TITLE'
    case UTRACE_UBRK_CREATE_TITLE:
         ^
../../base/i18n/icu_util.cc:391:10: error: use of undeclared identifier 'UTRACE_UBRK_CREATE_WORD'
    case UTRACE_UBRK_CREATE_WORD:
         ^
../../base/i18n/icu_util.cc:425:10: error: use of undeclared identifier 'UTRACE_UBRK_CREATE_LINE'
    case UTRACE_UBRK_CREATE_LINE: {
         ^
../../base/i18n/icu_util.cc:451:10: error: use of undeclared identifier 'UTRACE_UBRK_CREATE_BREAK_ENGINE'
    case UTRACE_UBRK_CREATE_BREAK_ENGINE: {
         ^
6 errors generated.
deadlysyn commented 3 years ago

love uc and trying hard to figure out how to keep it around since "the day job" requires meet/hangouts (at least it's not webex or zoom).

since this project has a lot of other things disabled out of the box that can be enabled with a flag, i don't think having one more flag to control a setting some users need that is off by default violates project goals. i can see how it would if it was suddenly included by default...but at least having documentation on how to enable this in a way that's proven to work seems reasonable.

came here hoping i "just" need to recompile (that's more fun in winter as an extra space heater since it pegs all my cores for quite awhile ;-) ) but it looks like that doesn't work.

don't want chrome around just for this (or anything), may have to install vivaldi just for hangouts while waiting for a better solution. (vivaldi is great in many ways, i'm just ocd enough multiple browsers bother me.)

ghost commented 3 years ago

Currently getting this https://pastebin.com/E6Yatia0 while trying to build ungoogled-chromium-debian. Anyone has a clue on how to fix this?

Agustyn98 commented 2 years ago

I'm having the same issue, Arch Linux, ungoogled chromium 94.0, I can't screen share which is a deal breaker for me

benyaminl commented 2 years ago

Just use firefox already, out of the box work as it intended and free from google hands..

pdfrod commented 1 year ago

I would like to keep using ungoogled-chromium but I still need some way of using Google Meet, because that's what is used at work. I'm forced to go back to Google Chrome, which is also contrary to the spirit of this project, in my opinion.

Would you be willing to accept a pull request giving users the option to easily enable Google Meet?

PF4Public commented 1 year ago

Would you be willing to accept a pull request giving users the option to easily enable Google Meet?

Have you found a definite solution to this issue?

pdfrod commented 1 year ago

No. I wanted to get the mainteners' blessing before spending a lot of of time working on a pull request that might get rejected.

PF4Public commented 1 year ago

before spending a lot of of time working on a pull request

Your best bet would be to first identify the issue itself, then consider what kind of changes are needed to fix it and only then someone could asses your proposal w.r.t. mergeability into ungoogled-chromium or contrib.

pdfrod commented 1 year ago

Yeah, but the issue was closed with the justification that fixing it would be against the goals of the project, so I'm not even sure if there's interest in fixing it.

PF4Public commented 1 year ago

That might've been a disappointing resolution, but please consider the following:

This feature obviously falls out of the scope of the project and might even spoil all the efforts thus far attained. This feature is thus very unlikely to be used by any maintainer of ungoogled-chromium, which in turn suggests that it is unlikely that any maintainer of ungoogled-chromium would even consider investigating the possibilities. I mean I wouldn't be willing to debug something I do not use, right? That being said, I can find a number of very similar (in this regard) issues on the bug-tracker which are left in mid-air due to the same reasons.

The reason for this suspended state is that no one took the lead and investigated the real cause of why some features cease functioning after ungoogled-chromium patches are applied. If this would have been done, it would be easy to decide which category this fix belongs to: a) conditional branching in runtime without any other changes; b) build time fixes which involve non-default gn flags, selective patch application / domain substituitions etc. Run-time flag would be probably a merge-able solution, but a build time solution should be applied manually upon build time. We cannot possibly build a ton of varieties for obvious reasons, which means those build-time solutions are worthy to be included in wiki or in contrib to empower users with similar requirements to build their variation for their specific use-case. Why would anyone be against that? So if one is after a solution, there is always one.

In other words: if one aims to force some unrelated (contradictory even) feature into the repository so that it would be further propagated into the resulting binaries, sorry, no way. On the other hand if one is up for a solution, which one would use and share this solution for others in need — that's a big yes!

pdfrod commented 1 year ago

Thanks for the detailed explanation. I'll do some digging and report back when I have some news.

whitequark commented 1 year ago

You can make screen sharing work in Google Meet on any Chromium if you go to DevTools and change your User-Agent string to Microsoft Edge (Chromium) in the drop-down box.

jaimet commented 1 year ago

You can make screen sharing work in Google Meet on any Chromium if you go to DevTools and change your User-Agent string to Microsoft Edge (Chromium) in the drop-down box.

When I first read this, I did not believe you because I have been bashing my head against this problem since the beginning of the pandemic. I have just tried it out myself, and you are correct. I cannot thank you enough for writing this comment.

In case it helps anyone else, I did my experiments using the debian "official" chromium package (v114.0.5735.198-1~deb12u1) on a debian bookworm box (yes, I do realise that this is not ungoogled-chromium, but I wanted to start my testing with an environment that is easy to reproduce.)

Using the "default" user agent string[^1], clicking on the "Present now" button results in a Your browser can't share your screen error message.

If I then go into Developer tools / Network conditions, change my user agent (string) to Microsoft Edge (Chromium) — Windows^2, and then start a new meeting in the current tab, clicking on the "Present now" button instead results in 3 options being presented: Your entire screen, A window or A tab (Best for video and animation). I have successfully tested the last option - the audio from the shared tab is sent to the meeting clients.

I can now share video with audio to my foreign language students using chromium. We are all very grateful to you for this.

[^1]:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36

whitequark commented 1 year ago

It's beyond absolutely ridiculous, isn't it?

valpackett commented 1 year ago

Reminds me of how the Twitch player would just not work with a FreeBSD user agent and changing to Linux/Windows would help. They did fix it though eventually.

tedparagon commented 1 year ago

FWIW Brave suffers from the same issue but addresses it with an extension to opt-in to supporting Hangouts (and screen sharing).

image
jaimet commented 1 year ago

As some of the comments on this issue suggest using firefox[^1][^2][^3], I thought I'd try it out. Apologies to anyone who considers this to be "noise" - it's just that this bug report now seems to be the Internet's central repository for information about Google Meet screen sharing/"Present now" on non-chrome browsers.

tl;dr: You cannot currently share video with audio on meet.google.com using firefox, and I hope that this comment saves other people from wasting a day trying to get it to work.

Still reading? I installed firefox nightly v117 and then tried screen sharing/"Present now" using the default user agent string[^4]. This only offered the choice of sharing "Your entire screen" or "A window" i.e. there was no option to share video with audio.

I then modified firefox's user agent string to be every one of the 47 different user agent strings in chromium's drop-down list of custom user agent strings[^5]. While changing the user agent string did result in different behaviours[^6], it did not result in anything better than using firefox's default user agent string.

[^1]: "I can use Google Meet screen sharing on Chrome and Firefox." [^2]: "Google meet works in firefox" [^3]: "Just use firefox already, out of the box work as it intended" [^4]: firefox nightly v117's default user agent string is Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/117.0 [^5]: The list of the 47 different user agent strings is in this typescript file. [^6]: Some user agent strings result in just a blank black screen when you try to start a meeting.

Hannsek commented 8 months ago

I bumped into this issue as well on mac. However, I have a problem with only sharing entire screen. It prompts me to grant access to chromium in system settings. Even though the permission is granted it doesn't work.

image image
whitequark commented 8 months ago

You can make screen sharing work in Google Meet on any Chromium if you go to DevTools and change your User-Agent string to Microsoft Edge (Chromium) in the drop-down box.

Looks like they fixed this upstream as I no longer have to change User-Agent.