- PVSM.RU - https://www.pvsm.ru -
В интерфейсе каждой операционной системы существует такое понятие, как область уведомлений [1].
Там присутствуют различные индикаторы и переключатели, например, индикатор громкости. Большинство индикаторов следуют рекомендациям [2], но только не Скайп. Таллинские Редмондские программисты настолько суровы, что имеют своё мнение о том, как должны выглядеть их иконки в панели индикаторов. Впрочем, одной строки кода достаточно, чтобы привести их иконки в соответствие.
Проблема «очеловечивания» Скайпа в том, что все иконки зашиты глубоко внутри приложения, хотя звуки для уведомлений доступны всем желающим в папке /usr/share/skype. Нет возможности просто взять и положить нужные иконки в ~/.local/share/icons. Я, как наверное и многие другие пользователи Скайпа, относился к этим явно выбивающемуся из общего стиля иконкам как к неибежному злу.
До тех пор, как на одном из компьютеров, при обновлении с 32-х разрядной системы на 64-х разрядную, Скайп вообще перестал проявляться в панели индикаторов. Небольшое исследование показало, что виной этому отсутствие библиотеки sni-qt [3], волшебный образом превращиющей QSystemTrayIcon в StatusNotifierItems.
А это значит, что между проприетарным скайпом и панелью индикаторов находится маленькая бибилиотека с открытым кодом.
Скачиваем:
apt-get source sni-qt && cd sni-qt*
В каталоге src нас ждут два десятка файлов, в числе которых iconcache.cpp [4]
Поиск слова «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 файл [5] для желающих попробовать apt-build --patch mono.patch install sni-qt
sni-qt_0.2.6-0ubuntu1_i386.deb [6] для желающих получить всё и сразу.
Автор: pbludov
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/skype/35792
Ссылки в тексте:
[1] область уведомлений: http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9
[2] рекомендациям: https://wiki.ubuntu.com/Artwork/HumanityIcons/Guidelines
[3] sni-qt: https://launchpad.net/sni-qt
[4] iconcache.cpp: http://bazaar.launchpad.net/~agateau/sni-qt/trunk/view/head:/src/iconcache.cpp
[5] Patch файл: http://platform.altergeo.ru/platform/dl/pb/mono.patch
[6] sni-qt_0.2.6-0ubuntu1_i386.deb: http://platform.altergeo.ru/platform/dl/pb/sni-qt_0.2.6-0ubuntu1_i386.deb
[7] Источник: http://habrahabr.ru/post/181934/
Нажмите здесь для печати.