В интерфейсе каждой операционной системы существует такое понятие, как область уведомлений.
Там присутствуют различные индикаторы и переключатели, например, индикатор громкости. Большинство индикаторов следуют рекомендациям, но только не Скайп. Таллинские Редмондские программисты настолько суровы, что имеют своё мнение о том, как должны выглядеть их иконки в панели индикаторов. Впрочем, одной строки кода достаточно, чтобы привести их иконки в соответствие.
Проблема «очеловечивания» Скайпа в том, что все иконки зашиты глубоко внутри приложения, хотя звуки для уведомлений доступны всем желающим в папке /usr/share/skype. Нет возможности просто взять и положить нужные иконки в ~/.local/share/icons. Я, как наверное и многие другие пользователи Скайпа, относился к этим явно выбивающемуся из общего стиля иконкам как к неибежному злу.
До тех пор, как на одном из компьютеров, при обновлении с 32-х разрядной системы на 64-х разрядную, Скайп вообще перестал проявляться в панели индикаторов. Небольшое исследование показало, что виной этому отсутствие библиотеки sni-qt, волшебный образом превращиющей QSystemTrayIcon в StatusNotifierItems.
А это значит, что между проприетарным скайпом и панелью индикаторов находится маленькая бибилиотека с открытым кодом.
Скачиваем:
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
Вот и всё. Иконка Скайпа более не мозолит глаза и вполне удовлетворительно выглядит.
Patch файл для желающих попробовать apt-build --patch mono.patch install sni-qt
sni-qt_0.2.6-0ubuntu1_i386.deb для желающих получить всё и сразу.
Автор: pbludov