Всем привет!
Возникла мысль перенести некоторый наш софт на 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 ещё и как на систему потенциальных пользователей. )
Вопросы по возможностям Linux GUI
Модератор: Модераторы разделов
-
watashiwa_daredeska
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Вопросы по возможностям Linux GUI
DBus и, на сколько я понимаю, dcop. DBus — в основном, для GNOME, dcop — для KDE.
Что вкладывается в понятие «стандартный»? В официальных стандартах POSIX, SUS, X/Open и т.п. про видео ничего нет.
Мои розовые очки
-
alexf
- Сообщения: 112
Re: Вопросы по возможностям Linux GUI
Спасибо)
О, я почитал - отлично, то что нужно. Конечно при условии что много софта выдаёт свои интерфейсы через D-Bus. Кстати, я прочитал что KDE начиная с версии 4 перешли с DCOP на D_Bus - похоже нам повезло. )))
Тьфу, Немного не корректно выразился. Имелся в виду стандартный интерфейс взаимодействия с любой видеокартой. Т.е. у меня есть просто байтовый поток и я хочу вывести его в окошке на экран, с аппаратным ускорением. Для этого я условно говоря вызываю одну функцию подсистемы и это работает на абсолютно любой видеокарте. В винде такая подсистема - это DirectShow. Хотелось бы и здесь найти с похожим уровнем абстракции.
watashiwa_daredeska писал(а): ↑28.07.2009 12:09DBus и, на сколько я понимаю, 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
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
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Вопросы по возможностям Linux GUI
1. DBus, как уже сказали. Если по сети - RPC.
3. Есть т.н. "движки" (engines) разного уровня, самые известные - gstreamer, xine. Используют аппаратное ускорение, если драйвера видухи его умеют. gstreamer и xine - относительно высокоуровневые, с ними, условно говоря, можно вобще не знать что такое видеокарта - подаём на вход поток данных, а оно его показывает. Если надо именно взаимодействие с видеокартой - то DRI/DRM, работает в случае нормальных дров для видухи (и, конечно, видухо-зависимо - ибо возможности у разных видух разные).
3. Есть т.н. "движки" (engines) разного уровня, самые известные - gstreamer, xine. Используют аппаратное ускорение, если драйвера видухи его умеют. gstreamer и xine - относительно высокоуровневые, с ними, условно говоря, можно вобще не знать что такое видеокарта - подаём на вход поток данных, а оно его показывает. Если надо именно взаимодействие с видеокартой - то DRI/DRM, работает в случае нормальных дров для видухи (и, конечно, видухо-зависимо - ибо возможности у разных видух разные).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: Вопросы по возможностям Linux GUI
2. Есть ли возможность отслеживать все сообщения с мышки? Я видел функцию XGrabPointer, но она перехватывает ввод. А надо бы именно отслеживать, не блокируя. В общем аналог SetWindowsHook для мышки.
4. Как на счёт программной эмуляции нажатия кнопок на клавиатуре? Такое-то наверняка что-то есть, но хотелось бы не на низком уровне, а в обычном API, как в винде.
XServer имеет ряд расширений для "записи" и "воспроизведения" всех события от устройств ввода
конечно можно и имитировать отдельные события устройств ввода.
все сказанное есть имхо...
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Вопросы по возможностям Linux GUI
что-то вроде XSendEvent?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
alexf
- Сообщения: 112
Re: Вопросы по возможностям Linux GUI
Спасибо за ответы.
GStreamer похоже отличная вещь. Кстати, в описание написано что он кроссплатформенный... Интересно, а реализация под винду сама всё с нуля делает или же реализована как обёртка к DirectX?
Мммм, а вы могли бы подсказать ключевое слово для изучения подобных расширений? А то с ходу что-то не находится...
GStreamer похоже отличная вещь. Кстати, в описание написано что он кроссплатформенный... Интересно, а реализация под винду сама всё с нуля делает или же реализована как обёртка к DirectX?
Мммм, а вы могли бы подсказать ключевое слово для изучения подобных расширений? А то с ходу что-то не находится...
-
Lyset
- Сообщения: 107
- ОС: Ubuntu
Re: Вопросы по возможностям Linux GUI
Скорее всего, именно обёртка, т.к. директ в винде - это единственная стандартная дырка к аппаратуре. Только если драйвер соизволит выставить какой-нибудь другой апи наружу, типа OpenGL или OpenAL(который тоже рендерит через директ, если карточка не Creative).