
В интерфейсе каждой операционной системы существует такое понятие, как область уведомлений.
Там присутствуют различные индикаторы и переключатели, например, индикатор громкости. Большинство индикаторов следуют рекомендациям, но только не Skype. Таллинские Редмондские программисты настолько суровы, что имеют своё мнение о том, как должны выглядеть их иконки в панели индикаторов. Впрочем, одной строки кода достаточно, чтобы привести их иконки в соответствие.
Проблема "очеловечивания" Skype в том, что все иконки зашиты глубоко внутри приложения, хотя звуки для уведомлений доступны всем желающим в папке /usr/share/skype. Нет возможности просто взять и положить нужные иконки в ~/.local/share/icons. Я, как наверное и многие другие пользователи Skype, относился к этим явно выбивающемуся из общего стиля иконкам как к неиpбежному злу.
До тех пор, как на одном из компьютеров, при обновлении с 32-х разрядной системы на 64-х разрядную, Skype вообще перестал проявляться в панели индикаторов. Небольшое исследование показало, что виной этому отсутствие библиотеки sni-qt, волшебный образом превращиющей QSystemTrayIcon в StatusNotifierItems.
А это значит, что между проприетарным Skype и панелью индикаторов находится маленькая бибилиотека с открытым кодом.
Скачиваем:
1 |
apt-get source sni-qt && cd sni-qt* |
В каталоге src нас ждут два десятка файлов, в числе которых iconcache.cpp
Поиск слова "save" даёт ровно один результат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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)); } |
Всё, что нужно сделать, это заменить
1 |
- QPixmap pix = icon.pixmap(size); |
на
1 |
+ QPixmap pix = icon.pixmap(size, QIcon::Disabled); |
Это превратит все цветные иконки в серые. Примерно такие, какие нужны для темы humanity-dark.
Для humanity, темы по-умолчанию в версиях Ubuntu до 10.04, нужно перевести палитру на тёмную сторону силы.
Собираем и запускаем:
1 2 3 |
sudo apt-get build-dep sni-qt mkdir build && cmake --build=build . make && sudo make install |
Вот и всё. Иконка Skype более не мозолит глаза и вполне удовлетворительно выглядит.
Ищите хорошую букмекерскую контору? Я рекомендую mybet! Почитать о ней можно по адресу по адресу www.onlinebk.ru.