Вопросы по возможностям Linux GUI

Модератор: Модераторы разделов

alexf
Сообщения: 112

Вопросы по возможностям Linux GUI

Сообщение alexf »

Всем привет!

Возникла мысль перенести некоторый наш софт на Linux. Но перед тем как давать ТЗ, я решил в начале обдумать реально ли преодолеть некоторые мелкие, но вредные технические несовместимости. Я это вступление написал для того, что бы случаем не налетели фанатики, решившие что я тут хочу заняться сравнением возможностей Linux и Windows - мне в общем то всё равно это всё. Tребуется решить конкретные задачи, пускай даже и через задницу. В конце концов в винде многое именно так решено, но при этом работает и приносит прибыль.

Значит у меня список из разнообразных мелких вопросов:

1. Самый главный и пожалуй даже не мелкий. В Windows у нас есть COM и большой список программ (правда в основном продукции MS, но этого уже много - один Офис чего стоит) экспортирующие через него свои внутренние функции. Т.е. я могу написать скрипт, который возьмёт данные из таблицы в экселе, отформатирует их в ворде и отправит по почте нужному контакту. Ну или вот допустим я хочу запустить конкретную музыку в плеере именно с определёнными настройками эквалайзера. Понятно что если бы мне нужно было делать прямо эту функциональность, то я бы никогда с COM не стал связываться и сделал бы всё в ручную намного быстрее и надёжнее. Но если предположим стоит задача произвольнтых действий (условно говоря определяемых пользователем через скрипт), то тут вариантов сравнимых с COM не видно.

Соответственно, есть ли в Linux'е какая-то возможность для доступа к внутренним функциям чужих приложений? Сравнимая с COM по функциональности. Ну хотя бы в какой-то степени - интересны хоть какие-то варианы. Понятно что самое минимальное решение (то что можно сделать запуском чужой программы с какими-то аргументами) существует всегда и везде, но хотелось бы большего.

И соответственно если такая возможность есть, то насколько распространён софт с ним?

Я в курсе про CORBA, но её все использовали для других целей (хотя изначальная функциональность подходящая), да и сейчас она кажется вообще умерла...

2. Есть ли возможность отслеживать все сообщения с мышки? Я видел функцию XGrabPointer, но она перехватывает ввод. А надо бы именно отслеживать, не блокируя. В общем аналог SetWindowsHook для мышки.

3. Имеется ли стандартный программный интерфейс воспроизведения видео с аппаратным ускорением, типа DirectShow?

4. Как на счёт программной эмуляции нажатия кнопок на клавиатуре? Такое-то наверняка что-то есть, но хотелось бы не на низком уровне, а в обычном API, как в винде.

Надеюсь хоть на какие-то вопросы найдутся лёгкие решения и заранее благодарю. )

P.S. Если кому интересно, то под Linux мы работали давно, но делали там только демонов - весь GUI всегда был в винде. А вот сейчас возникла мысль посмотреть на linux ещё и как на систему потенциальных пользователей. )
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Вопросы по возможностям Linux GUI

Сообщение watashiwa_daredeska »

alexf писал(а): ↑
28.07.2009 11:15
есть ли в Linux'е какая-то возможность для доступа к внутренним функциям чужих приложений? Сравнимая с COM по функциональности. Ну хотя бы в какой-то степени - интересны хоть какие-то варианы.
DBus и, на сколько я понимаю, dcop. DBus — в основном, для GNOME, dcop — для KDE.
alexf писал(а): ↑
28.07.2009 11:15
3. Имеется ли стандартный программный интерфейс воспроизведения видео с аппаратным ускорением, типа DirectShow?
Что вкладывается в понятие «стандартный»? В официальных стандартах POSIX, SUS, X/Open и т.п. про видео ничего нет.
Спасибо сказали:
alexf
Сообщения: 112

Re: Вопросы по возможностям Linux GUI

Сообщение alexf »

Спасибо)

watashiwa_daredeska писал(а): ↑
28.07.2009 12:09
DBus и, на сколько я понимаю, dcop. DBus — в основном, для GNOME, dcop — для KDE.

О, я почитал - отлично, то что нужно. Конечно при условии что много софта выдаёт свои интерфейсы через D-Bus. Кстати, я прочитал что KDE начиная с версии 4 перешли с DCOP на D_Bus - похоже нам повезло. )))

