понедельник, 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

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

  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. Chromium [##......................................] 1/23 4.3%
    Traceback (most recent call last):
    File "script.py", line 549, in
    install(fix_only, icon_path)
    File "script.py", line 502, in install
    symlink_file(output_icon, symlink_icon)
    UnboundLocalError: local variable 'output_icon' referenced before assignment

    Вот такая проблема ,что ему надо непонятно. Может кто сталкивался?

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

      Удалить
    2. Спасибо, но так уже пытался ...не помогло

      Удалить
    3. Написал репорт разработчику на гитхаб, посмотрим что из этого выйдет.

      Удалить
  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 октопи разобрался. Собрал с гитхаба. В самой программе появилась дополнительная опция для выбора иконок, бэкенда и терминала

      Удалить

Примечание. Отправлять комментарии могут только участники этого блога.