LINUX.ORG.RU
ФорумTalks

Всё есть файл и это прикольно! Почему в GNU/Linux эта идея не развивается?

 , ,


0

1

Короткое видео: https://www.youtube.com/watch?v=YCho-wOAtOU
В принципе, ничего принципиально нового. Но оно напоминает, как это удобно и здорово.

Интересно, почему в современном Linux этот подход вроде бы используется, а вроде бы и нет?

Например, в Gnome можно смонтировать архив штатными средствами, также есть отдельные FUSE файловые системы для этих целей. Но при этом, например, Midnight Commander архивы открывает через что-то своё встроенное и в нём уже нельзя нажать Ctrl+O и выполнить несколько bash команд. KDE, насколько я помню, аналогично Midnight Commander'у.

Или ещё пример. Недавно было обсуждение, о том, как будут работать скриншоты и скринкасты с переходом на Wayland. И там что-то с D-Bus+PipeWire. Я так понимаю, к последнему будет своё API. Почему бы не реализовать интерфейс получения скриншота также как в видео? И с правами всё просто. Запретил через AppArmor-профиль браузеру получать доступ к /run/user/self/wayland/screen-0/ и подлый браузер за тобой не подглядывает.

Почему D-Bus не выглядит как файловая система? echo 100 > /run/user/self/volume-control. Удобно же! Опять же правами рулить просто и быстро. Можно через стандартные группы и пользователи, через ACL, всякие SELinux тоже в тему.

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

★★★★★

Последнее исправление: ls-h (всего исправлений: 3)

Ответ на: комментарий от Deleted

можно ли не прерывая вывод сделать так чтобы писаться стало в dsp2

Приложение пишет в /dev/soundout, а куда оно будет выводиться решает драйвер (звуковой сервер). В принципе, в случае со звуком, от идеи «всё есть файл/файловая система» никакого особого преимущества по сравнению с другими видами API и не будет. Хотя, если как в Plan 9, это расширить и на сеть, то простым монтированием /dev/soundout с другой машины можно звук выводить на неё.

Кстати о Plan 9. Насколько я помню там есть оконная система Rio. Она для взаимодействия с оборудованием пользуется файлами типа /dev/mouse, /dev/display, /dev/keyboard (пути от балды, давно это было...). При этом для приложений она порождает такие же файлы. Пути одинаковые, но каждое приложение попадает в своё окно. Поэтому без дополнительного кода её можно запускать рекурсивно, т.е. оконную систему в окне другой оконной системы. И так же просто можно работать по сети, через импорт/экспорт этих файлов.

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

Приложение пишет в /dev/soundout, а куда оно будет выводиться решает драйвер (звуковой сервер).

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

Deleted
()

Если коротко, то ненужно. Это, как и любая другая стройная концепция, хорошо работает в области helloworld-ов и сдувается при возрастании сложности

Deleted
()
Ответ на: комментарий от ls-h

Алиасы, ссылки, скрипты

Что в конечном счёте вырождается в те же dbus-ы и прочие вещи, нарушающие сабж

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

Потому, что пришли наркоманы и хипстеры, которые забивают на стандарты, лепят кривые велосипеды, а потом кричат, что в линуксе всё плохо

На какие стандарты и кто именно забил? Желательно целую подборку, единичными случаями никого не удивить

Изначально он назывался dcop и был KDE-специфичным средством для взаимодействия собственных _графических_ компонентов

И с чего это кдешники дропнули традиционный IPC и нагородили свой велосипед?

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

ничто не мешает реализовать качественный и одновременный вывод, как это сделано в венде

Ну вот и сделали. Или в венде /dev/dsp работает?

Xellos ★★★★★
()
Ответ на: комментарий от ls-h

Вопрос из серии почему Plan 9/B массово не взлетели? Лучшее враг хорошего. Plan-ы мне тоже нравятся своими идеями, но как оказалось, для большинства вещей достаточно было юникс-подобности.

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

фичи пульсеаудио тоже можно? Ну там перекидывание вывода на лету с одного устройства на другое

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

lenin386 ★★★★
()

Интересно, почему в современном Linux этот подход вроде бы используется, а вроде бы и нет?

Почему D-Bus не выглядит как файловая система?

Потому что Гном проектируют вендузятники-недоучки вроде Пеннингтона и Поцеринга.

tailgunner ★★★★★
()

Видимо тупиковая идея в чистом виде, не нашла распространения. Plan 9 должен был заменить Unix, не взлетело. Может микроядерная Google Fuchsia чем-то подобным упорется.

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

Там пичаль в том, что например Bluetooth в Линуксе никакого отношения к звуковой подсистеме не имеет.

На самом деле имеет. Собери bluez 5.0 без пщаудио, ага.

