The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Идентификация через анализ внешних обработчиков протоколов в браузере, opennews (??), 15-Май-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


31. "Идентификация через анализ внешних обработчиков протоколов в..."  +3 +/
Сообщение от Аноним (31), 16-Май-21, 00:03 
Похоже на всех линуксовых десктопах не будет работать из-за xdg. Во всяком случае у меня детектит всё программы, хотя есть только телеграм
Ответить | Правка | Наверх | Cообщить модератору

44. "Идентификация через анализ внешних обработчиков протоколов в..."  –4 +/
Сообщение от Ordu (ok), 16-Май-21, 00:49 
У меня нет никакого xdg. Никогда не понимал, зачем он нужен. Ну, в смысле, если мне надо открыть pdf, я пишу "evince чё-то-там.pdf", зачем мне xdg?
Ответить | Правка | Наверх | Cообщить модератору

46. "Идентификация через анализ внешних обработчиков протоколов в..."  +2 +/
Сообщение от Аноним (46), 16-Май-21, 00:55 
Потому что в юниксах нет расширений."чё-то-там.pdf" - это просто имя файла с точкой посередине и pdf в конце.
Ответить | Правка | Наверх | Cообщить модератору

49. "Идентификация через анализ внешних обработчиков протоколов в..."  –3 +/
Сообщение от Ordu (ok), 16-Май-21, 01:47 
> Потому что в юниксах нет расширений."чё-то-там.pdf" - это просто имя файла с
> точкой посередине и pdf в конце.

Если ты подумаешь головой, то ты поймёшь, что ответ, начинающийся с "потому что" -- это невалидный ответ на вопрос, начинающийся с "зачем".

Ответить | Правка | Наверх | Cообщить модератору

50. "Идентификация через анализ внешних обработчиков протоколов в..."  +1 +/
Сообщение от Аноним (46), 16-Май-21, 02:10 
Верно. Правильный ответ - тебе не зачем, ты и сам это знаешь, твой вопрос был риторическим. Я же просто болтал, также как ты.
Ответить | Правка | Наверх | Cообщить модератору

68. "Идентификация через анализ внешних обработчиков протоколов в..."  +2 +/
Сообщение от Аноним (62), 16-Май-21, 08:12 
Тут: незачем - вместе. Также - раздельно.
Соррян, не сдержался :)
Ответить | Правка | Наверх | Cообщить модератору

83. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от ыы (?), 16-Май-21, 09:08 
"Сорян" - с одной "р" если что...
Иногда лучше сдержаться...
Ответить | Правка | Наверх | Cообщить модератору

110. "Идентификация через анализ внешних обработчиков протоколов в..."  +1 +/
Сообщение от Shevchuk (ok), 16-Май-21, 14:42 
Не устоявшаяся норма. Образовано от англ. sorry, так что может быть допустимо с двумя "р" и в русском.
Ответить | Правка | Наверх | Cообщить модератору

115. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от Ordu (ok), 16-Май-21, 15:23 
Нет. Я не знаю, что мне незачем. Я не знаю, зачем мне это. Есть разница, если ты подумаешь. Особенно в свете того, что другие используют, и им зачем-то ведь надо? И я не знаю зачем. Так что вопрос вовсе не риторический.
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

74. "Идентификация через анализ внешних обработчиков протоколов в..."  –2 +/
Сообщение от Аноним (65), 16-Май-21, 08:24 
> У меня нет никакого xdg. Никогда не понимал, зачем он нужен. Ну, в смысле, если мне надо открыть pdf, я пишу "evince чё-то-там.pdf", зачем мне xdg?

Т.к. сокрашает рутинную задачу до "в два клика". Тогда как для предложенного с CLI нужно потоптать клавиатуру несколько секунд в разных окнах.

Т.е. без xdg регулярно напряжённое внимательное нажимание на много кнопок в разных окнах.

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

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

88. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от Ordu (ok), 16-Май-21, 10:05 
> Можно потратить этот ресурс внимания на что-то более увлекательное, например.

На то, чтобы тебя поимели через подсовывание xdg какого-нибудь zero-day?

Ответить | Правка | Наверх | Cообщить модератору

104. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от Аноним (65), 16-Май-21, 14:20 
Не имеет отношения. Т.к. ответ на вопрос "do xdg open?" или что открывать в терминалке - в обоих случаях жмёт кнопку сам чел.

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

Сосредоточение внимания на вводе команд в CLI, переключение между окнами отвлекают от анализа - можно ли открывать вообще. Тогда xdg вообще полезно, т.к. защишает, фокусируя внимание на главном, убирая отвлекающее второстепенное.

Ответить | Правка | Наверх | Cообщить модератору

113. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от Ordu (ok), 16-Май-21, 15:16 
> Не имеет отношения. Т.к. ответ на вопрос "do xdg open?" или что
> открывать в терминалке - в обоих случаях жмёт кнопку сам чел.

Почему не имеет? В терминале ты видишь имя файла глазами, ты знаешь, чем он открывается -- это не автоматическое решение на основании какого-то там реестра, ты берёшь и открываешь при помощи той программы, при помощи которой хочешь открыть. Тут исключается ошибка вида "я думал, оно evince'ом откроет, а оно запустило wine".

> Сосредоточение внимания на вводе команд в CLI, переключение между окнами отвлекают от анализа

Они концентрируют на анализе. Вместо того, чтобы ворон считать, ты принимаешь решение о том чем открывать, и смотришь имя файла не таким, как оно в url выглядит, и не таким, как его браузер отобразил, скачивая, а так каким оно на диске оказалось. Это лишняя проверка, расширяющая возможности "анализа".

Но мы отвлеклись от сути. Браузер и без xdg умеет назначать действия на файлы разных типов, при этом он даже не на расширение файла ориентируется, а на mime-тип, что хорошо и прельстиво, потому как ты сам говоришь, что в linux'е расширения файлов -- это костыль. Если тебе это нужно, тебе вовсе нет никакой необходимости ставить для этого ещё какую-то внешнюю программу.

Ответить | Правка | Наверх | Cообщить модератору

136. "Идентификация через анализ внешних обработчиков протоколов в..."  +2 +/
Сообщение от Аноним (135), 17-Май-21, 03:48 
Допустим, ты получил файл в мессенджере и кликнул на него, чтобы открыть. Откуда мессенджеру знать, чем его октрывать?

Он может определить его тип файла разными путями – через libmagic (либа утилиты file – самый кошерный путь, но не подходит для интерпретируемых языков), через kmimetypefinder5 для kde, через gio info / gvfs-info / gnomevfs-info для gnome, через /usr/bin/file --mime-type -b для всего остального. Затем проверить ${XDG_DATA_DIR:-$HOME/.local/share}/applications/mimeinfo.cache и найти там имя desktop-файла, подходящего под полученный mime-type (а если такого файла нет или в нём нет нужного mime-типа, то же самое делается для /usr/share/applications/mimeinfo.cache), затем найти в том же каталоге applications указанный desktop-файл, и лишь потом выполнить указанную в нём команду, чтобы открыть целевой файл.

А теперь представь что любая, каждая программа, умеющая открывать файлы во внешних просмотрщиках, будет велосипедить для этого свой код, просто чтобы узнать, какую программу предпочитает пользователь (или какая установлена дефолтной в системе если пользователь свои преференции не устанавливал). Некоторые браузеры так делают, но это оправданно, ведь у них может быть свой, отдельный от системного список преференций, но даже для него делается fallback на системный дефолт. Это также оправданно для графических файловых менеджеров, ибо это одна из их основных функций, а чаще всего они ещё и позволяют изменить предпочитаемую программу для любого типа файла.

Чтобы не плодить дублирующийся код для всего остального софта, была придумана программа, которая делает всё вышеописанное сама, и которой максимально просто пользоваться из других программ – просто дайте ей путь к файлу (или URI со схемой, которая известна системе), и она его откроет.

