Skype в стиле Unity

В интерфейсе каждой операционной системы существует такое понятие, как область уведомлений.

Там присутствуют различные индикаторы и переключатели, например, индикатор громкости. Большинство индикаторов следуют рекомендациям, но только не Skype. Таллинские Редмондские программисты настолько суровы, что имеют своё мнение о том, как должны выглядеть их иконки в панели индикаторов. Впрочем, одной строки кода достаточно, чтобы привести их иконки в соответствие.

Проблема "очеловечивания" Skype в том, что все иконки зашиты глубоко внутри приложения, хотя звуки для уведомлений доступны всем желающим в папке /usr/share/skype. Нет возможности просто взять и положить нужные иконки в ~/.local/share/icons. Я, как наверное и многие другие пользователи Skype, относился к этим явно выбивающемуся из общего стиля иконкам как к неиpбежному злу.

До тех пор, как на одном из компьютеров, при обновлении с 32-х разрядной системы на 64-х разрядную, Skype вообще перестал проявляться в панели индикаторов. Небольшое исследование показало, что виной этому отсутствие библиотеки sni-qt, волшебный образом превращиющей QSystemTrayIcon в StatusNotifierItems.

А это значит, что между проприетарным Skype и панелью индикаторов находится маленькая бибилиотека с открытым кодом.

Скачиваем:

apt-get source sni-qt && cd sni-qt*

В каталоге src нас ждут два десятка файлов, в числе которых iconcache.cpp

Поиск слова "save" даёт ровно один результат:

        QPixmap pix = icon.pixmap(size);
        QString dirName = QString("hicolor/%1x%1/apps").arg(size.width());
        if (!dir.exists(dirName)) {
            if (!dir.mkpath(dirName)) {
                qWarning("Could not create `%s` dir in `%s`",
                    qPrintable(m_themePath), qPrintable(dirName));
                continue;
            }
        }
        QString pixPath = QString("%1/%2/%3.png")
            .arg(m_themePath).arg(dirName).arg(key);
        if (!pix.save(pixPath, "png")) {
            qWarning("Could not save icon as `%s`", qPrintable(pixPath));
        }

Всё, что нужно сделать, это заменить

-        QPixmap pix = icon.pixmap(size);

на

+        QPixmap pix = icon.pixmap(size, QIcon::Disabled);

Это превратит все цветные иконки в серые. Примерно такие, какие нужны для темы humanity-dark.

Для humanity, темы по-умолчанию в версиях Ubuntu до 10.04, нужно перевести палитру на тёмную сторону силы.

Собираем и запускаем:

sudo apt-get build-dep sni-qt
mkdir build && cmake --build=build .
make && sudo make install

Вот и всё. Иконка Skype более не мозолит глаза и вполне удовлетворительно выглядит.

Ищите хорошую букмекерскую контору? Я рекомендую mybet! Почитать о ней можно по адресу по адресу www.onlinebk.ru.

funny_spam
2013-06-23 19:32:00
ох какое вам спасибо)
Роман
2013-06-24 16:58:00
бессмысленно
Ахмед Ахмедов
2013-06-26 11:52:00
супер!!!!!!
Oleksa Stasevych
2013-06-27 04:38:00
і як тепер відрізнити статус?
Kyziuavka
2013-06-29 23:04:00
У зоопарку: -Як як? -Як як? Як як як.
AiD
2015-07-15 17:59:00
А где находится каталог "src"? Если в каталоге "usr", то там у меня нет ни каких файлов, только каталоги.
AiD
2015-07-15 18:11:00
Каталог нашёл, отредактировал файл iconcache.cpp, при вводе команды " make && sudo make install" выдаёт: "make: *** Не заданы цели и не найден make-файл. Останов."