Как написать панель задач панели в FLTK для использования в системах Linux - PullRequest
0 голосов
/ 27 мая 2011

Мне нужно написать небольшое приложение на C / C ++ для реализации панели задач панели, например, для отображения информации в верхней части окна рабочего стола (в частности, рабочего стола xorg в системе Linux). Мне нужно избегать раздувания и крутых кривых обучения для программирования GUI.

Мое исследование указывает мне на GTK + / GTKmm или FLTK. Похоже, FLTK, вероятно, проще для понимания и, скорее всего, предоставит небольшой чистый пакет с минимальными зависимостями. Итак, я основал свои исследования на FLTK.

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

Я хотел бы начать с написания простой программы на языке FLTK (или GTK + / GTKmm), которая создает полосу глубиной 20 пикселей по всему экрану, содержащую сообщение "Hello World". Область бара будет зарезервирована за пределами области, к которой могут обращаться другие программы, чтобы при развертывании другого приложения не скрывалось сообщение «Привет, мир». Я думаю, что это как-то связано со свойством WM_STRUT_PARTIAL, но я не могу найти информацию об этом в FLTK.

Делать это частично, чтобы понять, как написать простую программу с графическим интерфейсом, и частично, чтобы решить конкретную потребность, которая у меня есть.

Я ищу любую помощь / руководство, чтобы направить меня в правильном направлении, чтобы начать. Большое спасибо.

1 Ответ

0 голосов
/ 02 ноября 2011

starfry, я считаю, что это не тривиальная задача. Проблема в том, что ваш рабочий стол (скажем, GNOME2 / Metacity) зарезервировал это место и закрасил свою панель в той области, где вы хотите разместить свой бар. -

Если вы действительно хотите, чтобы ваш апплет на панели задач основывался на FLTK , вам придется «встроить» его в (GNOME) апплет. Это было давно, когда я делал подобное с SDL-приложением, но боюсь, что забыл, как это сделать. Первое, что приходит мне в голову, это каким-то образом получить XID из апплета GNOME и каким-то образом передать его части FLTK, а затем позволить FLTK сделать все остальное ...

Конечно, вы можете использовать другой рабочий стол, например KDE , или i3 или IceWM , у них ВСЕ есть свои способы работы с панелью лотка ( нет никакого стандарта для этого!) так что, извините за мой "французский" - это будет PITA для поддержки всех сред ...

Если бы я был на GNOME , я бы написал апплет целиком с использованием GNOME / GTK. Забудьте FLTK в этом случае. Это моя рекомендация. Если вы нацелены на KDE, то делайте это с использованием библиотек KDE / QT (виджет Plasma будет для чего искать).

Однако, если вы все еще хотите использовать FLTK, начните с функции fltk :: draw_into () (в FLTK 1.x она, вероятно, называется fl_draw_into ()), fltk :: xid () и связанные с ними функции.

...