Какой диспетчер отображения для неинтерактивного приложения Python и mplayer? - PullRequest
2 голосов
/ 10 июня 2010

Я занимаюсь разработкой приложения, которое будет работать в Linux, чтобы все время работать в полноэкранном режиме (никаких меню, лотков или чего-либо еще не будет видно).

Приложение будет разрабатываться на Python. Не то, чтобы это имело значение для оконного менеджера, но с чем мне тяжело работать - это выбрать оконный менеджер.

Мне нужно что-то с наименьшим возможным размером, которое позволит мне запустить графическое приложение Python и одновременно иметь окно mplayer с широкоэкранными разрешениями (широкоэкранные, 16: 10, 16: 9 и т. Д.). Помимо этого, ему не нужно много функций, но размер конечной зоны - это самая важная вещь, на которую я буду смотреть.

Какой оконный менеджер вы бы порекомендовали?

РЕДАКТИРОВАТЬ: не будет никакого взаимодействия с необходимым приложением.

Ответы [ 5 ]

1 голос
/ 10 июня 2010

Я делаю нечто похожее на моей "приставке" и не использую оконный менеджер.

Он загружает Debian, и из inittab я автоматически вхожу в систему пользователя, который запускает отображение. .Profile этого пользователя запускает X, который запускает .xinitrc, который запускает мое приложение на python, которое работает как сетевой сервер перед mplayer (запускающим mplayer в режиме -slave).

В моем приложении на python отсутствует элемент графического интерфейса - на дисплее X работает только mplayer. Но в вашем случае все должно быть по-другому. Как я упоминал в комментарии к другому ответу, вы можете посмотреть, как вы можете переопределить окно mplayer, чтобы дать вам больший контроль над его размещением и / или перемещением / размером.

Делая это таким образом, избегали диспетчера отображения и диспетчера окон. Это упрощает решение, ускоряет загрузку и использует меньшую площадь (на нем работает SD-карта, с большим количеством свободного места).

1 голос
/ 10 июня 2010

На самом деле вам не нужен менеджер окон или менеджер дисплеев. Все, что вам нужно сделать, это открыть исходное окно с той же геометрией, что и корневое окно. Я полагаю, вы могли бы даже нарисовать прямо в корневом окне, если хотите.

Если вы используете некоторую библиотеку отображения, то, вероятно, у нее есть простой способ открыть полноэкранное окно. Например, используя достаточно свежую версию SDL через pygame, вы можете сделать

pygame.display.init()
surface = pygame.display.set_mode((0,0),pygame.FULLSCREEN,0)

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

Что касается mplayer, он принимает флаг -geometry, так что вы можете использовать что-то вроде mplayer -geometry 640x480+20+20 для отображения окна mplayer в 20 пикселях от верхних 20 пикселей слева и размером 640x480 пикселей.

1 голос
/ 10 июня 2010

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

Как уже говорилось, вам не нужен оконный менеджер для достижения этой цели. Вы можете сделать так, чтобы приложение Python GUI получало параметры командной строки для настройки геометрии окна, а также вызывало полноэкранный mplayer с параметром -geometry. Это должно заполнить экран, как и ожидалось, без каких-либо оконных украшений.

Теперь вы можете вызывать скрипт startx для пользователя, который все это запускает, и настраивать скрипт ~ / .xinitrc, который выполняет что-то вроде:

#!/bin/sh

exec python my_gui_app --whatever-sets-geom &
exec mplayer -fs video.avi

Если приложение yout pyhon вместо этого будет запускать mplayer, просто оставьте первый вызов exex (удалите '&') и попросите его вызвать mplayer по желанию с ожидаемыми размерами в режиме '-fs'.

Обратите внимание, что вам может понадобиться что-то вроде программы 'xset', чтобы отключить блокировку монитора из-за экономии энергии, скрыть курсор (хотя IIRC это то, что mplayer делает для своего собственного окна), и тому подобное.

Кроме того, некоторые приложения, работающие, например, на GTK-приложениях на голом X-дисплее, могут в конечном итоге использовать «уродливую» тему, поэтому вам, возможно, придется позаботиться о конфигурации стиля инструментария.

1 голос
/ 10 июня 2010

Вы, наверное, имели в виду оконный менеджер. Дисплей управляет KDM, GDM и тому подобное. Вот некоторые из них: менеджеры Windoe, GNOME, Xfce, KDE, ratpoison, fvwm, twm, blackbox. ratpoison предоставляет полный экран приложению, которое находится на переднем плане, но требует интенсивного взаимодействия с клавиатурой (отсюда и название ratpoison) и никакого взаимодействия с мышью.

0 голосов
/ 13 февраля 2012

Я понимаю, что это старый вопрос, но я использую openbox в своей системе, я создал специальный файл конфигурации, который отключает все сочетания клавиш мыши, удаляет границы и т. Д. В приложениях.В конфигурации openbox я даже создал несколько секретных ярлыков, которые могут запускать fx.xterm для отладки в реальном времени на коробке.

Документация openbox очень помогла выяснить все, я выполнил настройку примерно через 30 минут.

...