watashiwa_daredeska писал(а): ↑
28.07.2009 12:09
Что вкладывается в понятие «стандартный»? В официальных стандартах POSIX, SUS, X/Open и т.п. про видео ничего нет.

Тьфу, Немного не корректно выразился. Имелся в виду стандартный интерфейс взаимодействия с любой видеокартой. Т.е. у меня есть просто байтовый поток и я хочу вывести его в окошке на экран, с аппаратным ускорением. Для этого я условно говоря вызываю одну функцию подсистемы и это работает на абсолютно любой видеокарте. В винде такая подсистема - это DirectShow. Хотелось бы и здесь найти с похожим уровнем абстракции.
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Вопросы по возможностям Linux GUI

Сообщение sergio »

alexf писал(а): ↑
28.07.2009 13:41
Тьфу, Немного не корректно выразился. Имелся в виду стандартный интерфейс взаимодействия с любой видеокартой. Т.е. у меня есть просто байтовый поток и я хочу вывести его в окошке на экран, с аппаратным ускорением. Для этого я условно говоря вызываю одну функцию подсистемы и это работает на абсолютно любой видеокарте. В винде такая подсистема - это DirectShow. Хотелось бы и здесь найти с похожим уровнем абстракции.

Придут более знающие люди - скажут точнее, а так - в линукс распространенные монстры видео - mplayer, vlc и totem. Последний вроде использовал фреймворк GStreamer (вполне "стандартный"), за прочих не скажу. Этих зверей стоит поразглядывать, заодно с библиотеками, которые они используют. А "стандартного ифейса взаимодействия с видеокартой" боюсь нету. Стандартный с видеокартой - это драйвера ядра. А над ними Х (а есть и другие варианты) и опенжель. Видеоиграние уже менее... стандартизировано. Тут еще может оказать влияние ваш выбор инфраструктуры - КуТе, ГТК+, ...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Вопросы по возможностям Linux GUI

Сообщение Portnov »

1. DBus, как уже сказали. Если по сети - RPC.
3. Есть т.н. "движки" (engines) разного уровня, самые известные - gstreamer, xine. Используют аппаратное ускорение, если драйвера видухи его умеют. gstreamer и xine - относительно высокоуровневые, с ними, условно говоря, можно вобще не знать что такое видеокарта - подаём на вход поток данных, а оно его показывает. Если надо именно взаимодействие с видеокартой - то DRI/DRM, работает в случае нормальных дров для видухи (и, конечно, видухо-зависимо - ибо возможности у разных видух разные).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: Вопросы по возможностям Linux GUI

Сообщение d_n_k »

2. Есть ли возможность отслеживать все сообщения с мышки? Я видел функцию XGrabPointer, но она перехватывает ввод. А надо бы именно отслеживать, не блокируя. В общем аналог SetWindowsHook для мышки.

4. Как на счёт программной эмуляции нажатия кнопок на клавиатуре? Такое-то наверняка что-то есть, но хотелось бы не на низком уровне, а в обычном API, как в винде.

XServer имеет ряд расширений для "записи" и "воспроизведения" всех события от устройств ввода
конечно можно и имитировать отдельные события устройств ввода.
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Вопросы по возможностям Linux GUI

Сообщение sash-kan »

alexf писал(а): ↑
28.07.2009 11:15
4. Как на счёт программной эмуляции нажатия кнопок на клавиатуре?
что-то вроде XSendEvent?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
alexf
Сообщения: 112

Re: Вопросы по возможностям Linux GUI

Сообщение alexf »

Спасибо за ответы.

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

d_n_k писал(а): ↑
28.07.2009 17:51
XServer имеет ряд расширений для "записи" и "воспроизведения" всех события от устройств ввода
конечно можно и имитировать отдельные события устройств ввода.


Мммм, а вы могли бы подсказать ключевое слово для изучения подобных расширений? А то с ходу что-то не находится...
Спасибо сказали:
Аватара пользователя
Lyset
Сообщения: 107
ОС: Ubuntu

Re: Вопросы по возможностям Linux GUI

Сообщение Lyset »

alexf писал(а): ↑
28.07.2009 21:42
Интересно, а реализация под винду сама всё с нуля делает или же реализована как обёртка к DirectX?

Скорее всего, именно обёртка, т.к. директ в винде - это единственная стандартная дырка к аппаратуре. Только если драйвер соизволит выставить какой-нибудь другой апи наружу, типа OpenGL или OpenAL(который тоже рендерит через директ, если карточка не Creative).
Спасибо сказали: