XDG lib

57 views
Skip to first unread message

TI_Eugene

unread,
Feb 2, 2013, 7:52:20 AM2/2/13
to razor-qt-ru
Раз пошла такая пианка - давайте определимся.
Итак - речь идет о средстве работы с xdg. Коих в той же федоре - ... да ни....
1. кому это выгодно:
Программам, открывающим файлы: файломанагеры (пока живы ондромедо,
ньюбриз и qtfm), браузеры (купзилло), тот же рейзор (iconview plugin).
2. как это выглядит:
Все эти приложения нуждаются в:
* показать иконку маймтипа файла в списке файлов
* dclick - открывает файл в дефолтном приложении (или какое найдет)
* правая педаль - "открыть в" - и список совместимых приложений
* а кому не нравится - "еще..." - и тут выезжает меню всех приложений
3. реализация:
* сначала - комплект инструментов по большей части на питоне (ибо pyxdg рулит)
* потом - либа на C/C++
* с фронтэндами в виде утилит (like xdg-utils)
4. API

Просьба комментировать.

TI_Eugene

unread,
Feb 2, 2013, 7:58:57 AM2/2/13
to razor...@googlegroups.com
ой... апи забыл:

* get_mime(path):mime
* get_short(mime):str
* get_desc(mime):str
* get_icon(mime, size, roundto):path
* get_default_app(mime):app
* get_apps(mime):app[] - список совместимых приложений
* get_attr(app, str):str - получить атрибут из desktop-файла (например - полное наименование)
* get_icon(app, size, roundto):path

Notes:
* mime, app - это некие классы/структуры
* roundto - как округлять. Например - мы просим дать икону 32x32, а если нет - вернуть меньшего или же большего размера (и ресайзить её или нет).

Иван Комиссаров

unread,
Feb 2, 2013, 9:03:55 AM2/2/13
to razor...@googlegroups.com
Во-первых, get_mime(path):mime уже дааавно написан http://doc-snapshot.qt-project.org/5.0/qtcore/qmimedatabase.html
Во-вторых, API получить апп для миме не работает в WIN и MAC напрямую (и если в вин маппинг mime-расширение однозначен, то в MAC просто невозможно получить однозначное соответствие MIME-UTI). Поэтому получать апп надо для url (а точнее, списка урлов).
Разве что вместо айди надо возвращать и принимать саму структуру везде.

суббота, 2 февраля 2013 г., 16:58:57 UTC+4 пользователь TI_Eugene написал:

TI_Eugene

unread,
Feb 2, 2013, 9:07:58 AM2/2/13
to razor...@googlegroups.com
02.02.13, Иван Комиссаров<abb...@gmail.com> написал(а):
> Во-первых, get_mime(path):mime уже дааавно
> написан http://doc-snapshot.qt-project.org/5.0/qtcore/qmimedatabase.html

у меня нет qt5 и в ближайший год вряд ли появится.

> Во-вторых, API получить апп для миме не работает в WIN и MAC напрямую

эть.. согласен - идея представлена некорректно.
Речь идет только о Linux. Для других платформ нужен совершенно свой велосипед.
Хотя и с таким же (или подобным) API. IMHO.

Иван Комиссаров

unread,
Feb 2, 2013, 9:14:27 AM2/2/13
to razor...@googlegroups.com


суббота, 2 февраля 2013 г., 18:07:58 UTC+4 пользователь TI_Eugene написал:
02.02.13, Иван Комиссаров<abb...@gmail.com> написал(а):
> Во-первых, get_mime(path):mime уже дааавно
> написан http://doc-snapshot.qt-project.org/5.0/qtcore/qmimedatabase.html

у меня нет qt5 и в ближайший год вряд ли появится.

Я рад за тебя. Выдернуть это из qt5 - работы на 10 минут. См андромеду.
 

> Во-вторых, API получить апп для миме не работает в WIN и MAC напрямую

эть.. согласен - идея представлена некорректно.
Речь идет только о Linux. Для других платформ нужен совершенно свой велосипед.
Хотя и с таким же (или подобным) API. IMHO.

Для юзера в 90% случаев удобнее будет написать
getDefaultProgram(url); 
чем
getDefaultProgram(QMimeDataBase().mimeTypeForUrl(url)).
Более того - в линухах разве нельзя сделать так, чтобы отдельный файл открывался в указанном приложении?

TI_Eugene

unread,
Feb 2, 2013, 9:30:00 AM2/2/13
to razor...@googlegroups.com
02.02.13, Иван Комиссаров<abb...@gmail.com> написал(а):
> Во-первых, get_mime(path):mime уже дааавно
> написан http://doc-snapshot.qt-project.org/5.0/qtcore/qmimedatabase.html

Аналог "xdg-mime query filetype <path>" или get_mime(path)

> Короче кури https://gitorious.org/andromeda/andromeda/blobs/master/src/libs/io/qdefaultprogram.h

Аналог "xdg-mime query default <mime>" или get_default_app(mime).
А где всё остальное?

>> * get_icon(mime, size, roundto):path

TI_Eugene

unread,
Feb 5, 2013, 7:15:36 AM2/5/13
to razor...@googlegroups.com
Вопрос к девелам razorqt и/или сочувствующим (только не надо посылать <s>на</s> читать сырцы - просто пальцем тыкните): как razorqt ловит, что надо перечитать меню приложений? Inotify? DBus? сравнивает дату изменения папок? Qtшный сторож файлов?

Александр Соколов

unread,
Feb 5, 2013, 8:14:29 AM2/5/13
to razor...@googlegroups.com
Т.к. там куча директорий и файлов, вешать на них все хуки слишком жирно. С другой стороны, само построение меню работает быстро, медленно работает подгрузка иконок, поэтому я по запросу перестраиваю меню (без иконок), рассчитываю от него хеш, и сравниваю с хешом от предыдущего.

5 февраля 2013 г., 16:15 пользователь TI_Eugene <ti.e...@gmail.com> написал:
Вопрос к девелам razorqt и/или сочувствующим (только не надо посылать <s>на</s> читать сырцы - просто пальцем тыкните): как razorqt ловит, что надо перечитать меню приложений? Inotify? DBus? сравнивает дату изменения папок? Qtшный сторож файлов?

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 



--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 8:30:36 AM2/5/13
to razor...@googlegroups.com
вторник, 5 февраля 2013 г., 17:14:29 UTC+4 пользователь Александр Соколов написал:
Т.к. там куча директорий и файлов, вешать на них все хуки слишком жирно. С другой стороны, само построение меню работает быстро, медленно работает подгрузка иконок, поэтому я по запросу перестраиваю меню (без иконок), рассчитываю от него хеш, и сравниваю с хешом от предыдущего.

