Если вы используетеbusybox
(встроенные дистрибутивы, т.е. OpenWRT, LEDE ), искомый переключатель — -e
для версий до 1.26.2 и --full-time
для 1.27.0 и выше (см. коммит , который его изменил).
НАКОНЕЦ-ТОразобрался! По крайней мере, в некоторой степени... есть еще кое-что, чего я не совсем понимаю, и это делает получение окончательных цветов правильными немного сложными. Но я смог внести изменение и подтвердил, что оно работает на двух разных дистрибутивах с Cinnamon :Fedora 33 и Mint 19.3. Если другие, обладающие лучшими знаниями, хотят заполнить пробелы или опубликовать лучший ответ, то обязательно сделайте это.
ВНИМАНИЕ :ЭТОТ ПРОЦЕСС, ВОЗМОЖНО, СЛИШКОМ СОВРЕМЕНЕН ДЛЯ НОВИЧКОВ/ТЕХ, С НИЗКИМ ТЕХНИЧЕСКИМ ПОДГОТОВЛЕНИЕМ. ПРОГРАММИРОВАНИЕ НЕ ТРЕБУЕТСЯ, НО НАЦЕЛЕНО НА БОЛЬШУЮ МОЩНОСТЬ -ПОЛЬЗОВАТЕЛИ/ТВИКЕРЫ. Если вы принимаете на себя риск и не возражаете против «аннулирования гарантии» ; -)... в последнем разделе есть команды, которые я использовал для получения значков на скриншоте.
Я собираюсь ограничить этот ответ, изменив значок NetworkManager для темы значка Adwaita на Cinnamon DE, потому что я ленив и не хочу тестировать все, много, много,множество комбинаций апплета/состояния/размера панели/темы значков/среды рабочего стола/версии/разрешения/дистрибутива/и т. д.
У вас должно быть общее представление о том, как взаимодействуют темы значков. Главное, о чем следует помнить, это то, что Linux/Gnome/GTK следуют стандартам freedesktop, которые проверяют несколько папок, а затем возвращаются к нескольким темам из всех этих папок. Я не собираюсь вдаваться в подробности здесь, но этот пост довольно хорошо описывает это. Для моих целей мы просто сосредоточимся на системном пути /usr/share/icons
и пользовательском пути ~/.local/share/icons
. Если вы знаете имя интересующего вас значка, вы можете увидеть, как система преобразует его в путь к файлу, вызвав API GTK. Есть также несколько очень удобных скриптов на Python, которые принимают имя значка в качестве аргумента и выполняют этот поиск для вас, который вы можете найти в этом посте --, включая модифицированную версию, которую я написал сам.
Теперь, когда вы знаете (по крайней мере теоретически )где и как появляются значки и как найти путь к значку, вам нужно знать какие имена значков используются апплетом и каким апплетом. Эта часть тоже немного сложная. По сути, они определены в коде апплета. Для Cinnamon DE вы можете найти его апплеты в разделе /usr/share/cinnamon/applets
, и хотя они написаны в форме javascript, документация несколько устарела и ее трудно найти. Однако на самом деле вам не нужно разбираться в деталях кода апплета, чтобы найти имена значков. Сейчас,вы можете увидеть файл с именем metadata.json
, который содержит имя значка, но прежде чем вы возбудитесь -это только указание значка, используемого в графическом интерфейсе загрузки Cinnamon Spices / Applet -, а не значка, который апплет фактически использует на панели задач. Как я уже сказал, фактические имена значков будут определены в исходном коде апплета. Для апплета NetworkManager под Cinnamon это /usr/share/cinnamon/applets/network@cinnamon.org/applet.js
, о котором я упоминал в OP. Если вы начнете искать значки, в этом вы увидите ТОННУ имен значков для всех различных состояний Wi-Fi, состояний офлайн/отключено/подключено и типов устройств (Wi-Fi, проводной, vpn, сотовый -сеть/широкополосный доступ /что угодно ). Другие апплеты, вероятно, будут намного проще, но это зависит от апплета. Большинство основных имен значков для этого апплета определены в функции _updateIcon
, которая в моей копии начинается со строки 2205. Затем вы можете подключить их к упомянутому выше скрипту Python, чтобы получить некоторые пути:get-icon-path.py network-vpn
.
Теперь вот еще одна часть, которая долгое время ставила меня в тупик. Gnome/Gtk/Cinnamon имеют 2 основных типа иконок. Есть обычные значки, которые также известны как полноцветные значки, и так называемые «символические» значки (, как правило, монохромные ). Долгое время у меня сложилось впечатление, что символические изображения были на 100% черно-белыми без цвета, но это не так. Я также ошибочно думал, что единственный способ получить цветные значки на панели задач — это каким-то образом погрузиться в мир пользовательских файлов css / настроек javascript, чтобы сильно изменить мою тему. Я уверен, что это дало бы лучшие результаты, но я не хотел проходить курс по тематике ОС или делать на этом карьеру; Я просто хотел изменить некоторые основные цвета и перейти к более крупным вещам. Поэтому, когда вы ищете значки, вы на самом деле получите совпадения как для get-icon-path.py network-vpn
, так и для get-icon-path.py network-vpn-symbolic
. Я не совсем понимаю все сценарии, в которых один используется вместо другого;Я полагаю, что мне придется посвятить некоторое время подробному чтению документации freedesktop.org/Gnome для этого. Но для своих изменений я настроил значки network-vpn-symbolic
и network-wired-symbolic
(, а также несколько промежуточных/ошибочных состояний ).
После того, как вы выбрали точные файлы значков для изменения, вы можете продолжить и создать копии в ~/.local/share/icons/<theme>
. В моем случае <theme>
это Adwaita
. Кроме того, ваши «Настройки панели», вероятно, здесь не имеют значения :мой сказал, что у меня высота панели «32» и размер символического значка «28 пикселей» (, а мое разрешение 1920x1080, если это имеет значение ). Я думал, что это повлияет на размер значка и в конечном итоге потратит много времени на поиск больших размеров значков и масштабируемых векторных изображений svg... но на самом деле доказал, что это работает для меня, был файл png 16x16 для сети -телеграфировал, что я бросил в папку по прихоти. Я также понял, что хотя /usr/share/icons/Adwaita/16x16
НЕ имеет сети -vpn, вы можете изменить размер одного из других значков, поместив его в соответствующую папку, и он будет подхвачен.
Последняя проблемная часть, которую я до сих пор не совсем понимаю, это то, как устанавливается окончательный отображаемый цвет. Кажется, что в ОС есть некоторые промежуточные стили, которые изменяют цвет по сравнению с тем, что я сохранил в файлах значков png, но это не так просто вычислить, как добавить/вычесть некоторое смещение. В основном я добился того, что у меня есть, методом проб и ошибок.
Мои системные настройки/темы (для справки)
Атрибут | Федора 33 | Новый 19,3 |
---|---|---|
Версия с корицей | v4.8.6 -1 | v4.4.8 |
Версия NetworkManager | v1.26.6 -1 | v1.10.14 |
Темы :Граница окна | Мятный -Ж -Темный | Как новый -Y |
Темы :Значки | Мятный -Желтый -Темный -Цвет морской волны | Как новый -Y |
Темы :Элементы управления | Мятный -Желтый -Темный -Цвет морской волны | Как новый -Y |
Темы :Указатель мыши | Адвайта | ДМЗ -Белый |
Темы :Рабочий стол | Мятный -Желтый -Темный -Цвет морской волны | Мятный -Ж -Темный |
Вы также заметите, что все они на той или иной стадии наследуются от Адвайты, поэтому Адвайта является наименьшим общим знаменателем, на который я ориентируюсь. Но для системного трея я думаю, что он будет основан на вашей теме Icon (unverified ).
$ cd /usr/share/icons
$ grep Inherit Mint-Y-Dark-Aqua/index.theme
Inherits=Mint-Y-Dark,Adwaita,gnome,hicolor
$ grep Inherit Mint-Y-Dark/index.theme
Inherits=Mint-Y,Adwaita,gnome,hicolor
$ grep Inherit Mint-Y/index.theme
Inherits=Adwaita,gnome,hicolor
Как я уже упоминал о цветах для окончательных значков, которые я видел, на них влияют некоторые другие стили/темы где-то в ОС, до которых я не знаю, как добраться/потребуются значительно больше усилий, чтобы найти то, что я хочу тратить. Для других ленивых людей, таких как я, вот несколько значений, которые, вероятно, будут работать в основном в системе Cinnamon по умолчанию. Для всех остальных,Я опишу шаги, которые я использовал, чтобы добраться сюда ниже, и вы можете поэкспериментировать сами.
Цвет ImageMagick в файле png | цвет отображаемого значка (в соответствии с gpick) |
---|---|
DeepSaffron #ff9933 | темно-фиолетовый #3d1660 |
Голубой #00fee1 | светло-оранжевый #c8995e |
Красный #ff0000 | средне-зеленый #4e9a06 |
Зеленый #00ff00 | оранжевый #f5793e |
Синий #0000ff | темно-красный #cc0000 |
Черный #000000 | белый #ffffff |
Белый #ffffff | черный? #111647 |
Желтый #ffff00 | темно-фиолетовый #441446 |
Розовый #ff00ff | средне-зеленый #1b9c08 |
Тан? #0000ff | темно-красный #cb9ae5 |
золото (золото) | темно-фиолетовый #452964 |
серый (серый) | светло-фиолетовый #890ca7 |
Зеленый (Зеленый) | бледно-оранжевый/розовый #f9bb9e |
Желто-коричневый (Желто-коричневый) | зеленый #4ac21e |
Коричневый (Коричневый) | золото?#827014 |
Голубой (Голубой) | оранжевый #c27b40 |
Пурпурный (Пурпурный) | зеленый #1b9c08 |
желто-зеленый #говядина00 | фиолетовый #713691 |
темно-фиолетовый #441446 | оранжевый #c19367 |
голубой #5294e2 | светло-зеленый #92b372 |
темно-розовый #441446 | светло-фиолетовый #6253d2 |
светло-фиолетовый #6253d2 | светло-зеленый #8ddb8f |
средний синий #6689af | ярко-зеленый #8fe085 |
сине-зеленый? #0f808f | красный #d22600 |
??? #ff0ff0 | темно-зеленый #1da30b |
??? #ff0f0f | средний синий #fa83ec |
??? #ff000a | светло-синий #c490fd |
??? #00f000 | ярко-оранжевый #f58049 |
??? #000fff | очень бледно-голубой #cbf9f5 |
Это просто покажет фактические команды, используемые для двух определенных значков менеджера сети -. Это на жестком -проводном настольном ПК, поэтому у меня нет Wi-Fi, и я действительно заинтересован только в том, чтобы сразу увидеть, подключен ли мой VPN или я в сети без VPN. Поскольку я уже рассказал, как найти значки в обзоре,это будет просто описание того, как воссоздать то, что я сделал на скриншоте выше.
Если у вас есть другие темы значков в ~/.local/share/icons
, переименуйте их, чтобы у вас не возникало конфликтов во время теста. Вы можете переместить его обратно/объединить позже (У меня было такое, и мне потребовалось некоторое время, чтобы понять, что происходит):mv ~/.local/share/icons ~/.local/share/icons.$(date +'%Y-%m-%d-%H%M%S').bak
# create directories
mkdir -p ~/.local/share/icons/Adwaita/16x16/devices;
mkdir -p ~/.local/share/icons/Adwaita/16x16/status;
# check what icons you have on your system
# for python script, see linked post above
get-icon-path.py network-vpn network-wired network-vpn-symbolic network-wired-symbolic
# OR alternately, you could run something like
# but this won't consider theme inheritance or user-folders
find /usr/share/icons/Adwaita /usr/share/icons/gnome \( -iname '*network-vpn*.png' -o -iname '*network-wired*.png' \) -not \( -iname '*acquir*' -o -iregex '.*/legacy/.*' -o -iname '*route*' -o -iname '*offline*' -o -iname '*disconnected*' \)|sort;
# recolor the default 16x16 network-wired icon
cd ~/.local/share/icons/Adwaita/16x16/devices;
f="/usr/share/icons/Adwaita/16x16/devices/network-wired-symbolic.symbolic.png";
c='cyan';convert "${f}" -fuzz 20% -fill ${c} +opaque none "$(basename "${f}")";
# no 16x16 icon is provided for network-vpn
# so recolor and resize the 64x64 network-vpn icon
cd ~/.local/share/icons/Adwaita/16x16/status;
f="/usr/share/icons/Adwaita/64x64/status/network-vpn-symbolic.symbolic.png";
c='#6689af';convert "${f}" -resize 16x16 -fuzz 20% -fill ${c} +opaque none "$(basename "${f}")";
# restart cinnamon desktop (or alternately, just log out then back in)
cinnamon --replace --clutter-display=:0 2> /dev/null &
Обновление :До сих пор я запускал вышеуказанные команды на 2 экземплярах Mint 19.3 и 1 экземпляре Fedora 33 без проблем. Но на моем третьем экземпляре Mint 19.3 я заметил, что значки, которые я перечислил выше (, например. network-vpn-symbolic.symbolic.png
не существовало, а network-vpn.png
существовало ). В этом случае рекомендуется использовать скрипт Python, о котором я упоминал ранее, и искать имена значков network-vpn
и network-vpn-symbolic
; если у вас есть символическое использование, если нет, используйте обычное. Если у вас есть значок по умолчанию размером 16x16 -, вы можете использовать первую команду преобразования (без -изменения размера ); если нет, то выберите значок по умолчанию с самым высоким разрешением, который у вас есть (256, 128 или 64, обычно )и используйте вторую команду преобразования (с -изменением размера ).
Обновление 2 :Также обратите внимание, что скрипт get -icon -path.py некорректно работает в сеансах ssh (и, возможно, в других не -графических сеансах ). Я подозреваю, что это потому, что вам нужен X11/графический сеанс для запроса.