Вкладки для линуксового скайпа. А вдруг я ещё не всем с ними надоел?

    Если вы не пользуетесь скайпом для линукса, можете смело листать хабр дальше.

    Для тех, кто не знаком с эпопеей переписываний с нуля данной утилиты, небольшое видео того, как это работает:

    Для остальных же сообщаю, что оно переписано уже в четвёртый раз, теперь на C++ и Qt.
    О том, что поменялось, и где всё это счастье взять, можно узнать под катом.


    Предыдущая версия была неплоха, но имела ряд принципиально неустранимых недостатоков:
    • периодически заставляла Xorg кушать 100% CPU
    • не работал drag&drop файлов в окно чата
    • периодически табы просто напросто не открывались
    • иногда случались потери фокуса ввода, из-за чего приходилось сворачивать окно или переключать вкладку

    Неустранимыми они были по той простой причине, что утилита работает в отдельном процессе и издевается над окнами скайпа через X11. Для исправления недостатков было необходимо подгружать свою библиотеку в адресное пространство скайпа, что означает отказ от использования C#, т. к. таскать за собой 32-битный моновский рантайм и 32-битные биндинги к Gtk на 64-битных системах было бы весьма странно. Вспоминать C++ было очень лениво, а потому всё это оказалось отложенным в долгий ящик.
    Но тут наступила середина зимы, время, когда студент делает что угодно, кроме того что нужно, а потому идея в очередной раз взять и переписать таки воплотилась в жизнь.

    На текущий момент оно малость сыровато, но уже юзабельно.

    Пакет для Ubuntu можно раздобыть у меня в PPA.
    Репозиторий для Debian тут. GPG-ключ репозитория можно найти по той же ссылке, добавлять в sources.list строкой
    deb http://download.opensuse.org/repositories/home:/keks-n/Debian_6.0/ ./

    Буду рад, если кто-нибудь соберёт RPMки. Пока можете натравить alien на deb-пакет, благо зависимостей в нём не прописано никаких, ибо они ровно те же, что и у скайпа (XLib, QtCore, QtGui).
    Перед установкой не помешает вручную удалить старую версию.

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

    Исходники можно раздобыть тут. Перед сборкой нужно запустить «qmake -spec linux-g++-32».

    Специально для желающих открыть мне глаза на возможности KWin сообщаю: меня они не устраивают, почему — описано в предыдущих постах.

    UPD:
    Спасибо за багрепорты. Пока что вот небольшой список найденных багов:
    1) для получения фокуса ввода сообщения бывает нужно нажать чуть выше поля набора.
    2) несовместимость с sni-qt (костыль для UИITY, издевающийся над кутэшным классом иконки в трее).
    3) некоторые таскбары не реагируют на изменение иконки, а UrgencyHint я выставить забыл
    4) Иногда содержимое таба не ресайзится
    5) Иногда вообще не открывает таб
    6) Какие-то мутные проблемы с KWin
    7) Почему-то нормально не работает на генту и арче. Мистика.

    UPD: Поправил (вроде бы) проблемы с Unity и пару багов. Обновляйтесь.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 104

      +1
      зависимостей в нём не прописано никаких, ибо они ровно те же, что и у скайпа (XLib, QtCore, QtGui)

      Ну, так и поставить Skype в зависимость, для полноты картины.
        0
        Будут проблемы из-за убунтовского MultiArch.
          0
          Разве это не обоходится тем, что для oneiric собирается только под i386 архитектуру? Тогда он подтянет за собой сам Skype, который тоже только i386.
            0
            Предлагаете держать отдельно две сборки для oneiric и для всего остального?
              0
              Launchpad не позволяет не публиковать сборку для amd64?
                +1
                Т. е. вы предлагаете после отправки на сборку через dput ждать момента, когда оно таки скомпилиться (с момента отправки может пройти более суток), а потом руками скопировать бинарники в natty (чтобы оттуда же ставили люди с Debian), а для oneiric скрыть билд для amd64?
        +1
        Это какая убунту и какое окружение если не секрет?
          +1
          Ubuntu 11.10, удалено всё связанное с Unity, слева висят CairoDock (значки программ) и AWN (трей, часы).
            –2
            Кстати да, идея. Unity какой-то сырой и подтупливает. Поставить классический гном2 и убрать панель налево.
              0
              Только недавно перечитывал предыдущую тему о табах и хотел спросить по поводу трея,
            0
            Спасибо! Именно этого мне и не хватало в Skype под Ubuntu!
              0
              А профикшена ли такая вещь:
              Если скайп на другом рабочем столе и приходит сообщение которое отображается на иконке скайпа, то если долбить в иконку в трее окно с скайпом не открывается. Я спасаюсь доки, но иногда не замечаю и пропускаю сообщения :(
                +14
                Автор! Если все работает так клево как на этом видео, то… БЛАГОСЛОВИ ТЕБЯ ГОСПОДЬ!
                  0
                  У меня около суток не особо интенсивного использования полёт нормальный. Там, вероятно, есть несколько косяков, но за счёт возможности полного контроля за окнами и Qtшными виджетами скайпа их можно будет починить.
                    +1
                    Да, есть косяки, но их я готов терпеть ради вкладок. Надеюсь со временем у Вас выйдет их исправить. А вот то что в таком режиме перестает работать пункт «активировать» в скайповском апплете (заюзан sni-qt) совсем не радует.
                    i.imgur.com/JQcuH.png
                      0
                      Только что поставил, «активировать» работает отлично.
                        0
                        Ну так и прошло уже больше двух недель.
                  0
                  Супер, а я было перевел предыдущую версию на Python, чтобы интегрировать со скриптом для app-indicator, написанным моим другом. Я ничего так и не усовершенствовал, хотя изначально намеревался.

                  Но то, что я сейчас вижу на видео, очень впечатляет! Попробую поставить и поиграться. Спасибо!
                    +1
                    Предлагаете интегрировать с libappindicator? В принципе, можно попробовать, ничего сложного быть не должно.
                      0
                      Ну да, только я как незнакомый с C#, на котором была написана предыдущая версия, решил не Магомета к горе передвинуть, а гору к Магомету :)
                      0
                      Поигрался. Всё почти замечательно. Мелкие замечания:
                      — не очень удобно открывать главное окно ресайзом (я сначала и не понял как его открыть, пока видео не пересмотрел)
                      — когда окно скайп-таба закрыто, его нельзя открыть кнопкой Активировать в меню скайпа из трея
                      — однажды слуилось так, что при развернутом на весь экран окне скайптаба, вкладка чата открылась стандартного размера (остальное серое)
                        0
                        когда окно скайп-таба закрыто, его нельзя открыть кнопкой Активировать в меню скайпа из трея
                        У меня такой штуки нет, очень похоже на какой-то костыль для Unity.
                        однажды слуилось так, что при развернутом на весь экран окне скайптаба, вкладка чата открылась стандартного размера (остальное серое)
                        Т. е. оно не отресайзилось как положено?
                        не очень удобно открывать главное окно ресайзом (я сначала и не понял как его открыть, пока видео не пересмотрел
                        Вообще говоря оно открывается кликом на иконку в трее, которой в юнити, похоже, нет.
                          0
                          > Когда окно скайп-таба закрыто, его нельзя открыть кнопкой Активировать в меню скайпа из трея

                          Это же то, о чем я выше писал. Это костыль не для юнити, а для appindicator-applet, sni-qt называется. Пункт «Активировать» по всей видимости вызывает тоже действие что и обычный (или двойной? уже не помню) клик по иконке в трее.
                          Если собираетесь пилить интеграцию с юнити, то прийдется и это пофиксить.
                            0
                            Перекачайте, сделано уже. Суть в том, что предыдущая реализация рассчитывала, что иконка в трее — это окно, встроенное в этот самый трей через XEmbed. Из-за костыля же мне пришлось обратиться к технике перехвата вызовов методов классов, а именно — QObject::connect.
                    –1
                    Есть еще лайт решение для пользователей 4х кед, можно срупировать все чаты или вообще все окна скайпа в одно окно с вкладками с помощью kwin
                      +2
                      Пост не читай@Сразу отвечай
                      Специально для желающих открыть мне глаза на возможности KWin сообщаю: меня они не устраивают, почему — описано в предыдущих постах.
                      По делу: предложенная схема не даёт возможности получить в таскбаре одно окно, оповещающее о наличии новых сообщений в любой вкладке.
                        –3
                        Пост прочитал, мыслишки ваши, к сожалению, читать возможности не имею.
                        Кстати в кедах на онерике вкладки открываются без какого-либо содержимого.
                          0
                          Тестировалось только на compiz и metacity. Посмотрим, что там с KWin-ом.
                        0
                        а еще есть kopete
                        которое все это умеет делать со скайпом.
                          0
                          А где в копыте нормальная поддержка групповых чатов и редактирование сообщений?
                            0
                            Подключаем аккаунты скайп, жабер, аськи. Только скайп работает через прослойку(по этому постоянно запущен), но интегрируется в общий чат с аськами, жаберами и в общий лоток контактов тоже.
                              –1
                              ВЫ о чем?
                              Груповые чаты в копыте есть уже года три.
                              А что такое редактирование сообщений я вообще не очень понял.
                                +1
                                Груповые чаты в копыте есть уже года три.
                                Я о поддержке skype-specific-фич.
                                А что такое редактирование сообщений я вообще не очень понял.
                                Скайп позволяет редактировать недавно отправленные сообщения, а так же удалять их. Копыто — нет.
                                  +1
                                  Любопытно. Никогда не знал что в скайпе это есть.
                                  А какова практическая польза от редактирования отправленного сообщения?

                                  Кстати, в Linux версии скайпа я так и не понял как можно отредактировать отправленное сообщение.
                                    0
                                    Стрелка вверх. Часто пользуюсь этой опцией. Сморозил что-то не то в корпоративный общий чат — удалил, ошибся — исправил.
                                      0
                                      Действительно. Призабавная штука.
                          0
                          Теперь чаты eRepublik будут побеждены!
                            +3
                            А вы в неё всё ещё играете?
                              0
                              Захожу иногда. На видео увидел много известных ников в скайпе.
                                0
                                Кстати, а не вы ли случаем пилите игру, которая заставит ерепку нервно курить? :)
                              0
                              Ааа, you made my day!

                              Обнаружил такие баги на Ubuntu 11.10, Skype 2.2.0.35:

                              1. Контакт-лист настроен на открытие диалога по двойному клику на контакте. Открываю скайп, дважды кликаю по контакту. Список закрывается, диалог не открывается. Заново открываю список, дважды кликаю на контакте (том же или другом — не важно), диалог открывается.

                              2. Закрываю окно. Кликаю по иконке на панели, которая на самом деле апплет, в меню скайпа выбираю «Активировать». Окно не появляется. Единственный способ снова увидеть окно — меню Recent chats.

                              3. Открыто несколько табов, получаю сообщение от контакта, таб которого неактивен. Единственная индикация — меняется иконка таба, если таб не виден, то догадаться о получении сообщения сложно. Хочется индикацию для иконки приложения в доке.

                              За себя скажу следующее: SkypeTab'ом буду пользоваться несмотря на эти баги, ибо маст хэв.
                                0
                                Контакт-лист настроен на открытие диалога по двойному клику на контакте. Открываю скайп, дважды кликаю по контакту. Список закрывается, диалог не открывается. Заново открываю список, дважды кликаю на контакте (том же или другом — не важно), диалог открывается.
                                А видео всего этого действа можно?
                                Хочется индикацию для иконки приложения в доке.
                                Она, вообще говоря, должна быть.
                                Кликаю по иконке на панели, которая на самом деле апплет
                                Очень похоже на то, что данные проблемы связаны с использованием UИITY, ибо с обычным треем X11 (тот, который работает через XEmbed) и чистым компизом я ничего подобного не наблюдаю.
                                –3
                                ну не знаю, лучше он от этого работать не станет, да и функциональности не прибавилось…
                                  +2
                                  лучше он от этого работать не станет

                                  Скажите, вы читали текст поста? Тот, который после видео.
                                  0
                                  Респект! Очень удобно сделано! Я бы пользовался но люблю мультипротокольные клиенты.
                                    +1
                                    Ввиду проблем с поделием негров Шаттлворта (Unity) возникает 2 вопроса:
                                    1) знает ли кто-нибудь способ запустить его в чём-то типа Xephyr?
                                    2) есть ли способ научить QtCreator запускать отладчик в chroot?
                                    Уж очень не хочется виртуалку для этого заводить.
                                    • UFO just landed and posted this here
                                    • UFO just landed and posted this here
                                        0
                                        Подтверждаю баг
                                          +1
                                          Тоже подтверждаю
                                          + еще хотелось бы переключение между табами по ctrl+tab/ctr+shift+tab
                                          + если это возможно звонки тоже в табы загонять.
                                            +1
                                            + закрытие вкладок по нажатию средней кнопки мыши
                                            +1
                                            Подтверждаю.
                                            + хочется иметь возможность перенести контакт-лист направо от табов.
                                            0
                                            Спасибо, добрый человек и на словах, и на карме :)
                                            Посмотрю как оно себя теперь ведет, а то очень не хватает вкладок, а прежний вариант был глючным.
                                              0
                                              Вот эта версия под фон мне кажется более подходящей: www.youtube.com/watch?v=fGZM-HyytgI
                                                +1
                                                не работает:

                                                skype: symbol lookup error: /usr/lib/libskypetab-ng.so: undefined symbol: _ZN9QListData11detach_growEPii

                                                система linux debian squeeze 2.6.32-5-686
                                                в качестве оконного манагера awesome.
                                                  0
                                                  Не может найти QListData::detach_grow(int*, int). Попробуйте самостоятельно скомпилировать.
                                                    0
                                                    Собрал, запустил. Запустился обычный скайп.
                                                    • UFO just landed and posted this here
                                                        0
                                                        Не, не помогает.
                                                        зы. Тоже awesome + debian (ядро только посвежее: 3.1.0-1-amd64).
                                                          0
                                                          я вручную скомпилировал и запустилось — только через 10 минут наглухо повисло, пришлось через kill срубать. Сейчас попробую из репозитория поставить…
                                                            0
                                                            Да я то как раз из него и ставил.
                                                              0
                                                              В ходе общения с kekekeks, выяснилось, что несчастного символа _ZN9QListData11detach_growEPii в дебиановской ia32-libs-gtk просто нету. И на дебианах заводится версия от lucid'a, которая не требует этого символа. Так что прописывайте ppa от lucid'a и всё заработает.
                                                                0
                                                                #deb download.opensuse.org/repositories/home:/keks-n/Debian_6.0/ ./

                                                                мне помог вот этот репозиторий -
                                                    0
                                                    Arch x86_64 + OpenBox
                                                    Для того чтобы получить фокус на поле ввода сообщения, после перехода из другого места, приходится кликать на поле чата.
                                                    Например, переключаясь между табами я не могу сразу вводить текст с клавиатуры, нужно нажать на поле чата и затем только вводить текст. Клик на само поле чата не спасает
                                                      0
                                                      Прикольно, оно работает!
                                                      От скайпа долго ждал, от майкрософта точно не дождёмся. Спасибо больше!

                                                      Ubuntu 11.04, gnome 2.32
                                                        0
                                                        gentoo + xfce + compiz — полёт нормальный
                                                          0
                                                          Не компилируется pastebin.com/YR0KS3fJ
                                                            0
                                                            Компилироваться-то оно компилируется, но вот с 64-битными либами линковаться отказывается. Нужны 32-битные.
                                                              0
                                                              Не подскажите какие параметры могут помочь?
                                                                0
                                                                Если не указывать ключи -lQtCore и -lQtGui то оно компилится и даже запускается… но работает как прежний скайп запускаясь в новых окнах :(
                                                                  0
                                                                  А вы как запускаете? Прямо из дерева исходников? Если так, то и не заработает, LD_PRELOAD нужен либо абсолютный путь, либо либа лежащая по путям поиска.
                                                                  0
                                                                  Таки компильнул, может кому поможет:

                                                                  После qmake -spec linux-g++-32, cделал обычный make, выползли те же ошибки компилятора. Выполнил последнюю строку,
                                                                  заменив lib64 на lib и убрал две опции -lQtGui и -lQtCore.

                                                                  Вышло так:

                                                                  g++ -m32 -Wl,-O1 -shared -Wl,-soname,libskypetab-ng.so.0 -o libskypetab-ng.so.0.4.6 mainwindow.o x11int.o stwindowcontainer.o x11.o skypetab.o stwatcher.o contactlistcontainer.o focusguard.o aboutdialog.o qtintercept.o settingsdialog.o moc_mainwindow.o moc_stwindowcontainer.o moc_skypetab.o moc_stwatcher.o moc_contactlistcontainer.o moc_focusguard.o moc_aboutdialog.o moc_settingsdialog.o -L/usr/lib -L/usr/lib -L/usr/X11R6/lib -lpthread

                                                                  Ну и make install
                                                                –2
                                                                в КДЕ есть такой мессенджер kopete
                                                                он умеет работать как надстройка над скайпом, мне трудно сказать насколько функционал предлагаемого решения уже или шире kopete, но, во всяком случае, там есть и вкладки и группы, и уведомления.

                                                                Очень удобно, особенно для тех, кто использует kopete и как джабер, и как icq.
                                                                  +1
                                                                  Автор ты большой молодец! Я хочу тебе дать чуть-чуть денег в знак признательности, напиши куда можно это сделать.
                                                                    0
                                                                    Под XMonad не работает никак. Рисует пустое окно, при открытии вкладки контакта появляется только заголовок закладки, который пропадает через несколько секунд.
                                                                      0
                                                                      background by 2advanced.com?
                                                                        0
                                                                        не понимаю, зачем так заострять внимание на вкладках. Гораздо большей проблемой в скайпе является выбор звукового устройства. С ним столько шаманства в настройках PulseAudio… Было бы здорово если бы можно было выбирать устройство как на форточках :)
                                                                          +1
                                                                          Понятия не имею, о чём Вы, у меня работает из коробки. Но рекомендую посмотреть в сторону pavucontrol.
                                                                          0
                                                                          Спасибо вам огромное. Просто большущее.
                                                                          До этого пользовался чьим-то пакетом skypetab, но там всё выглядело совершенно иначе и не так красиво.
                                                                          Или тоже ваш? :)
                                                                            0
                                                                            Да, действительно — это вы и есть.
                                                                            Невероятные улучшения.
                                                                            –2
                                                                            Что народ только не делает, лишь бы не использовать нормальный оконный менеджер.
                                                                              0
                                                                              Добавлю подробностей насчет поведения его с kwin:

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

                                                                              Ось: kubuntu 11.10 amd64, kde 4.7.2, skype 2.2.0.35

                                                                              И вопрос: как научить skypetab запускать собранный статически skype, лежащий в произвольной директории? Пробовал симлинк на /usr/bin/skype делать, но в этом случае он запускается без использования skypetab.
                                                                                0
                                                                                было бы здорово переключатся между табами горячими клавишами alt+1, alt+2… и ctrl + tab
                                                                                спасибо
                                                                                  0
                                                                                  Поставь ion3 и переключайся. Там, правда, переход по вкладкам делается более комплексной комбинацией клавиш, но тоже с цифрой. И эти цифры, между прочим, в момент набора высвечиваются на вкладках!
                                                                                  0
                                                                                  Выглядит круто, но когда закрываешь это общее окно, оно исчезает, а сам скайп продолжает работать (висит в процессах, но на него не переключиться). Повторный запуск skypetab запускает еще один инстанс скайпа.

                                                                                  ubuntu 11.10, unity
                                                                                    0
                                                                                    Если внимательно посмотреть на область уведомлений, то там можно заметить иконку скайпа. Если же UИITY иконку всё же не показывает, можно попробовать поставить пакет sni-qt.
                                                                                    0
                                                                                    Несколько дней просидел на Skypetab. Более всего мешает то, что когда выделяешь окно, курсор автоматически не переходит в поле ввода. А так — супер. К сожалению, эта фича для меня критична.
                                                                                      0
                                                                                      Я пока разбираюсь с периодическими падениями, до этого тоже руки дойдут в скором времени.
                                                                                        0
                                                                                        В смысле, не периодическими, а возникающими при некоторых конфигурациях.
                                                                                      0
                                                                                      Идея прекрасная, но у меня на Linux Mint 11 почему-то не работает. Поставил из репозитория.
                                                                                      Открывается нормально, при открытии чата рушится. Пробовал раз 5 в разных вариациях. Включен Compiz, Gnome 2.32. Есть идеи? Могу скинуть лог.
                                                                                        0
                                                                                        Я уже что-то такое наблюдаю в виртуалке с Ubuntu 11.04. Судя по подвисанию перед падением, там где-то случилась бесконечная рекурсия.
                                                                                          0
                                                                                          на самом деле, он не подвисает перед падением, а падает сразу.
                                                                                          вообще в логе много всего, а но при падении говорит следующее:
                                                                                          Skype::ChatWindow is under controlAborted
                                                                                            0
                                                                                            Да, пишет оно то же самое, просто на виртуалке подвисание заметно. Сейчас отладочные символы докачаются и посмотрим.
                                                                                              0
                                                                                              Вы таки будете смеяться, но на 32-битной версии Ubuntu Natty это не проявляется. Где взять символы для библиотек из ia32-libs я не имею ни малейшего представления.
                                                                                                0
                                                                                                Вы же говорили, что видели сие явление…
                                                                                                а у меня да, стоит 64-битная.
                                                                                                  0
                                                                                                  Я его наблюдал на 64-битной виртуалке. Сейчас не наблюдаю. Скажите, у вас в консоль сыпятся ошибки типа

                                                                                                  (:29237): Gtk-WARNING **: Error loading theme icon 'window-close' for stock: Unable to load image-loading module: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so: /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so: wrong ELF class: ELFCLASS64

                                                                                                  (:29237): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
                                                                                                    0
                                                                                                    Ага, под рутом не падает, под юзером падает. По ходу, дело в переменных окружения каких-то.
                                                                                                      0
                                                                                                      Да, с env -i запускается и работает как положено.
                                                                                                      0
                                                                                                      Так, я нашёл выход. Идёте в настройки скайпа и ставите темой оформления что-то иное нежели GTK+ и Desktop Settings. Падение магическим образом пропадает.
                                                                                                        0
                                                                                                        К сожалению, я уже на работе, вечером попробую — отпишусь. Спасибо.
                                                                                                          0
                                                                                                          да, так работает, спасибо.
                                                                                                0
                                                                                                Можно вопрос не по теме? А что у вас в левом нижнем углу за дополнение с иконками и часами?

                                                                                              Only users with full accounts can post comments. Log in, please.