понедельник, 7 ноября 2016 г.

Фиксим значки в трее (обновлено)

Значки в трее портят весь стиль? Тогда эта инструкция для вас...




Нашел очень интересный скрипт Hardcode-Tray, который фиксит вшитые в бинарник значки для трея. А так же способен заменять те значки, которые прописаны с абсолютным путём. Скрипт поддерживает приложения Qt, Electron и другие.
Устанавливаем сам скрипт и патченный sni-qt  (Kubuntu 16.04 / KDE Neon):
sudo add-apt-repository ppa:andreas-angerer89/sni-qt-patched
sudo apt update
sudo apt install sni-qt sni-qt:i386 hardcode-tray
Важно отметить, что скрипт рекомендуется использовать с темой значков Numix. Бонусом я еще добавил в Papirus поддержку (не забудьте обновиться) :) Также, если вы не хотите тащить в систему 32-битные либы, то не ставьте пакет sni-qt:i386. Но в таком случае 32-битные приложения не подцепятся скриптом.
Перед началом запуска скрипта, давайте глянем в каком сейчас состоянии наш трей.


Как видите в трее хорошо выделяются из общего стиля значки Chrome, Telegram, Megasync и SkypeForLinux (да, вот эта бела хрень слева от Telegram).
Лечим наш трей, запускаем в Терминале:
hardcode-tray
Выбираем цифру 1 и ждем, когда скрипт просканирует наличие установленных программ и если найдет в текущей теме значков нужные ему, то пофиксит.
Перезапускаем приложения и проверяем результат.



Замечу, что скрипт поддерживает на данный момент лишь:
  • anatine
  • bitcoin
  • calendar-indicator
  • caprine
  • catch-indicator
  • china-weather
  • chromium
  • clementine
  • cryptfolder-indicator
  • disper-indicator
  • dropbox
  • flareget
  • franz
  • google-chrome
  • google-music-manager
  • google-tasks-indicator
  • grive-tools
  • hexchat
  • hp-printing
  • ibus-anthy
  • ibus-mozc
  • indicator-weather
  • keepassx
  • megasync
  • mintupdate
  • mumble
  • museeq
  • my-weather-indicator
  • nylas
  • overgriv
  • owncloud
  • pomodoro-indicator
  • primeindicator
  • pushbullet-indicator
  • qelectrotech
  • radiotray
  • rambox
  • screencloud
  • seafile
  • sflphone
  • skype
  • skypeforlinux
  • slack
  • spotify
  • stremio
  • teamviewer
  • telegram
  • tomahawk
  • touchpad-indicator
  • trimage
  • twitch-indicator
  • variety
  • whatsie
  • wiznote
  • workrave
  • xkbmod-indicator
  • yd-tools
  • youtube-indicator
  • yum-extender-dnf
PS: Для фикса Telegram пришлось указать путь вручную:
hardcode-tray --only telegram --path ~/.local/share/TelegramDesktop/tdata/ticons/

ОБНОВЛЕНО (2016 11 07):
Собрал пакет со свежей версией с гита вместе с необходимыми зависимостями, инструкция по установке обновлена. Те, кто ставил ранее вручную, то можете удалить старую версию:
sudo rm -rf /opt/Hardcode-tray
sudo rm /usr/bin/hardcode-tray
В новой версии добавлена поддержка Wire и Guake, пофиксена работа с Teamviewer, Discord и SkypeForLinux, ускорена работа с Telegram.
Добавился индикатор выполнения, а также появилась опция обновления с гитхаба:
hardcode-tray -ug
Кстати, в Plasma 5 наблюдается баг с треем приложений GTK и Electron - иконки рисуются в панели размером 24px, а должны в 22px. Из-за этого они выглядят размытыми и уменьшенными. Баг уже подтвержден, надеемся что вскоре пофиксят.

Источник: github.com

27 комментариев:

  1. Да это проблема. Проблема светофора. Из списка есть только megasync…

    ОтветитьУдалить
    Ответы
    1. Да, тоже бесит когда в бинарник вшивают значки. Ну теперь есть обходной путь :)

      Удалить
  2. hardcode-tray --only telegram --path ~/.local/share/TelegramDesktop/tdata/ticons/
    Traceback (most recent call last):
    File "/opt/Hardcode-Tray/script.py", line 22, in
    from gi import require_version
    ImportError: cannot import name 'require_version'

    От что выдает на Арче. Подскажи как исправить пожалуйста.

    ОтветитьУдалить
    Ответы
    1. Может путь другой? Ранее значки хранились в
      ~/.TelegramDesktop/tdata/ticons/
      В новых версиях ~/.local/share/TelegramDesktop/tdata/ticons/

      Удалить
    2. Нет. А в версии python не может быть дело?

      Удалить
    3. https://github.com/png2378/telegram-icon-updater это

      И да. Путь другой. Вручную просто скопировал =)
      Спасибо

      Удалить
  3. По возможности добавь Wire еще.
    Глаз режет)
    https://pp.vk.me/c836121/v836121922/b3b8/Xi-RKXepv3Q.jpg

    ОтветитьУдалить
    Ответы
    1. Так я не разработчик же. Все пожелания сюда https://github.com/bil-elmoussaoui/Hardcode-Tray

      Удалить
    2. Ууу, вы ещё глаза не резали!

      Удалить
    3. Сразу обрадовался но завести я его не смог. Руки кривые скорее всего =)
      Стоит этот пакет - https://aur.archlinux.org/packages/wire-desktop/
      hardcode-tray --only так же не помогло...

      Удалить
    4. обновите скрипт с гита:
      hardcode-tray -ug
      PKGBUILD hardcode-tray-fixer-git нерабочий, ставьте с гита.

      Удалить
    5. hardcode-tray
      Traceback (most recent call last):
      File "script.py", line 25, in
      from gi import require_version
      ImportError: cannot import name 'require_version'

      Чего-то ему не хватает.

      Удалить
    6. Зависимости поставили?
      yaourt -S sni-qt-eplus-bzr
      sudo pacman -S gtk3 librsvg python python-cairosvg python-gobject git inkscape

      После этого:
      hardcode-tray -ug
      Всё

      Удалить
  4. Благодарю за трату времени. Не хватало python-gobject.
    Только wire все равно не фиксит =)

    ОтветитьУдалить
    Ответы
    1. Подтверждаю проблему со свежей версией с гита. Скрипт сейчас переходит на базу json а потому не отшлифован. Баг зарепортил, сейчас разраб проверят. Подробнее тут:
      https://github.com/bil-elmoussaoui/Hardcode-Tray/issues/206

      Удалить
    2. Пофиксено, выполните обновление с гита:
      hardcode-tray -ug

      Удалить
    3. Все работает. Спасибо за Ваш труд.

      Удалить
  5. Здраствуйте ,я новичек в линукс ,установил antergos с синамоном ,установил ваши кионки паприс,можно ли эти иконки для трея установить как либо ? или же они только для кде?

    ОтветитьУдалить
    Ответы
    1. Можно, вся информация здесь:
      https://github.com/PapirusDevelopmentTeam/papirus-icon-theme-gtk

      Удалить
  6. hardcode-tray -ug
    Если не поможет, то пишите репорт на гитхаб

    ОтветитьУдалить
  7. На страничке github проекта, в разделе "поддерживаемые приложения" написано, что можно пофиксить трей иконку viber путем использования viberwrapper-indicator для запуска viber. У индикатора трей иконки свободно можно поменять самому. Но вот у меня viberwrapper-indicator не хочет нормально работать. После запуска viber сам закрывается секунд через 3-5. Кто-нибудь смог завести этот viberwrapper-indicator?

    ОтветитьУдалить
  8. На github страничке проекта написано, что можно пофиксить иконку viber в трее путем использования viberwrapper-indicator для которого трей-иконки можно свободно менять. Но вот у меня viberwrapper-indicator отказывается нормально работать - после запуска viber сам закрывается через 3-5 секунд. У кого-нибудь получилось нормально использовать viberwrapper-indicator?

    ОтветитьУдалить
    Ответы
    1. viberwrapper-indicator был написан для древнего вибера, который трей вообще показывал слева вверху по верх всех окон, а в кедах помоему вообще не отображался. Новая же версия вибера переписана полностью и автор hardcode-tray не знает как ее пофиксить на данный момент.

      Удалить
    2. Тоже видел, что вроде хотели скрипт на python3 переписать и там сложности какие-то. Разработчику viber под Linux похоже настолько дОроги родные иконки, что он их захардкодил, наплевав на всех нас :)

      Удалить
  9. Идея замечательная. Есть пара проблем.
    Первая - skypeforlinux: нативные иконки и в трее, и ниспадающем меню, и в окошке при наведении мыши на трей отображаются четко; кастомные иконки корректны только в меню (в трее - муть). Автор скрипта пеняет на апстрим, admin говорит, что это баг Plasma 5. Я не до конца понимаю, как происходит подмена значков, но мне почему-то кажется, что в скрипте все-таки чего-то недостает.
    Вторая проблема - octopi-notifier. Тут по идее вообще никакого скрипта не надо, т.к. для этого в программе якобы присутствует специальный диалог, но из показаний aarnt'а (автора octopi) я так и не понял, толи он уже реализован, толи только намечен к реализации.

    ОтветитьУдалить
    Ответы
    1. C октопи разобрался. Собрал с гитхаба. В самой программе появилась дополнительная опция для выбора иконок, бэкенда и терминала

      Удалить