LINUX.ORG.RU
ФорумTalks

Про сделанное в lxpanelx, роадмап, и свистелки современного десктопа


0

2

В принципе, форк от оригинала отделяют только 78 коммитов, но сделано уже довольно много.

На новость не тянет, т.к. до релиза еще пилить и пилить, так что пишу в толксы.

Для апплета панели задач:

  • Возможность отображать только иконку, только заголовок или оба.
  • Опциональное отображение кнопки закрытия.
  • Режим для отображения заголовка только активного окна. (Панель задач в роли заменителя заголовка окна, если они отключены в WM.)
  • Если включена опция «Показывать окна всех рабочих мест», то кроме заголовка окна, также отображается и название рабочего места, на котором он находится.
  • Доработки контекстного меню: два пункта Максимизировать/Восстановить объединены в один, меняющий название в зависимоти от режима окна; пункт «Значком» отображается неактивным, если окно уже свернуто; в подменю «Переместить на рабочее место» отображаются реальные имена рабочих мест вместо номеров.
  • Возможность назначить на ЛКМ, СКМ и ПКМ, а также на прокрутку колесом любые действия из следующего списка:
    enum TASKBAR_ACTION {
        ACTION_NONE,
        ACTION_MENU,
        ACTION_CLOSE,
        ACTION_RAISEICONIFY,
        ACTION_ICONIFY,
        ACTION_MAXIMIZE,
        ACTION_SHADE,
        ACTION_UNDECORATE,
        ACTION_FULLSCREEN,
        ACTION_STICK,
        ACTION_SHOW_WINDOW_LIST,
        ACTION_SHOW_SIMILAR_WINDOW_LIST,
        ACTION_NEXT_WINDOW,
        ACTION_PREV_WINDOW,
        ACTION_NEXT_WINDOW_IN_CURRENT_GROUP,
        ACTION_PREV_WINDOW_IN_CURRENT_GROUP,
        ACTION_NEXT_WINDOW_IN_GROUP,
        ACTION_PREV_WINDOW_IN_GROUP
    };
    
    На прокрутку колесом в конфиге по умолчанию назначено листание окон вперед-назад, т.е. панель задач имеет feel, сложий с привычными табами.
  • Группировать окна можно не только по WM_CLASS, но по рабочему столу, а также по состоянию окна (видимое/свернутое).
  • Параметр GroupThreshold указывает количество однотипных окон, после достижения которого они будут объединенны в одну кнопку. 1 — делать объединяющую кнопку даже если окно не имеет однотипных «товарищей»; 2 — делать объединяющую кнопку, если есть 2 однотипных окна; и т.п. Если значение равно 0, то окна никогда не скрываются под общей кнопкой, а просто сортируются на панели, чтобы были рядом (временно сломано, работает не всегда).
  • Возвращены на законное место опции «Show mapped windows» и «Show iconified windows», которые изначально присутствовали в fbpanel, но были выпилены разработчиками lxde после их форка.
  • Интегрирован стороний патч для lxpanel, предотвращающий растягивание слишком маленькой иконки окна (лучше мелко, но чётко, чем мыло).

Скриншот панели и диалога настроек: http://s010.radikal.ru/i311/1108/83/6edd7c6d6069.png

Также в целом проведена оптимизация отрисовки панели задач и существенно снижены моргания при переключении окон и рабочих мест.

Реализован новый плагин «Кнопка запуска»:

  • Можно назначить команды, запускаемые по ЛКМ, СКМ и ПКМ.
  • Можно задать название и иконку. Оба опциональны.
  • Можно задать всплывающую подсказку для кнопки. Если не указана, автоматически формируется из команд, указанных для ЛКМ, СКМ, ПКМ.