Ухтыблин... С этого места поподробнее - штоле при _каждом_ обращении к меню ты перечитываешь все /usr/share/applications/*.desktop etc?
Что насчет просто для начала читать их mtime?

Александр Соколов

unread,
Feb 5, 2013, 9:08:16 AM2/5/13
to razor...@googlegroups.com
Обманул я тебя, я уже и сам забыл чего наворотил. Сейчас в коде посмотрел.

Значит так, когда в первый раз считывается меню .menu файлы и директории с .desktop файлами добавляются в QFileSystemWatcher. Когда что-то из этого поменялось, запускается таймер с задержкой 3 сек., если во время этих 3 сек. еще что-то поменялось, таймер перезапускается по новой. Т.о. если пакетный менеджер ставит сразу 100 программ, меню не будет перестраиваться 100 раз. А на сробатывании таймера уже перестройка меню. При этом еще и хеш рассчитывается, по нему QMenu дополнительно проверяет а надо ли реально перестраивать себя и перезагружать иконки. 
Вот такая байда.

5 февраля 2013 г., 17:30 пользователь TI_Eugene <ti.e...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 



--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 9:26:26 AM2/5/13
to razor...@googlegroups.com
Т.е. всё-таки не жирно? ;-)
А может хватит повеситься только на папки? Или вообще просто проверять mtime папок?
Ну а потом уже mtime/size/md5 *.desktop'ов (ежели кабы что).
Ведь по существу ты вешаешь сервис - типа inotify. Причем сервис, зависимый от razorqt.

вторник, 5 февраля 2013 г., 18:08:16 UTC+4 пользователь Александр Соколов написал:

Александр Соколов

unread,
Feb 5, 2013, 10:16:31 AM2/5/13
to razor...@googlegroups.com


5 февраля 2013 г., 18:26 пользователь TI_Eugene <ti.e...@gmail.com> написал:

Т.е. всё-таки не жирно? ;-)
Уел :) 
А может хватит повеситься только на папки?
Ну я примерно так и делаю. 
Из чего состоит меню из одного или нескольких (чаще из одного) файлов .menu (/etc/xdg/menus /razor-applications.menu), из файлов с описанием пунктов меню (/usr/share/desktop-directories) и файлов приложений (/usr/share/applications). Я вешаюсь на те menu файлы которые участвовали в построении (чаще всего это один файл). И на директории  /usr/share/desktop-directories и /usr/share/desktop-directories

Или вообще просто проверять mtime папок?
Ну а потом уже mtime/size/md5 *.desktop'ов (ежели кабы что).
А когда я буду эти mtime проверять? Каждые несколько секунд? При открытии меню нельзя, т.к. если что-то поменялось, то надо построить меню, и главное, меню будет читать иконки, а это не медленно. А сейчас, после установки программ, приходит сигнал, и если в это время ты не открываешь меню, то нон успеет перестроиться в фоне.

Ведь по существу ты вешаешь сервис - типа inotify. Причем сервис, зависимый от razorqt.
Ну вешаю, у нас и на конфигах висят. И что с того?
 
вторник, 5 февраля 2013 г., 18:08:16 UTC+4 пользователь Александр Соколов написал:
Обманул я тебя, я уже и сам забыл чего наворотил. Сейчас в коде посмотрел.

Значит так, когда в первый раз считывается меню .menu файлы и директории с .desktop файлами добавляются в QFileSystemWatcher. Когда что-то из этого поменялось, запускается таймер с задержкой 3 сек., если во время этих 3 сек. еще что-то поменялось, таймер перезапускается по новой. Т.о. если пакетный менеджер ставит сразу 100 программ, меню не будет перестраиваться 100 раз. А на сробатывании таймера уже перестройка меню. При этом еще и хеш рассчитывается, по нему QMenu дополнительно проверяет а надо ли реально перестраивать себя и перезагружать иконки. 
Вот такая байда.

5 февраля 2013 г., 17:30 пользователь TI_Eugene <ti.e...@gmail.com> написал:
вторник, 5 февраля 2013 г., 17:14:29 UTC+4 пользователь Александр Соколов написал:
Т.к. там куча директорий и файлов, вешать на них все хуки слишком жирно. С другой стороны, само построение меню работает быстро, медленно работает подгрузка иконок, поэтому я по запросу перестраиваю меню (без иконок), рассчитываю от него хеш, и сравниваю с хешом от предыдущего.

Ухтыблин... С этого места поподробнее - штоле при _каждом_ обращении к меню ты перечитываешь все /usr/share/applications/*.desktop etc?
Что насчет просто для начала читать их mtime?

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.

Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 



--
Best regards,
Alexander.

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 



--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 10:29:24 AM2/5/13
to razor...@googlegroups.com
"Видишь ли, Юра..."
Речь идет о меню приложений для приложений, у которых должен быть open with.
Соответственно - оперативное меню должно быть независимо от razor.
Или же мне придется клепать свой лисапед.
Или же отцепить построение и актуальность меню от рейзора.

Идеи есть?

05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
>>>> меню ты перечитываешь все /usr/share/applications/*.**desktop etc?
>>>> Что насчет просто для начала читать их mtime?
>>>>
>>>> --
>>>> Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
>>>>
>>>> Чтобы отказаться от подписки на эту группу и перестать получать из нее
>>>> сообщения, отправьте электронное письмо на адрес razor-qt-ru...@**
>>>> googlegroups.com.
>>>>
>>>> Подробнее о функциях можно узнать на странице
>>>> https://groups.google.com/
>>>> **groups/opt_out <https://groups.google.com/groups/opt_out>.

Александр Соколов

unread,
Feb 5, 2013, 11:41:15 AM2/5/13
to razor...@googlegroups.com
1. Какое отношение имеет меню "Пуск" к open with. Это 2 разные спецификации, у них общее только использование .desktop файлов.
2. Сейчас меню ни как не привязано к разору, оно полностью вынесено в qtxdg. У него даже смаке отдельный, абсолютно независимый. И нет никакого демона следящего за файлами, ни в разоре ни в qtxdg. Есть стандартный Qt-шный класс QFileSystemWatcher, который я и использую.

5 февраля 2013 г., 19:29 пользователь TI_Eugene <ti.e...@gmail.com> написал:



--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 11:48:30 AM2/5/13
to razor...@googlegroups.com
05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> 1. Какое отношение имеет меню "Пуск" к open with. Это 2 разные
> спецификации, у них общее только использование .desktop файлов.

И общее дерево меню. А так - никакого да.

> 2. Сейчас меню ни как не привязано к разору, оно полностью вынесено в
> qtxdg. У него даже смаке отдельный, абсолютно независимый. И нет никакого
> демона следящего за файлами, ни в разоре ни в qtxdg. Есть стандартный
> Qt-шный класс QFileSystemWatcher, который я и использую.

А если еще кто-то будет использовать его же?
Сколько копий следильщика будет? Сколько процессов будут пересобирать меню?

Александр Соколов

unread,
Feb 5, 2013, 11:52:25 AM2/5/13
to razor...@googlegroups.com
Следильщики будут в одном экземпляре, насколько я понимаю это системная штука и мы просто подписываемся на изменения в определенных файлах. 
А процессов пересобирающих меню будет по кол-ву программ.
Ты что предлагаешь? Сделать демона?

5 февраля 2013 г., 20:48 пользователь TI_Eugene <ti.e...@gmail.com> написал:
--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.

Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.





--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 11:59:03 AM2/5/13
to razor...@googlegroups.com
05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> А процессов пересобирающих меню будет по кол-ву программ.
> Ты что предлагаешь? Сделать демона?

Или нечто подобного.
Так бует аккуратнее, IMHO.
Особенно если кешировать меню

Александр Соколов

unread,
Feb 5, 2013, 12:30:59 PM2/5/13
to razor...@googlegroups.com
И все же я не до конца догоняю что ты планируешь сделать. То ты говоришь про меню пуск, то про mime ассоциации, а это совершенно разные вещи. То ты планируешь написать утилиты на питоне, то либу на сях для Qt, теперь демон. Mime для питона есть, запуск программ в Qt уже есть, в пятерке появилась работа с mime, для четверки есть бэкпорт этого. 

С запуском, на мой взгляд надо бодать freedesktop-овцев чтоб они доводили до ума xdg-utils, тогда это будет работать у всех. 
Про меню пуск, там узкое место не чтение файлов, а иконки. Они и так уже кешируются.
 
Отдельный демон это получается аналог вот этого http://lxde.git.sourceforge.net/git/gitweb.cgi?p=lxde/menu-cache;a=blob_plain;f=README;hb=HEAD посмотри, если уж будешь делать, то может сделаешь совместимым?


5 февраля 2013 г., 20:59 пользователь TI_Eugene <ti.e...@gmail.com> написал:
--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.

Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.





--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 12:50:00 PM2/5/13
to razor...@googlegroups.com
05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> И все же я не до конца догоняю что ты планируешь сделать.
> То ты говоришь про меню пуск, то про mime ассоциации, а это совершенно разные вещи.

Отнюдь.
Следите за руками (например - pcmanfm, dolphin работает так же):
1. mime1.png - это правая педаль на файле. "Открыть" - это открывает в
приложении по-умолчанию. НЕ том, которое xdg-mime query default (как
мы знаем - у меня в razor оно показывает gedit, которого нет), а в
реальном (juffed). Чуть ниже мы видим более другие редакторы. А вот
еще ниже мы видим open with. Который...
2. mime2.png - ... _внезапно_ показывает меню приложений.
3. menu3.png - которое на удивление совпадает с меню рейзора.
Я понимаю, что это всё совершенно разные вещи. И что рейзор должен сам
строить меню (по *.desktop), файломанагер - сам своё (там же), потом
еще раз пройтись по тем же файлам (?) и собрать приложения для этого
майма (это ж разные вещи, правильно?), потом еще раз - и найти
приложение по умолчанию.
Потом каждый из них должен прошвырнуться по иконкам да.
Так, что ли? Разные вещи?

> То ты планируешь написать утилиты на питоне, то либу на сях для Qt, теперь демон.

Утилита может работать с либой или демоном - не? На питоне или на сях
- не принципиально. А демон или служба дибас или либа - мы это и
пытаемся выяснить.

> Mime для питона есть, запуск программ в Qt уже есть, в пятерке
> появилась работа с mime, для четверки есть бэкпорт этого.

Ссылку на бэкпорт можно? А то я уже раз 7 слышал про этот бэкпорт - но
ни разу не видел.

> С запуском, на мой взгляд надо бодать freedesktop-овцев чтоб они доводили
> до ума xdg-utils, тогда это будет работать у всех.

ууу... проще венду на utf8 пересадить :-)

> Про меню пуск, там узкое место не чтение файлов, а иконки. Они и так уже кешируются.

Что показывает профайлер? QIcon тормозит? Чтение файлов? Щито?
Сейчас в рейзоре самое тормозное меню из всех ДЕ, если честно. И это пичалька.
mime1.png
mime2.png
mime3.png

Александр Соколов

unread,
Feb 5, 2013, 1:16:17 PM2/5/13
to razor...@googlegroups.com


5 февраля 2013 г., 21:50 пользователь TI_Eugene <ti.e...@gmail.com> написал:

05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> И все же я не до конца догоняю что ты планируешь сделать.
> То ты говоришь про меню пуск, то про mime ассоциации, а это совершенно разные вещи.

Отнюдь.
Следите за руками (например - pcmanfm, dolphin работает так же):
1. mime1.png - это правая педаль на файле. "Открыть" - это открывает в
приложении по-умолчанию. НЕ том, которое xdg-mime query default (как
мы знаем - у меня в razor оно показывает gedit, которого нет), а в
реальном (juffed). Чуть ниже мы видим более другие редакторы. А вот
еще ниже мы видим open with. Который...
2. mime2.png - ... _внезапно_ показывает меню приложений.
3. menu3.png - которое на удивление совпадает с меню рейзора.
Весь зал, с замиранием сердца, следил за руками. Зал плавно погружается в полумрак, прожектор выхватывает конферансье - 
Смер-р-р-ртельныи-й трюк! (звучат фанфары) Иллюзионист Евгений будет открывать файл connman.txt в ScreenGrab!
 
Не должно здесь быть меню пуск. Здесь должен быть отдельный список программ которые умеют открывать этот тип файлов.

Я понимаю, что это всё совершенно разные вещи. И что рейзор должен сам
строить меню (по *.desktop), файломанагер - сам своё (там же), потом
еще раз пройтись по тем же файлам (?) и собрать приложения для этого
майма (это ж разные вещи, правильно?), потом еще раз - и найти
приложение по умолчанию.
Потом каждый из них должен прошвырнуться по иконкам да.
Так, что ли? Разные вещи?

> То ты планируешь написать утилиты на питоне, то либу на сях для Qt, теперь демон.

Утилита может работать с либой или демоном - не? На питоне или на сях
- не принципиально. А демон или служба дибас или либа - мы это и
пытаемся выяснить.

> Mime для питона есть, запуск программ в Qt уже есть, в пятерке
> появилась работа с mime, для четверки есть бэкпорт этого.

Ссылку на бэкпорт можно? А то я уже раз 7 слышал про этот бэкпорт - но
ни разу не видел.
Я не уверен, что это самая последняя версия, может Иван даст другую ссылку.

> С запуском, на мой взгляд надо бодать freedesktop-овцев чтоб они доводили
> до ума xdg-utils, тогда это будет работать у всех.

ууу... проще венду на utf8 пересадить :-)

> Про меню пуск, там узкое место не чтение файлов, а иконки. Они и так уже кешируются.

Что показывает профайлер? QIcon тормозит? Чтение файлов? Щито?
Сейчас в рейзоре самое тормозное меню из всех ДЕ, если честно. И это пичалька.

Тормозит функция QIcon::fromTheme
Я пытался ковырять глубже, но многого не достиг.


--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 5, 2013, 1:57:26 PM2/5/13
to razor...@googlegroups.com
05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> Не должно здесь быть меню пуск. Здесь должен быть отдельный список программ
> которые умеют открывать этот тип файлов.

Внимательно - в mime1.png есть список программ, открывающих plain text.
Но иногда этого мало.
Поэтому меню приложений есть во всех файломанагерах DE, венде (о макос не знаю).

> http://qt.gitorious.org/qtplayground/mimetypes
> Я не уверен, что это самая последняя версия, может Иван даст другую ссылку.
Последний коммит - год назад.
Это не то.
Ок, буду искать.

> Тормозит функция QIcon::fromTheme
> Я пытался ковырять глубже, но многого не достиг.

Если похерить темы и грузить иконки непосредственно - будет быстрее?

TI_Eugene

unread,
Feb 5, 2013, 2:06:13 PM2/5/13
to razor...@googlegroups.com
05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> Не должно здесь быть меню пуск. Здесь должен быть отдельный список программ
> которые умеют открывать этот тип файлов.

Даже в этом случае приложение должно отсканировать все desktop.
И грузить иконы.
Так зачем платить дважды?

> Тормозит функция QIcon::fromTheme
> Я пытался ковырять глубже, но многого не достиг.

Вопрос, наверное, новичковый - но каким боком темы к иконам _приложений_?

TI_Eugene

unread,
Feb 5, 2013, 2:31:03 PM2/5/13
to razor...@googlegroups.com
Мне думается - должно быть так:
* некий демон/сервис/сторож, повесивший следильщики куда надо и
обновляющий некую базу меню/приложений/маймтипов (обрабатываемых, а не
всех) и икон - обновляющий асинхронно, а не по запросу от приложений.
* некая либа, которая забирает эти данные из базы (апи я приводил).
* утилиты на базе этой либы - аналоги/развитие xdg-utils.

05.02.13, Александр Соколов<sokol...@gmail.com> написал(а):

Александр Соколов

unread,
Feb 6, 2013, 4:34:04 AM2/6/13
to razor...@googlegroups.com


5 февраля 2013 г., 22:57 пользователь TI_Eugene <ti.e...@gmail.com> написал:
Не проверял, наверное да. Т.к. когда грузиться иконка из темы, считываются png-шки для всех размеров.
-- 
Best regards,
Alexander.

Александр Соколов

unread,
Feb 6, 2013, 4:37:49 AM2/6/13
to razor...@googlegroups.com


5 февраля 2013 г., 23:06 пользователь TI_Eugene <ti.e...@gmail.com> написал:
Потому что приложение обязано поставить несколько иконок разного размера в /usr/share/icons/hicolor, но еще оно может поставить в другие поддиректории в /usr/share/icons/ свои иконки стилизованные под темы. Или уже с темой идут иконки для популярных программ.

--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 6, 2013, 4:48:57 AM2/6/13
to razor...@googlegroups.com
среда, 6 февраля 2013 г., 13:37:49 UTC+4 пользователь Александр Соколов написал:
Вопрос, наверное, новичковый  - но каким боком темы к иконам _приложений_?
Потому что приложение обязано поставить несколько иконок разного размера в /usr/share/icons/hicolor, но еще оно может поставить в другие поддиректории в /usr/share/icons/ свои иконки стилизованные под темы. Или уже с темой идут иконки для популярных программ.

1. Ну, во-первых не обязано, а _может_. Подавляющее большинство из qtdesktop запихивают иконы в pixmaps. Hicolor, конечно, тоже тема, но она пустая.
2. но тащемта да - во всех темах есть apps.
Я предлагаю заменить FromIconTheme на более шустрый вариант: ты грузишь икону определенного размера, а откуда она взялась - вычисляет и кеширует демон.

Александр Соколов

unread,
Feb 6, 2013, 4:58:55 AM2/6/13
to razor...@googlegroups.com
6 февраля 2013 г., 13:48 пользователь TI_Eugene <ti.e...@gmail.com> написал:
среда, 6 февраля 2013 г., 13:37:49 UTC+4 пользователь Александр Соколов написал:
Вопрос, наверное, новичковый  - но каким боком темы к иконам _приложений_?
Потому что приложение обязано поставить несколько иконок разного размера в /usr/share/icons/hicolor, но еще оно может поставить в другие поддиректории в /usr/share/icons/ свои иконки стилизованные под темы. Или уже с темой идут иконки для популярных программ.

1. Ну, во-первых не обязано, а _может_. Подавляющее большинство из qtdesktop запихивают иконы в pixmaps. Hicolor, конечно, тоже тема, но она пустая.
2. но тащемта да - во всех темах есть apps.
А чего здесь гадать? В спецификации написано, что должно
Minimally you should install a 48x48 icon in the hicolor theme.
 
А pixmaps так, для совместимости.

Я предлагаю заменить FromIconTheme на более шустрый вариант: ты грузишь икону определенного размера, а откуда она взялась - вычисляет и кеширует демон.
ОК, попробуй. Только у меня есть ощущение, что ты смутно представляешь как это все должно работать по стандарту. Почитай спецификации.  

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 



--
Best regards,
Alexander.

Dmitry N. Kolesnikov

unread,
Feb 6, 2013, 8:29:00 AM2/6/13
to razor...@googlegroups.com
а если в качестве формата иконок использовать SVG, не ускорит ли это чтение иконок, и как следствие скорость перестроения меню?

среда, 6 февраля 2013 г., 15:37:49 UTC+6 пользователь Александр Соколов написал:

TI_Eugene

unread,
Feb 6, 2013, 8:42:30 AM2/6/13
to razor...@googlegroups.com
Сомневаюсь я...
1. кажись для svg надо поднимать вебкит (который весит как всё остальное qt).
2. И рисовать это свг (а это не точки раскатать).
3. svg иконы не всегда есть. У меня на нотбуке сейчас нет ни одной.
4. если тянуть с icon theme - то оно ж всё равно будет тащить и битмапы тоже.
5. мне пару лет назад доказали, что масштабированные свг иконы
выглядят хуже, чем заточенные под нужное разрешение. Я проверял - таки
да.

06.02.13, Dmitry N. Kolesnikov<dk.d...@gmail.com> написал(а):

TI_Eugene

unread,
Feb 6, 2013, 8:46:21 AM2/6/13
to razor...@googlegroups.com
06.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> А чего здесь гадать? В спецификации написано, что должно
> *Minimally you should install a 48x48 icon in the hicolor theme.*
>
> http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#install_icons
>
> А pixmaps так, для совместимости.

Ну... Мало ли что написано в спецификации...
Я смотрю по спекам. От силы 10% qt apps толкают в icons.

> ОК, попробуй. Только у меня есть ощущение, что ты смутно представляешь как
> это все должно работать по стандарту. Почитай спецификации.

По стандарту надо тянуть с дефолтное темы.
На практике - по рейзором дефолтная тема не определена.
И вообще - насколько я помню сырцы qt - там тема берется только под гномом.
Даже не под кедами. Я молчу за остальных.

Александр Соколов

unread,
Feb 6, 2013, 9:27:35 AM2/6/13
to razor...@googlegroups.com
SVG работает медленнее, по крайней мере на больших файлах Я когда искал обои, так SVG-шные ощутимо тормозили. Да и в спецификации описан порядок поиска - "png", "svg", "xpm"


6 февраля 2013 г., 17:29 пользователь Dmitry N. Kolesnikov <dk.d...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.
 
Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.
 
 



--
Best regards,
Alexander.

Александр Соколов

unread,
Feb 6, 2013, 10:57:36 AM2/6/13
to razor...@googlegroups.com


6 февраля 2013 г., 17:46 пользователь TI_Eugene <ti.e...@gmail.com> написал:

06.02.13, Александр Соколов<sokol...@gmail.com> написал(а):
> А чего здесь гадать? В спецификации написано, что должно
> *Minimally you should install a 48x48 icon in the hicolor theme.*
>
> http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#install_icons
>
> А pixmaps так, для совместимости.

Ну... Мало ли что написано в спецификации...
Вот поэтому так и живем, что всем на спеки насрать.
 
Я смотрю по спекам. От силы 10% qt apps толкают в icons.
Зато все кдешные используют тему.
 

> ОК, попробуй. Только у меня есть ощущение, что ты смутно представляешь как
> это все должно работать по стандарту. Почитай спецификации.

По стандарту надо тянуть с дефолтное темы.
На практике - по рейзором дефолтная тема не определена.
Не так. QIcon не может сама получить имя темы, но можно указать ей явно через QIcon::setThemeName, что мы и делаем в разоре.
  
И вообще - насколько я помню сырцы qt - там тема берется только под гномом.
Даже не под кедами. Я молчу за остальных.
Нет, Qt умеет и из гнома береть, и из кде. И ЕМИП из некоторых еще.  

--
Вы получили это сообщение, поскольку подписаны на группу Razor-qt ru.

Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес razor-qt-ru...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.





--
Best regards,
Alexander.

TI_Eugene

unread,
Feb 6, 2013, 11:22:48 AM2/6/13
to razor...@googlegroups.com
среда, 6 февраля 2013 г., 19:57:36 UTC+4 пользователь Александр Соколов написал:


Ну... Мало ли что написано в спецификации...
Вот поэтому так и живем, что всем на спеки насрать.

Скажем не так. Не всем, а разработчикам DE (прежде всего).
И Qt.
И дистрибутивов.
Ну и спеков тоже (с этим их "DE specific")

 
Я смотрю по спекам. От силы 10% qt apps толкают в icons.
Зато все кдешные используют тему.

Это <s>канал анимэ</s> рассылка кедов? :-)))



По стандарту надо тянуть с дефолтное темы.
На практике - по рейзором дефолтная тема не определена.
Не так. QIcon не может сама получить имя темы

Я могу и ошибаться, но - может. Под гномом.
 
, но можно указать ей явно через QIcon::setThemeName, что мы и делаем в разоре.

Но тормозит же ж?
Я не додалбываюсь, я пытаюсь выяснить.

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

  
И вообще - насколько я помню сырцы qt - там тема берется только под гномом.
Даже не под кедами. Я молчу за остальных.
Нет, Qt умеет и из гнома береть, и из кде. И ЕМИП из некоторых еще.
Ну, я могу и ошибаться.
Просто я помню, что был ошарашен, что оно берет из гнома, а для кедов там заглушка стоит.
А для остальных: default: break;
Не суть важно.

TI_Eugene

unread,
Feb 11, 2013, 8:24:47 AM2/11/13
to razor...@googlegroups.com
...включая авторов спецификаций:

[eugene@localhost ~]$ xdg-settings get default-web-browser
xdg-settings: unknown desktop environment
[eugene@localhost ~]$ xdg-settings set default-web-browser qupzilla
xdg-settings: unknown desktop environment
[eugene@localhost ~]$ xdg-settings get default-web-browser
xdg-settings: unknown desktop environment
...
less /usr/bin/xdg-settings:
...
detectDE()
{
# see https://bugs.freedesktop.org/show_bug.cgi?id=34164
unset GREP_OPTIONS

if [ -n "${XDG_CURRENT_DESKTOP}" ]; then
case "${XDG_CURRENT_DESKTOP}" in
GNOME)
DE=gnome;
;;
KDE)
DE=kde;
;;
LXDE)
DE=lxde;
;;
XFCE)
DE=xfce
esac
fi

среда, 6 февраля 2013 г., 19:57:36 UTC+4 пользователь Александр Соколов написал:
Reply all
Reply to author
Forward
0 new messages