1

Тема: Розмальовка polybar'у

Вітаю. Я користуюся polybar'ом в якості панельки для i3wm, і от зліва в мене різна інфа про систему - кількість зайнятого місця, розкладка клавіатури, ще щось і там багато всього, одним словом.
І я б хотів розмалювати ці блоки відповідно кольорам встановленого тла. pywal будує мені палітру кольорів для терміналу, і то файно, але для розмальовки блоків polybar'а мені потрібно більше кольорів, і бажано мати змогу якось їх редагувати, наприклад, понизити, або підвищити яскравість, аби текст можна було прочитати.

Я то зробив за допомогою imagemagick, та nodejs разом з бібліотекою color.
Спочатку генерується потрібна кількість кольорів, потім я встановлюю їм яскравість в 30%, а потім вже записую в файлик та мерджу в Xresources.

Але є проблема! Що робити, коли деякі кольори занадто схожі одне на одного? Наприклад, може бути два кольори, відтінок котрих однаковий, але яскравість різна, і тому кольори різні, а після встановлення яскравості в 30% вони стають однаковими, а я б хотів, аби блоки polybar'а відрізнялись одне від одного, і щоб гарненько переливались, без різких змін кольорів, і без повтору.

Що б ви могли запропонувати?

p.s. це я про оту штуку зверху справа кажу

https://cdn.discordapp.com/attachments/333936584481177600/532652158479237140/unknown.png

Подякували: ostap34PHP1

2

Re: Розмальовка polybar'у

забув сказати, я ті кольори ще сортую по відтінку, аби значення відтінку збільшувалось, можна помітити, що червоний переходить в жовтий, а потім синій в фіолетовий і т.д.

3

Re: Розмальовка polybar'у

Так от, я що подумав, це ж по суті математична задачка, ну, майже. Суть в тому, що в нас є відрізок числової прямої від 0 до 359, тобто, всього 360 значень, де кожне значення - це певний колір, при цьому всі кольори мають однакову насиченість та яскравість.

Нам потрібно отримати певну кількість кольорів, при цьому всі кольори повинні бути унікальними і відразнятись одне від одного на деяке значення N, аби наше око могло відрізняти їх без зусиль.

Наголошую, що ми намагаємось отримати певну кількість кольорів, тобто, якщо картинка складається лише з трьох колорів, то решту кольорів нам потрібно добудувати таким чином, аби вони органічно вписувались в картинку разом з оригінальними трьома кольорами.

Давайте розглянемо 3 проблематичних набори кольорів.
https://cdn.discordapp.com/attachments/333936584481177600/532894467666083850/unknown.png

1) Ми маємо лише два кольори, нам потрібно добудувати решту, тобто 8, таким чином, аби сусідні кольори виглядали органічно, тобто, аби не було різкого переходу від червоного до синього.
Я пропоную зробити це таким чином - додати решту 8 кольорів між першим, та другим кольором, і щоб відстань між ними була рівною.
Вийде ось так
https://cdn.discordapp.com/attachments/333936584481177600/532897042125815808/unknown.png

2) В нас є 7 кольорів, але перші три несуттєво відрізняються, так само, як і останні 4. Тому їх можна об'єднати, і в нас вийде така ж ситуація, як і в першому варіянті.

3) Ми маємо 11 кольорів, але уявімо, що останній зник, і маємо 10. В цьому випадку можна виділити 4 кольори, і нам потрібно добудувати решту 6, але яким чином? Якщо ми залишимо унікальні кольори на їх місці, то може статись таке, що при добудуванні решти шести кольорів інтервали між кольорами будуть нерівними, і це буде ламати наші очі.

Здається, я знайшов відповідь - необхідно взяти перший, та останній унікальні кольори, та додати решту 8 між ними таким чином, щоб інтервали були рівними, а якщо колір лише один, то робити так само, але використовувати вже всі можливі кольори, потрібно лише аби інші кольори обирались починаючи з нашого першого, унікального.

Дякую за участь в цій дискусії, всі вільні.

4

Re: Розмальовка polybar'у

я от лише не подумав про варіянт, коли в нас є два кольори, і коли вони на достатній відстані, аби вважати їх окремими, але при цьому відстань між ними недостатня, аби впихнути туди ще 8 кольорів.
Мабуть, треба якось задекларувати мінімальну необхідну відстань між кольорами, і від неї вже відштовхуватись