LINUX.ORG.RU

Таури и линукс

 , tauri,


0

3

Если есть знатоки таури, скажите мне про вот такую ересь:

[Error] MediaManager connection failed: – UnsupportedError: device not supported
UnsupportedError: device not supported
	(anonymous function) (logger.js:55)
	connect (MediaManager.js:23)
	connect (MediaManager.js:7)
	joinRoom (VoiceChatClient.js:1458)

[Error] Error: Media connection failed: device not supported — MediaManager.js:24
	(anonymous function) (logger.js:55)
	(anonymous function) (RoomManager.js:468)
Ошибка UnsupportedError: device not supported означает, что браузерный движок (WebView2 на Windows, WebKitGTK на Linux) не разрешает iframe с внешним источником использовать getUserMedia, даже если в CSP прописано media-src mediastream:. Это связано с политикой безопасности: внешний iframe должен иметь атрибут allow="microphone", а также родительское окно должно запросить разрешение и явно разрешить его дочернему фрейму.

И второе:

Проблема в том, что tauri-plugin-media версии 0.1.1 не компилируется на вашей системе из-за несовместимости зависимостей (особенно dbus). Это известная проблема, и плагин пока нестабилен. Вместо борьбы с ним проще использовать отдельное окно Tauri для войс-чата

Что из этого правда и можно ли как то всетаки показать нормально микрофон WebKitGTK? Хоть как то.

Учитываем, что собранный под винду абсолютно тот же проект работает без вые проблем. Что не так с линуксом? Или это не так с таури?

★★★★★

Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Проблема в WebKitGTK, видимо:

https://github.com/tauri-apps/tauri/issues/8851

Если нужно чтоб работало под линуксом, проще использовать вайн или вообще переписать всё это дело, не используя при этом веб.

Хм, можно попробовать использовать CEF вместо WebKitGTK:

https://github.com/tauri-apps/tauri/issues/14963#issuecomment-3915922947

kneedeep
()
Последнее исправление: kneedeep (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Ещё как вариант можно просто захостить и пользоваться в обычном браузере, который у всех почти всегда и так открыт. Будет несколько экономнее электрона.

kneedeep
()
Ответ на: комментарий от LightDiver

Да что ж за зверь то такой неведомый это таури?

У меня лично только с тауренами самзнаешьоткуда ассоциируется. :)

Этот? Если да, то зачем понадобился? Какой-то специфичный проект, собранный на этом фреймворке, надо запустить?

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от kneedeep

Слушай, я сейчас сделал так же в электроне и поимел ту же самую ошибку. Тут походу с контейнером что то не так глобально для линуксов. Возможно стоит его сменить.

Uncaught ReferenceError: process is not defined
    at toggleView (renderer.js:152:27)
    at HTMLButtonElement.<anonymous> (renderer.js:36:9)

А не, кажется показалось, другая. Но покопат всеравно надо.

Трэшатина блин какая, все поехали на почве мнимой безопасности до такой степени, что мешают сделать хоть что то полезное, а в итоге эта херня никого не защищает. Руки ломать за такое надо.

А, ну да, вот и та же самая:

Не удалось присоединиться к комнате: Media connection failed: device not supported

Похоже разрабы активно не хотят чтобы на линуксе хоть что то работало.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 5)
Ответ на: комментарий от firkax

Ты дурак? Ну вот ты сейчас серьезно? Блин, даже слов особо кроме матерных нету. Ну давай, предложи альтернативу. Я слушаю. Предложи другую более правильную штуку.

Да что ж вы такое несете то. Как можно не знать что такое таури?! Как можно не знать - что такое электрон? Вы айтишники или куда? Ладно я фермер.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Ну как видно никто не знает кроме тебя, и, заметь, по этому тегу ни одной темы не было, твоя первая. Но дело не в этом вообще.

Ну давай, предложи альтернативу

Сменить язык?

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну я в шоке если честно. Узкая специализация делает с вашим кругозором беду. Но я теперь лучше понимаю твое негативное отношение ко всему новому. Лучше понимаю причины.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от firkax

Нет, это как раз онтоп. Это симбиоз раста и js на самом деле изначально. Ибо по своему удобно и то и то. На раст модуль захвата клавиатуры, интерфейс основного окна и половины софтины в целом для линукса. На js войс-чат и логика работы менеджера аддонов..

https://github.com/Vladgobelen/NSQCuE/

https://github.com/Vladgobelen/NSQCuT

Однако электрон я смог скрестить со всем этим, а вот таури ввели какие то лютые правила безопасности, несовместимые с работой на линуксе, что печально. Причем на данный момент, скорее всего, неразрешимые.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

с контейнером что то не так

мнимой безопасности

В разработке контейнеры не для этого используют же. Да и если оно так мешает, почему бы не работать без этого добра? Но если сильно надо, пробрось все нужные сокеты, /dev и прочее, чего не хватает.

kneedeep
()
Ответ на: комментарий от kneedeep

Я имел в виду контейнер для веба… .webview-container

В электроне используется хромиумный, а в таури нативный какой то, у которого правила безопасност запрещают работу в линуксе.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от anonymous

Потому что микрофон нужен не приложение собственно, а веб-клиенту внутри приложения. Вебклиент внутри контейнера .webview-container.

Но в линуксе ты должен подтвердиь физически включение микрофона. А в таури ты этого в линуксе сделать не можешь. Потому что единственный модуль-подтверждатор конфликтует с dbus.

В винде такого требования, к слову, нету.. Там вебгтк, чтоли. Надо перепроверить.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от kneedeep

Да везде он работает. Я уже электроновское допилил и все работает, да.

Но ты понимаешь в чем дело - электроновский клиент это 100 мегабайт только чистого веса и 500мб озу в работе. Запуск на слабых машинах олтооры минуты. А таури это 17мб максимально. и 30-100мб озу. Есть разница. И запуск 3 секунды.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

Потому что микрофон нужен не приложение собственно, а веб-клиенту внутри приложения. Вебклиент внутри контейнера .webview-container

Веб-клиент внутри приложения только рисует кнопочки, ему не нужно обрабатывать звук.

anonymous
()
Ответ на: комментарий от LightDiver

Таких это каких? Если тебе нужен вообще кроссплатформенный фреймворк, то альтернатив-то побольше будет.

Или тебе принципиально, чтобы оно использовало веб-технологии и/или работало в браузере?

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от zurg

Всё названное работает поверх веб-даижка, в роли которого и выступает таури.

Вот зависимости для работы на десктопе, работающие на таури:

https://github.com/DioxusLabs/dioxus/blob/45442af41d50b74d51304e7736b7b15fd35364dd/Cargo.toml#L344-L345

kneedeep
()
Ответ на: комментарий от hobbit

Не, я видел твой вопрос. Там вроде очевидное. Это мой собственный мессенджер для гильдии. Вот клиентскую часть и запускаю. Просто мозги кипят. Я все прочитал, все видел, все учел, но проверять многое буду позже. Не хочу отвлекаться.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

Так вопрос был в следующем: тебе во фреймворке веб нужен (именно веб, не работа с сетью)?

Если не нужен, то альтернативы есть: и Lazarus (объектный паскаль) с LCL, и Qt (C++ либо питон на выбор). И в том, и в другом есть GUI, работа с сетью, и многое другое. Это даже если заранее ограничивать себя именно фреймворками, а не библиотеками россыпью, тогда вариантов будет намного больше, но я понимаю, это сложнее.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Я знаю что такое лазарус - это наследние делфи. По ряду причин для меня это вообще ни разу не альтернатива. Я лучше вон го поковыраю.

Питон он еще жирнее, чем js. Еще тормознее - это на самый крайний случай, когда уже не осталось вообще никакх варинатов. Я работал с ним сначала, проверял.

А суть простая - это проект на mediasoup. Там очень хорошая реализация уже большей части. Потому привязка к js изачальная. Сервер и клиент на node.js. Есть веб-версия войса: https://ns.fiber-gate.ru/

Но проблема веб-версии в неудобстве ее использования: Невозможность пуш-ту-толк, например. Потому нужен клиент. Изначально я клиент делал отдельно полностью, но это дублирование файлов, в итоге надо поддерживать два параллельных проекта.

И тут до меня дошло - можно же просто подгружать в клиент веб-версию полностью и передавать между ними данные. Я так на андроид сделал клиент за полчаса и все идеально работало. Но чтобы это сделать, надо во что то рабочее и вебовое грузить этот самый веб клиент с двухсторонней связью.

Самый очевидный варинат изначальный был - электрон. И он работает почти идеально, но он монструозен по требованиям. А таури это проект типа электрона, но на раст.

Вот я сейчас и перебираю варианты разной степени жручести и рабочести.

Qt и С++ я буду рассматривать даже позже питона, как самый самый крайний вариант, ну потому что не получается у меня С++. Я не понимаю его, он меня. Я не знаю в чем тут дело.

Тут выше предложили несколько интересных идей, я их записал и буду перебирать потихоньку. Сравнивать.

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 3)
Ответ на: комментарий от zurg

Сорян, там действительно есть собственный рендерер blitz на wgpu, но это лишь движок отрисовки html/css, тащить туда браузерные фичи они не собираются. ТСу при этом придётся самому реализовывать работу с микрофоном на расте.

kneedeep
()
Ответ на: комментарий от kneedeep

Сейчас беда всех инструментов раст - версии ниже единицы. Все, за что не возьмешься - недоделано. Все частично. Или реализуй сам с нуля или жди…

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Посмотрел. Wails это тоже WebKitGTK, а значит для линуксов микрофон ограничен. Тоже работать не будет. Вот же лютая дичь.

Из рабочих вариантов только электрон для всех платформ.

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Я сейчас пытаюсь на С++ сделать проект. Пока конечно нихера не работает, но бинарник 265кб вместо 93мб…. Мгновенный запуск, 49мб озу, а не 693мб…

У меня тут случайно возникла крамольная мысль: «Господи, какой же он быстрый и легкий». Это путь куда то не туда…

Сборка 3-8 секунд, а не 8 минут.. ппц..

LightDiver ★★★★★
() автор топика
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

Пока конечно нихера не работает

но бинарник 265кб

Мгновенный запуск

Для таких проектов рекомендую брать ассемблер. Программу, которая нихера не работает, на нём можно написать уложившись всего в несколько байт, с мгновенным и запуском и завершением. :)

CrX ★★★★★
()
Ответ на: комментарий от CrX

Ну не совсем ничего, конечно))

Частично грузится старый интерфейс уже. Пытаюс с js подружить пока. Выходит так себе:

diver ~/sources/C/NSQCuC/build % ./nsqcut 2>&1 | tee debug.log                                           0:03:32
nsqcut.backend: Backend constructor
nsqcut.backend: Initializing backend with web view
nsqcut.backend: WebChannel registered, backend object available
nsqcut.settings: Settings initialized, path: "/home/diver/.config/NightWatch/NSQCuT.conf"
nsqcut.settings: Loading settings
nsqcut.settings: Loaded gamePath: ""
nsqcut.addonmanager: AddonManager initialized
nsqcut.gamelauncher: GameLauncher initialized
nsqcut.main: Application started
js: Uncaught TypeError: Expected string
js: [NSQCuT] Error loading addons: TypeError: Expected string
js: [NSQCuT] Error: Не удалось загрузить список аддонов: TypeError: Expected string
nsqcut.addonmanager: Startup update check
nsqcut.backend: Backend destructor
nsqcut.settings: Settings destroyed
nsqcut.addonmanager: AddonManager destroyed
nsqcut.gamelauncher: GameLauncher destroyed

LightDiver ★★★★★
() автор топика
Ответ на: комментарий от LightDiver

Я с него начинал. Для начала 90х очень прорывная технология.

Я к тому, что можно взять Mumble как ядро для VoIP, стек аудио-технологий с его многочисленными голосовыми каналами, системой разделения привилегий, Push-to-Talk (ну как Discord это всё себе утащил). И вокруг него построить более современный клиент. поддерживающий дополнительную функциональность в виде чатов, контактов и т. д. Ещё voip-mumble можно интегрировать в уже имеющийся мессенджер типа джаббера какого-нибудь. И всё это будет без этого Electron и прочей вебни, на нормальном GUI. Если вдруг надо именно web (например, для интеграции в этот ваш Tauri), то есть веб-версия mumble-клиента

ChocoRobo
()
Последнее исправление: ChocoRobo (всего исправлений: 4)