В других частях кода панели:

  • Из lxpanel перенесены несколько фиксов багов, выполненных после точки форка, включая баги для апплета заряда батареи и часов.
  • Оптимизация модуля icon-grid, используемого такими апплетами как панель задач, трей и переключатель рабочих мест.
  • В диалоги конфигурации апплетов добавлена возможность работать с выпадающими списками а также делать выравнивание элементов управления при помощи таблицы.
  • Добавлена возможность запускать lxpanelx в kiosk mode. Включается параметром KioskMode=true в секции General в файле ~/.config/lxpanel/<PROFILE_NAME>/config. При работе в kiosk mode полностью блокируется возможность изменять во время работы любые настройки панели. Это позволит применять lxpanelx в общедоступных компьютерах организаций, школах и т.п.
  • Апплеты на панели теперь выравниваются относительно центральной линии, а не сидят у верхнего края.

Что запланировано:

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

Планы относительно новых функций:

  • Возможность гибко настраивать меню для панели задач (указывать, какие именно пункты отображать, из всех возможных действий для окна).
  • Группировка окон по произвольному свойству окна, указанному в настройках. (Для интеграции с какой-либо внешней утилитой, которая будет выполнять группировку.)
  • Возможность сортировать окна по нескольким параметрам, либо по параметрам, указанным в кустомном свойстве окна. (Аналогично предыдущему, для интеграции с внешним сортировщиком.) А также возможность перетаскивать мышой окна на панели.
  • Аналогично предыдущему, фильтрация списка окон.
  • Возможность указать в настройках собственные команды-действия и назначить их на кнопки мыши или колесо.
  • Возможность читать кустомный список действий из свойств окна и добавлять его в контекстное меню.
  • В переключатель рабочих мест добавить возможность отображать только имена рабочих мест, а не их миниатюры.
  • Добавление в ядро панели модуля регистрации внутренних команд, доступных апплетам, и средства для назначения глобальных хоткеев на эти команды. Команды будут обрабатываться в exec-стиле, т.е. могут иметь произвольный список аргументов (как эти аргументы интерпретировать — зависит от апплета). Например панель задач сможет выполнять забинженные команды типа Alt-1 -> raise_and_focus #1, Alt-2 -> raise_and_focus #2 и т.п. для активации окон хоткеями по их номеру (WM этого делать не может, т.к. не знает, как панель отсортировала окна.)
  • Появление/скрытие панели по хоткею.
  • Апплет «кнопка запуска» планируется научить получать данные от stdout запущенного процесса или из именованного пайпа. Апплет будет парсить поступающие данные и изменять любые из своих параметров (назначенные команды, иконку, заголовок, подпись). Таким образом, это будет интерактивная кнопка, управляемая внешним скриптом в unixway-стиле.
  • Также запланировано добавление апплета, позволяющего выполнять embedding окон на панель.

Теперь, что касается означенных в заголовке «свистелок современного десктопа». Windows 7 давно умеет, а недавно и Unity научилась использовать «умный» док, позволяющий делать «spawn or raise», а также отображать в контекстном меню кнопок разные плюшки, такие как список недавних документов приложения и специфичные для него команды. Также вспомним про двигло zeitgeist и умный журнал действий пользователя в Gnome3, который на том двигле работает. Всё это тяжко ворочается через dbus, скрипя библиотеками, и кое-где подпёрто питоном.

Как всё это счастье _правильно_ интегрировать с lxpanelx, не строгая новых апплетов и не тягая в зависимостях зоопарка левых либ? Ответ прост: пустить данные через иксовые свойства окна.

1. Пусть там нужно показать кнопку, которая будет делать «spawn or raise». Создаём фейковое окно, которое и отображается в таскбаре в роли такой кнопки. При попытке активации этого окна, скрипт запустит настоящее приложение, а фейковое окно спрячет. Когда приложение завершится, скрипт покажет окно обратно. И никаких зависимостей.

2. Теперь пусть для окна (не важно, фейкового или настоящего) надо показать особенное контекстное меню, содержащее специфичные пункты. У окна есть такая замечательная вещь, как WM_CLASS позволяющая идентифицировать его как принадлежащее некоторому приложению. Ну а дальше — просто. Зная приложение, получаем для него это меню и пишем в некоторое свойство окна. Этим будет заниматься соответствующий скрипт. А панель задач, как выше было обозначено в TODO, в скором времени научится читать определенное свойство окна и добавлять пункты оттуда в своё контекстное меню. И опять — никаких зависимостей.

Блин, от запланированных фич дух захватывает. А почему, если не секрет, именно форк? Разрабы LXDE неадекватны?

Axon ★★★★★
()
Ответ на: комментарий от Axon

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

geekless ★★
() автор топика

>Ну а дальше — просто. Зная приложение, получаем для него это меню и пишем в некоторое свойство окна. Этим будет заниматься соответствующий скрипт.

Есть подозрение, что после некоторого времени, потраченного на реализацию и поддержку именно этого пункта, ты поймёшь, зачем люди придумывают непомуки/машинывремени и ворочают ими через dbus, скрипя библиотеками.

AX ★★★★★
()
Ответ на: комментарий от AX

> >Ну а дальше — просто. Зная приложение, получаем для него это меню и пишем в некоторое свойство окна. Этим будет заниматься соответствующий скрипт.

Есть подозрение, что после некоторого времени, потраченного на реализацию и поддержку именно этого пункта, ты поймёшь, зачем люди придумывают непомуки/машинывремени и ворочают ими через dbus, скрипя библиотеками.

Речь шла о том, что скрипт может делать всё, что угодно: хоть читать меню из ~/.mymenu/<WM_CLASS>, хоть скрипеть развесистыми библиотеками через dbus-ы. С точки зрения панели, это действительно просто.

geekless ★★
() автор топика
Ответ на: комментарий от daemonpnz

> Ну тогда этой панельке не будет места на современном десктопе.

«Отпусти меня, чудо-трава».

Ты еще не понял, что вейланд люто, безнадёжно сосет? Прочитай список реализованного и список запланированного. Всё это легко и просто возможно благодаря «дано устаревшим» иксам. И принципиально не реализуемо в вейланде. Фапайте дальше на свои полторы демки под вейландом на «современном десктопе», пока люди просто пользуются линуксом с иксами и решают свои задачи.

geekless ★★
() автор топика

Останется только воскресить gDesklets, и кедогномам тогда придёт капец.

Лёгкий десктоп всегда был нужен. А сейчас это особенно актуально.

Quasar ★★★★★
()
Ответ на: комментарий от daemonpnz

На современном десктопе нет вяленда ;) На будущем - вообще под вопросом. А ежели иксы сразу не выкинут в будущем - зачем делать ставку на вяленд? У него нет серьёзных преимуществ.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Хотел собрать, посмотреть, что собой представляют.

Глянул список зависимостей.

==> gdesklets dependencies:
 - librsvg>=2.8.0 (already installed)
 - desktop-file-utils (already installed)
 - shared-mime-info (already installed)
 - gnome-icon-theme (already installed)
 - xdg-utils (already installed)
 - intltool (already installed)
 - libgtop>=2.10.0 (package found)
 - python2-bonobo (package found)
 - python2-gconf (package found)
 - python2-gnomevfs (package found)
 - gnome-python>=2.12.0 (package found)

Перехотел.

Зато есть какие-то adesklets в репах, уже собранные. Первый раз про них слышу. Поставлю, гляну.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Ты еще не понял, что вейланд люто, безнадёжно сосет?

А почему он, выражаясь вашим жаргоном, должен «сосать»?

Прочитай список реализованного и список запланированного. Всё это легко и просто возможно благодаря «дано устаревшим» иксам. И принципиально не реализуемо в вейланде.

Учитывая то, что сейчас Wayland в стадии глубокой Alpha, получается что ты тут безосновательно лужи газифицируешь.

Фапайте дальше на свои полторы демки под вейландом на «современном десктопе», пока люди просто пользуются линуксом с иксами и решают свои задачи.

То что я не ору «Wayland не нужен!», «Wayland говно!», «Wayland сосёт!» и прочее, а просто внимательно слежу за развитием событий, возлагая некоторые надежды на Wayland, не означает, что я фапаю на него. И наблюдение за развитием Wayland'а мне никак не мешает выполнять задачи теми средствами, которые доступны сейчас.

daemonpnz ★★★★★
()
Ответ на: комментарий от daemonpnz

daemonpnz> А почему он, выражаясь вашим жаргоном, должен «сосать»?

Пощряет кривое написание кода.

daemonpnz> Учитывая то, что сейчас Wayland в стадии глубокой Alpha

Но его уже хотят пихать везде и всюду. Если бы было не так - тихонечко пилили бы и не претендовали бы сразу на замену иксов.

Quasar ★★★★★
()
Ответ на: комментарий от geekless

Увы: http://adesklets.sourceforge.net/

September the 8th, 2010: adesklets is now officially dead.

This project has been mostly inactive since 2007, and it's now time to kill it. Things has been fine for a few years, but changes in the various systems it runs on (in libraries, compilation toolchains and architectures) are catching up, and supporting adesklets has become quite a burden for many downstream maintainers.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Пощряет кривое написание кода.

Это чем же?

Но его уже хотят пихать везде и всюду.

При этом не выкидывая сами Х'ы, а позволяя использовать их одновременно. Что поможет провести тестирование Wayland в условиях близких к «боевым».

daemonpnz ★★★★★
()
Ответ на: комментарий от daemonpnz

daemonpnz> Это чем же?

Начнём с того, что авторы Qt и GTK - несиляторы сетевой архитектуры. Далее: всякие быдлокодеришки вроде автора kwin начинают лезть куда ни попадя. Это создаёт благодатную почву для тотального быдлокодинга.

daemonpnz> При этом не выкидывая сами Х'ы, а позволяя использовать их одновременно.

Лишняя абстракция.

daemonpnz> Что поможет провести тестирование Wayland в условиях близких к «боевым».

Ага. Когда всё работает в иксах, а вяленд так, за компанию. Ну оооочень близко к боевым условиям!

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Лишняя абстракция.

Некоторое время, пока будет тестится Wayland.

Начнём с того, что авторы Qt и GTK - несиляторы сетевой архитектуры

Уже в новости про Wayland говорили, что Х'ы своими примитивами рисуют убогую графику, поэтому тулкитописатели реализуют это через свои реализации, например, cairo, в итоге всё равно будут картинки по сети гоняться. Да и тот же самый raster в Qt быстрее на локальной машине, чем native.

daemonpnz ★★★★★
()
Ответ на: комментарий от Quasar

>Оно оказывается ещё и живое:

Newest addition: 2010-09-07 20:12:50


Не надейтесь.

AlexCones ★★★
()
conflicts=('lxpanel')

Почему? Никак нельзя выделить lxpanelх в отдельный проект, чтоб можно было одновременно держать обе панели?

Оригинальная lxpanel для кнопок запуска приложений позволяет использовать только приложения для которых существуют desktop-файлы. Есть ли возможно в качестве кнопки запуска назначать свою команду (например фм с определенным путем)?

vadik ★★
()

Исправлен ли извечный баг lxpanel, заключающийся в том, что она херово масштабирует значки и поэтому часть значка часто обрезана?

Почему именно lxpanel, а не тот же tint2?

Deleted
()

Сделайте возможность нажатия на кнопки/лаунчеры из самого угла экрана. т.е. на данный момент в lxpanel если нажать в самую нижнюю левую/правую точку, лаунчер не запускается. Эта возможно удобна когда хочется почти не глядя, быстро и не целясь нажать на нужный лаунчер.

doctorx ★★★★
()
Ответ на: комментарий от vadik

conflicts=('lxpanel')

Почему? Никак нельзя выделить lxpanelх в отдельный проект, чтоб можно было одновременно держать обе панели?

Когда в lxpanel появится фичи, которых нет и не планируется в lxpanelx, тогда и выделю. lxpanelx отлично понимает конфиги от lxpanel, следовательно и смысла их держать установленными одновременно нет.

Оригинальная lxpanel для кнопок запуска приложений позволяет использовать только приложения для которых существуют desktop-файлы. Есть ли возможно в качестве кнопки запуска назначать свою команду (например фм с определенным путем)?

Вы невнимательно читали стартовый пост.

Реализован новый плагин «Кнопка запуска»:

Можно назначить команды, запускаемые по ЛКМ, СКМ и ПКМ. Можно задать название и иконку. Оба опциональны. Можно задать всплывающую подсказку для кнопки. Если не указана, автоматически формируется из команд, указанных для ЛКМ, СКМ, ПКМ.

geekless ★★
() автор топика
Ответ на: комментарий от Deleted

> Исправлен ли извечный баг lxpanel, заключающийся в том, что она херово масштабирует значки и поэтому часть значка часто обрезана?

Необходим скриншот и описание, как воспроизвести.

Почему именно lxpanel, а не тот же tint2?

Потому что во всех аспектах первая лучше второй.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Необходим скриншот и описание, как воспроизвести

www.linux.org.ru/gallery/6471705.png
www.linux.org.ru/gallery/4461626.png
www.linux.org.ru/gallery/3683703.png
Да любой скрин из галереи с lxpanel. Тут и воспроизводить нечего, она всегда выглядит как говно в этом плане.

Deleted
()
Ответ на: комментарий от Deleted

Размеры панели указаны в настройках. Размеры иконок там же. Пользователь выставляет кривые размеры, а виновата панель?

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Я ей не пользуюсь, но то, что чуть ли не каждая первая lxpanel в Галерее выглядит как говно, что-то да значит. Те же gnome-panel, xfce4-panel, kicker (или как он там сейчас называется), tint2 в той же Галерее в своем большинстве весьма приличны.

Deleted
()
Ответ на: комментарий от Deleted

> Я ей не пользуюсь

Установи и посмотри. Что языком-то чесать.

но то, что чуть ли не каждая первая lxpanel в Галерее выглядит как говно, что-то да значит


Что значит? Что я должен к каждому пользователю прийти и лично настроить панель? Ты опиши конкретный баг:

1. Какие действия выполнил.
2. К чему они должны привести.
3. К чему они приводят на самом деле.
4. Где и в каких условиях воспроизводится.

или, опять же, конкретный FR: таких-то возможностей не хватает для достижения такого-то результата.

Я не телепат.

Почему-то обсирать программу на форуме у всех хватает ума, а внятно изложить суть проблемы — только у избранных.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Что значит? Что я должен к каждому пользователю прийти и лично настроить панель?

Хорошо, подскажи, как настроить панель, чтобы не было вот такого. Обрати внимание, что многие апплеты не масштабируются сообразно высоте панели, а иконка браузера не имеет отступа от верхнего края (разумеется, изменение размера иконок ничего не дает).

Напомню изначальный вопрос состоял в том, исправлено ли это дерьмо в твоей сборке. На скрине lxpanel 0.5.6.

Deleted
()
Ответ на: комментарий от Deleted

Хорошо, подскажи, как настроить панель, чтобы не было вот такого. Обрати внимание, что многие апплеты не масштабируются сообразно высоте панели, а иконка браузера не имеет отступа от верхнего края (разумеется, изменение размера иконок ничего не дает)

Апплеты на панели теперь выравниваются относительно центральной линии, а не сидят у верхнего края.

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

Нет. Вопрос обрезки краёв иконок не имеет никакого отношения к выравниванию апплетов.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Вопрос обрезки краёв иконок не имеет никакого отношения к выравниванию апплетов.

К выравниванию через задницу - вполне имеет.

Deleted
()
Ответ на: комментарий от geekless

следовательно и смысла их держать установленными одновременно нет.

Для меня имеет смысл. Во-первых можно следить за развитием обеих. Во-вторых - у меня, к примеру, запущено два экземпляра lxpanel. А так была бы одна оригинальная и вторая ваша.

Реализован новый плагин «Кнопка запуска»:

Похоже я просто не правильно понял описание этого плагина. Спасибо за разьяснение.

vadik ★★
()

Вспомнил еще одну свою давнюю хотелку.

Хотелось бы получить аналог гномовской Alacarte (редактор меню гном2). Надеюсь это нужно не только мне.

vadik ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.