Но никакого отношения Buetooth к звуковой подсистеме иметь вообще не должен. И не только к звуковой подсистеме, но и к D-Bus и прочей левой фигне. Точно так же, как Ethernet, WiFi и другие низкоуровневые сетевые протоколы.

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

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

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

На самом деле имеет. Собери bluez 5.0 без пщаудио, ага.

/tmp/sources/bluez-5.0$ grep -r pulseaudio.h
/tmp/sources/bluez-5.0$ grep -r pa_stream
/tmp/sources/bluez-5.0$ 
i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Я вообще-то не об этом. Именно собрать-то получится, а вот использовать собранное (а иначе нахрена собирать?) для работы со звуком - хрен. Оно пщпщ (и только пщпщ) через дубас дёргает.

Это как если бы по IP нельзя было бы передавать аудиоданные без установки пщаудио и дубаса.

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

Оно пщпщ (и только пщпщ) через дубас дёргает.

А покажи-ка место, где оно дёргает этот твой «пщпщ» через этот твой «дубас». А то у тебя дислексия. Можно попытаться угадать, что ты имеешь в виду, но я не хочу за тебя додумывать. Может, по коду получится понять, о чём ты.

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

Ты ведь осознаёшь, что bluez не только для звука нужен, да?

i-rinat ★★★★★
()

echo 100 > /run/user/self/volume-control. Удобно же!

Пользователи не умеют shell, в основном. Даже разработчики.

Опять же правами рулить просто и быстро. Можно через стандартные группы и пользователи, через ACL, всякие SELinux тоже в тему.

Пользователи не умеют стандартные группы и пользователи, через ACL, всякие SELinux, в основном. Даже разработчики.

So why bother.

d_a ★★★★★
()

echo 100 > /run/user/self/volume-control. Удобно же!

Как человек, 95% времени работающий в shell не могу согласиться -- ничего удобнее ручки (аппаратной) не встречал.

d_a ★★★★★
()

почему в современном Linux этот подход вроде бы используется, а вроде бы и нет?

Потому что этот подход не всегда адекватен. Впрочем в linux часто вместо него применяют ещё более угрёбищные решения.

no-such-file ★★★★★
()
Ответ на: комментарий от d_a

ничего удобнее ручки

В скрипты ж нельзя засунуть

Deleted
()
Ответ на: комментарий от i-rinat

А покажи-ка место, где оно дёргает этот твой «пщпщ» через этот твой «дубас».

пщпщ ломится в org.bluez.Profile1 и заводит там Bluetooth профиль. При коннекте, например, телефона, он увидит в SDP например HSP профиль и bluetoothd дёрнет org.bluez.NewConnection1, который будет обработан пщпщ.

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

В итоге, на сегодня только пщпщ может обеспечить работу со звуком через bluetooth. И то, HFP таки сделали через жопу, прокидывая AT-команды в ещё одну хрень с названием ofono.

Да, несомненно можно навелосипедить профиль и обработку профиля написав тулзу типа bluez-alsa, но возникает вопрос - а нафига столько геморроя по реализации того, что относится к bluetooth-стеку и нафига тогда вообще этот bluetoothd нужен, и какого хрена из него не вынесли и все другие профили? Достаточно было бы hciconfig (эквивалент ifconfig/ip addr) и sdpserver (ну с некоторой натяжкой можно эквивалентом назвать dnsmasq какой). А профили бы анонсировали и обрабатывали соответствующие third-party «серверы». И была бы нормальная подсистема, не особо отличающаяся от сетевой, например, без необходимости в дубасе и пр.

Ты ведь осознаёшь, что bluez не только для звука нужен, да?

Ты осознаёшь что разговор начался с вопроса о звуке и Bluetooth?

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

Ты осознаёшь что разговор начался с вопроса о звуке и Bluetooth?

Да, и тебе сразу сказали, что Bluetooth не связан со звуковой системой. А ты сказал, что а) bluez не получится собрать без PulseAudio, б) bluez дёргает PulseAudio через D-Bus.

(Кстати, я правильно твои звукоподражания декодировал?)

i-rinat ★★★★★
()

Запихнуть всё многообразие интерфейсов в унылую потоковую концепцию read/write? Никогда! Только объектно ориентированный подход, только ядерный dbus.

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

ox55ff ★★★★★
()
Ответ на: комментарий от i-rinat

Да, и тебе сразу сказали, что Bluetooth не связан со звуковой системой.

Не должен быть связан, но по факту сейчас связан, причём с совершенно конкретной. Вот когда можно будет сделать что-то типа socat btaddr:SCO | aplay, как это можно сделать с другими подсистемами, тогда и можно будет говорить о несвязанности.

А ты сказал, что а) bluez не получится собрать без PulseAudio,

Я такого не говорил. Я предложил собеседнику собрать bluez на системе без пульсы и посмотреть что получится, подразумевая что у него в итоге не будет работать звук через Bluetooth без пщпщ. Ибо без пщпщ bluetooth-стек линукса неполноценен.

б) bluez дёргает PulseAudio через D-Bus.

Именно так работа со звуком через bluetooth и происходит, вообще-то.

(Кстати, я правильно твои звукоподражания декодировал?)

У тебя крайне хреновый декодер.

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

У тебя крайне хреновый декодер.

Ну кто там твои мычания разберёт. Осиль нормальную речь, и тебя не придётся декодировать

Я предложил собеседнику собрать bluez на системе без пульсы и посмотреть что получится

Он соберётся.

Именно так работа со звуком через bluetooth и происходит, вообще-то.

С какого перепугу, если он о PA не знает? Заявлять такое это всё равно, что говорить, что Apache httpd дёргает Chromium. Он так работает. В каком-то извращённом смысле это даже можно считать правдой.

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

С какого перепугу, если он о PA не знает?

Повесить обработчик на NewConnection для профилей HFP и HSP сегодня может только PA. Поэтому Bluez именно PA и будет дёргать через этот обработчик. Вне зависимости от того, знает ли он о PA или нет.

Заявлять такое это всё равно, что говорить, что Apache httpd дёргает Chromium. Он так работает. В каком-то извращённом смысле это даже можно считать правдой.

Если бы Chromium был единственным браузером с которым может работать Apache, и http подразумевал бы инициацию коннекта сервером после того, как браузер объявил о своём существовании, то это так и было бы.

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

С какого перепугу, если он о PA не знает?

Повесить обработчик на NewConnection для профилей HFP и HSP сегодня может только PA.

Для этого ты должен проанализировать всё существующее на планете ПО, включая закрытое. А ты даже только с открытым это сделать просто не в состоянии.

https://github.com/Arkq/bluez-alsa

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

Для этого ты должен проанализировать всё существующее на планете ПО, включая закрытое.

Блюз слишком часто переписывают, чтобы кто-ниубдь захотел на него проприетарщину взгромоздить.

А ты даже только с открытым это сделать просто не в состоянии.

https://github.com/Arkq/bluez-alsa

Что-то с декодером у тебя совсем плохо. Не далее как здесь про эту bluez-alsa тебе рассказывал я:

Да, несомненно можно навелосипедить профиль и обработку профиля написав тулзу типа bluez-alsa, но возникает вопрос - а нафига столько геморроя по реализации того, что относится к bluetooth-стеку и нафига тогда вообще этот bluetoothd нужен, и какого хрена из него не вынесли и все другие профили?

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

про эту bluez-alsa тебе рассказывал я:

Ага. Рассказывал примерно это:

Повесить обработчик на NewConnection для профилей HFP и HSP сегодня может только PA.

Тебе взаимоисключающие параграфы в голове не жмут?

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

Тебе взаимоисключающие параграфы в голове не жмут?

Взаимоисключающие параграфы явно жмут в головах пейсателей bluez и PA. Ещё раз:

1. Профили HFP и HSP совсем вынесены из bluez. Типа реализуйте логику работы профиля и всё остальное в third-party.

2. При этом, профиль A2DP почему-то частично остался в bluez и реализовывать логику работы профиля (всякие подключения-отключения, смены кодеков, переконфигурации и пр.) в third-party почему-то уже не надо, надо только принимать звуковой поток.

3. То, что можно написать и HFP и HSP - не вопрос, сам когда-то это делал, можешь «hfp-mini-0.1» погуглить. Но что-то до сих пор я не вижу в репах распространённых дистрибутивов альтернативных PA реализаций.

Stanson ★★★★★
()

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

anto215 ★★
()
Ответ на: комментарий от ls-h

Осторожнее, так можно дойти до того, что и без самого dbus можно обойтись, весь ipc сделать в виде файлов и сокетов в FS

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

Но что-то до сих пор я не вижу в репах распространённых дистрибутивов альтернативных PA реализаций.

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

До сих пор не могу понять, правда, что мешает собрать и пользоваться bluez без PulseAudio. У меня вот юз-кейс не включает в себя передачу звука через Bluetooth.

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

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

Что значит «теперь»? Bluetooth - это широко распространённая массовая технология, передача звука - одно из основных применений, её полноценная поддержка просто обязана быть в системе искаропки. Представь себе USB стек без поддержки usb-storage, например, или там IP без UDP.

Вот и получается, что bluetooth в линуксе таки прибит гвоздями к звуковой подсистеме сомнительной нужности.

До сих пор не могу понять, правда, что мешает собрать и пользоваться bluez без PulseAudio. У меня вот юз-кейс не включает в себя передачу звука через Bluetooth.

У меня юзкейс WiFi например, тоже далеко не всегда включает в себя передачу звука. Однако, если я внезапно захочу передать через него звук, мне совершенно не понадобятся ни PA, ни написание своих велосипедов ни даже общение с dbus. Причём звук я смогу передать хоть сразу в звуковуху, хоть в файл, хоть дальше по сети куда-нибудь. С какого интересно перепугу, с bluetooth, стек которого вроде как должен быть реализован в bluez, должно быть как-то иначе?

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

Причём звук я смогу передать хоть сразу в звуковуху

Не сможешь.

хоть в файл

это просто глупо, потому что в файле не будет метаданных. Разве только чтобы выпендриться: «смотрите, как я могу».

хоть дальше по сети куда-нибудь

Единственный рабочий вариант из трёх.

С какого интересно перепугу, с bluetooth, стек которого вроде как должен быть реализован в bluez, должно быть как-то иначе?

Не должен. Но если ты готов костылять передачу звука по сети, что мешает тебе накостылять это через bluetooth?

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

Не сможешь.

socat | apalay и ещё куча вариантов.

это просто глупо, потому что в файле не будет метаданных. Разве только чтобы выпендриться: «смотрите, как я могу».

В PCM нет метаданных. А в кодеках рассчитанных на стриминг они в каждом фрейме.

Но если ты готов костылять передачу звука по сети, что мешает тебе накостылять это через bluetooth?

С каких пор использовать стандартные универсальные инструменты системы это «костылять». А мешает мне то, что в bluez, который как бы должен быть реализацией стека Bluetooth в системе не реализована поддержка стандартных профилей. По аналогии с сетью - поддержку IP и TCP сделали, а UDP не стали и предлагают самостоятельно парсить заголовки raw пакетов.

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

socat | apalay и ещё куча вариантов.

И ты правда этим пользуешься? Как я говорил, годится только для того, чтобы выпендриться.

В PCM нет метаданных.

Именно. Нет. А нужна информация по формату семплов, частоте дискретизации, количеству каналов и их порядку.

А мешает мне то, что в bluez, который как бы должен быть реализацией стека Bluetooth в системе не реализована поддержка стандартных профилей. По аналогии с сетью - поддержку IP и TCP сделали, а UDP не стали и предлагают самостоятельно парсить заголовки raw пакетов.

Если некая абстрактная версия Linux не будет предоставлять UDP, кто-нибудь в её форке реализует поддержку, и народ начнёт переползать на него. Вот так всё просто.

Если bluez никто не форкает, значит не нужно. Нет времени заняться самому? Значит, не так уж и нужно.

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

И ты правда этим пользуешься? Как я говорил, годится только для того, чтобы выпендриться.

К роутеру подключена USB колонка. Всякие удалённые девайсы из локалки могут туда закидывать звуковые сигналы и сообщения при неполадках. Проще сигнализацию не придумаешь.

Именно. Нет. А нужна информация по формату семплов, частоте дискретизации, количеству каналов и их порядку.

В HFP и HSP эти параметры заранее известны и неизменны - 8000кHz S16_LE 1 канал. A2DP использует AVDTP (типа RTP) в котором каждый MediaPacket в заголовке несёт данные о формате своего payload.

Если некая абстрактная версия Linux не будет предоставлять UDP, кто-нибудь в её форке реализует поддержку, и народ начнёт переползать на него. Вот так всё просто.

C bluez примерно так и было. Но как только началась возня на предмет альтернатив, в bluez быстренько нагородили костылей. Внешне вроде как всё заработало, и необходимость в альтернативе стала не такой насущной. Но костыли, абсолютно уродская архитектура, прибитый гвоздями dbus и перекидывание части протокола в пщпщ никуда не делись.

Если bluez никто не форкает, значит не нужно. Нет времени заняться самому? Значит, не так уж и нужно.

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

Stanson ★★★★★
()
Ответ на: комментарий от ls-h

Партия так сказала!
Может ты ещё против systemd что-то имеешь?

TheAnonymous ★★★★★
()

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

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

не работает ни одна профессиональная звуковая карта.

Ой, насмешил, наркоман. И что же у тебя не работает? Подозреваю, что твои «профессиональные» карты куплены на АлиЭкспресс)

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

И все же микроядро, а не монолит... Minix3 не такая уж ущербная система.

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

ну после твоего перла про шумерский «чай с полонием от простуды», в соседнем треде, даже не знаю ответить.
ты сначала погугли что это такое, а то мало ли, вдруг ты себя с древними русами отождествляешь, которых ярила окропил на арийность, а «западная философия» — это такие козни англосаксов с тамплиерами.

system-root ★★★★★
()
Ответ на: комментарий от sqq

ты уточни что имеешь ввиду под словом восток.
нахватаетесь по телеку крутых и ёмких терминов, типа восток, и айда вопросы задавать.
чем меня не устраивает восточная философия? всем. ну вообще всем.

system-root ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.