Это не какое-то уникальное изобретение FDO (FreeDesktop.Org), который раньше назывался XDG (X Desktop Group). Наоборот, их утилиты xdg-open и xdg-mime являются очень простыми и понятными скриптами на shell (даже не bash), которые как раз-таки в первую очередь ничего сами не делают, а лишь определяют текущее DE и запускают сооответствующую ему утилиту, а именно gio open / gvfs-open / gnome-open, kde-open, mate-open, exo-open (XFCE) и так далее. Если пользователь не использует DE или утилиты недоступны, производится описанная мною выше процедура определения mime-типа файла, определения и поиска связанного с ним desktop-файла, и запуска команды из него. Это всё есть в предельно понятном и читабельном скрипте, почему-то мне не лень было его открыть и пересказать.

Почему этих утилит так много? Так сложилось исторически. Когда-то раньше не существовало общесистемного стандарта ассоциации destkop-файлов и mime-типов, поэтому у каждой DE был свой список преференций/ассоциаций и своя "открывашка". А когда стандарт появился, его не могли в первый же день реализовать все сразу, да и часть DE не спешила его внедрять, т.к. у них уже было своё работающее решение.

Сейчас большинство, если не все, DE при изменении "своих" настроек меняют и общие в mimeinfo.cache. Но судя по логике работы xdg-open, так было далеко не всегда, и, например, могла сложиться следующая ситуация – у пользователя есть валидный mimeinfo.cache, который автоматически сгенерировался, но пользователь сидит на DE, который этот файл игнорирует. Пользователь через настройки DE или из файлового менеджера выставляет свои любимые просмотрщики картинок, документов, любимый плеер и т.д. и ожидает что однажды настроенные ассоциации файлов будут работать всегда везде одинаково. Если бы xdg-open миновал DE-специфичные открывашки и сразу брал "единый" mimeinfo.cache, пользователь получил бы не то что ожидал. Поэтому xdg-open в первую очередь смотрит на наличие DE и по возможности определяет тип и/или открывает файл с помощью его утилиты, а если не получилось, то берёт mimeinfo.cache.

Браузеры и другой софт обычно полагаются на xdg-open когда не знаю чем открыть тот или иной файл, потому что он делает одну простую вещь, и делает её хорошо. Например, именно поэтому Firefox чаще всего не может сообщить в какой программе откроется скачиваемый файл, если выбрать "открыть в системе" вместо "скачать" – даже если ему известен mime-тип скачиваемого файла когда его сообщает сервер, Firefox не берётся определять чем его открыть, а просто берёт утилиту, которая сама всё разрулит, обычно делая это правильно. Проблемы с неправильными ассоциациями бывают если играться с переменной $DESKTOP_SESSION, по которой xdg-open определяет текущее DE, или прыгать с одного DE на другое (или использовать разные их части), т.к. они вполне могут перетирать ассоциации друг друга, чтобы "общий" mimeinfo.cache совпадал с "их" списокм преференций (что и должно происходить при отсутствии конфликтов).

Я не знаю как ещё подробнее это можно объяснить, я уже повторяться начал. Теперь стало понятнее зачем он нужен?

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

139. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от Аноним (135), 17-Май-21, 04:26 
Забыл добавить – ещё учитывается ~/.config/mimeapps.list
Ответить | Правка | Наверх | Cообщить модератору

137. "Идентификация через анализ внешних обработчиков протоколов в..."  +/
Сообщение от Аноним (135), 17-Май-21, 04:06 
К слову, мне тоже проще намного проще набрать `evince document.pdf` чем какой-то там xdg-open, и из терминала я так всегда и делаю, только я ещё хочу чтобы файлы открывались и из ФМ (как минимум Caja и Thunar, а лучше ещё и mc), и из архиваторов, и из браузеров, и из мессенджеров, и из торрентокачалки, в общем, везде.

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

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

Или вот пример – когда-то я работал в офисе, где у всех было KDE (ставили по дефолту), а у меня MATE, и я каждый раз, садясь за чужой комп, с трудом вспоминал, как называется и как пишется Gwenview, запоминание заняло время. А ещё в том же офисе у всех были разные текстовые редакторы и браузеры, и садясь за чужой комп надо было часто переспрашивать, чем открыть тот или иной файл чтобы показать или спросить что-нибудь т.к. vim'ом и firefox'ом пользовались далеко не все. В какой-то момент я заметил что коллега-тестер использовала xdg-open для открытия html-отчётов, и понял, что всё это время зря задавал эти глупые вопросы.

Ответить | Правка | К родителю #44 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру