Как стать автором
Обновить

SkypeTab неделю спустя + негодования в адрес Unity пост

Время на прочтение 4 мин
Количество просмотров 4.1K
Если вы не пользуетесь скайпом для линукса, можете сразу ткнуть сюда и посмотреть на батнегодование.
Для тех, кто не в курсе, что это за SkypeTab такой, поясняю: штука, упаковывающая то недоразумение, что нам подсунули вместо нормального интерфейса, в нечто удобоваримое. Подробнее см. видео и предыдущий пост.

За прошедшую неделю были произведены следующие изменения:
  1. Достигнута совместимость с Unity
  2. Достигнута совместимость с kwin и, похоже, со всеми остальными оконными менеджерами (этот ваш awesome почему-то не хочет разворачивать окно во весь экран, но, думаю, его можно донастроить как надо).
  3. Потеряна и вновь возвращена (спасибо тов. Restorer за то, что нашёл корень проблемы и предоставил фикс) совместимость с Gentoo
  4. Решён ряд проблем, связанных с фокусом ввода
  5. Добавлено переключение табов по Ctrl+Tab/PgDown/PgUp
  6. Добавлена возможность выбрать, какие типы окон встраивать во вкладки
  7. Устранено «мерцание» при открытии новой вкладки
  8. Исправлена тянущаяся ещё с прошлогодних версий проблема производительности, связанная с тем, что статус наличия новых сообщений проверялся опросом X-сервера на предмет _WM_NET_NAME и проверкой наличия * в начале (на третий день Зоркий Глаз увидел, что у сарая нет стены QWidget есть isWindowModified)


Скачать бесплатно без регистрации без СМС



Исходный код.
PPA для Ubuntu. По свидетельствам очевидцев для 6-го Debian-а подходит версия из PPA для Lucid.
Установка на Ubuntu:

sudo add-apt-repository ppa:keks9n/skypetab
sudo apt-get update
sudo apt-get install skypetab-ng


В случае с Debian нужно будет добавить «deb http://ppa.launchpad.net/keks9n/skypetab/ubuntu lucid main» в sources.list и импортнуть ключ репозитория через apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 41A6E3C3.

Внимание: по пока не установленным причинам на некоторых 64-битных версиях дистров (как минимум на Ubuntu 10.04) нормально не грузится интеграция с GTKшной темой. В результате случается падение при открытии разговора. Лечится установкой другой темы оформления в настройках скайпа.

Тов. Ignotus клятвенно пообещал собрать RPM-ки (для предыдущей версии их делал именно он), но по его словам компилятор на федоровском сервере при попытке переварить SkypeTab падает с Internal error. Mono-вский компилер я своим кодом ронял три раза, студийный лишь однажды, когда писал на VB6 тот вообще разваливался с незавидной регулярностью, теперь же коллекцию пополнил и GCC. Не везёт мне с компиляторами, в общем. У меня на OBS всё замечательно собралось.
Fedora, OpenSUSE


Много букв о Unity и Canonical


Введение

В тот забавный момент, когда они начали пихать Unity в выходящие версии Ubuntu, у меня была вполне рабочая связка из CairoDock и AWN (ее можно увидеть на видео по ссылке выше), и я не понял, зачем мне нужно то же самое, но тормозное, глючное и при падении тащащее за собой в небытие compiz поделие. В результате при обновлении мне пришлось потратить 15 минут на то, чтобы вычистить Unity из системы, а все связанные с ним проблемы обошли меня стороной. SkypeTab же всегда разрабатывался на этом соответствующем стандартам X11 окружении (Cairo-Dock их местами даже лучше поддерживает, чем панель Xfce) и с его работой особых проблем не было. Теперь же мне пришлось столкнуться с таким забавным развлечением как «портирование на Unity». Никаких приятных эмоций я при этом, поверьте, не испытал.

Сравнительный анализ трея и indicate

Начнем издалека. Не так давно мне тут один персонаж впаривал, что стандарт трея X11 устарел и не нужен, а индикаторы — наше все. Давайте посмотрим, как работают области уведомлений в X11 и в Unity.

Для того, чтобы добавить иконку в стандартный трей вам надо создать окно, найти трей (около 2 строк кода) и пнуть его, чтобы он увидел это окно. После чего он его в себя встраивает, вам приходят все сообщения о движении мыши, а на самой иконке можно хоть фильм показывать, хоть через OpenGl 3D-анимацию крутить. Просто, прозрачно, функционально, работает уже много лет.

В Unity используется некая система под названием indicate, работающая через D-Bus (можете сказать «пока» значкам в области уведомлений при входе через VNC под тем же юзером). Правый клик (о движении мыши вообще молчу) поймать возможности нет, сложную анимацию отобразить тоже нельзя. Прогресс просто налицо. Синдром NIH (Not Invented Here) в терминальной стадии. Из плюсов можно отметить сделанное на ней messaging menu, которое при отсутствии мультипротокольного мессенджера бывает весьма полезно в хозяйстве.

О том как каноникал совместимость труба шатал

Естественно, разработчики долгое время (индикаторы появились довольно давно) их игнорировали. Каноникал это задевало и они решили отключить трей вообще, однако, поскольку разработчики теперь начали игнорировать не только индикаторы, но и несовместимость с Ubuntu в целом (и они правы, почему должен переписываться софт, если кому-то приспичило сделать свой трей, причём без преферанса и поэтесс?), а наложить свои кривые патчи на проприетарные штуки типа Skype несколько проблематично, пришлось изобрести костыль в виде белого списка приложений, для которых трей все-таки был. Однако, данный костыль проблему не решал. Всё равно ведь использовался трей. Тогда кому-то пришёл в голову просто гениальный план: а давайте сделаем патч на Qt, чтобы QSystemTrayIcon показывал иконку не в трее, а как индикатор, а левый клик будем эмулировать через дополнительный пункт меню. Сказано — сделано, и вот уже искомые патчи на Qt готовы и вошли в дистрибутив. В недавно вышедший Qt 4.8 они, естественно, не вошли, да и в грядущий Qt 4.9 тоже не войдут, т. к. разработчикам Qt тоже не понятно, почему в их коде должны появляться костыли из-за того, что каноникал у себя нечто такое ни с чем не совместимое соорудило.

Заключение

Вот во всём этом мне пришлось разбираться, чтобы понять, почему на Unity у меня сломалось разворачивание из трея. Поскольку выяснилось, что у скайпа иконки в трее теперь совсем нет, пришлось городить перехват QObject::connect, что стабильности работы не прибавило.

Скажу немного о интеграции SkypeTab с messaging menu. Откладывается она по той простой причине, что интерфейсы D-Bus, через которые работает indicate, документированы чуть менее чем никак, а сама libindicate упакована так, что о поддержке пропагандируемого самой же Canonical Multiarch нет и речи, ведь стандарты существуют чтобы их нарушать. Т. е. нормально на 64-битных системах в 32-битном коде данную библиотеку использовать нельзя. Никак. Я, конечно, что-нибудь придумаю, и оно даже будет работать. Примерно до выхода 12.04. Ибо кто знает, какие ещё «прогрессивные» изменения нас ожидают.
Теги:
Хабы:
+71
Комментарии 64
Комментарии Комментарии 64

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн