Sziasztok,
Régóta használom az "xcalib -i -a" parancsot Linux alól hogy éjjel negáljam a desktop képet böngészéshez és fejlesztéshez. Nagyon szemkímélő.
Azonban a színek is negálódnak. Viszont ha rá tudnánk vinni egy 180 fokos eltolást HUE értékben (vagy RGB shift ami sima értékek cseréje), akkor a színek megmaradnak, miközben a fehér és fekete felcserélődik. Vannak még finomabb megoldások, melyek figyelembe veszik a színek erősségét is, de nekem az említett egyszerűbb is megtenné. További infó a témában:
https://github.com/vn971/linux-color-inversion
Példa parancs Image Magick-kel (invertál és 180 fokkal eltolja (vissza tolja) a színeket):
convert input.png -negate -modulate 100,100,0.5 output.png
Xcalib Github fiókjában már nyitottak erre feature request-et, lásd itt:
https://github.com/OpenICC/xcalib/issues/2
Nem lenne kedve valakinek átírni a forrást RGB shift-tel? Mivel tud negálni a kód, ezért az érték csere nem szabad hogy túl bonyolult legyen. Sima C kód, egyetlen fájl az egész:
https://github.com/OpenICC/xcalib/blob/master/xcalib.c
Fel tudnék ajánlani érte valamit cserébe (akár pénzt). Windows-ra létezik a fenti linken is leírt NegativeScreen nevű cucc, de itt az Xcalib nagyon lightweight és platform barát lenne. Nem függ a compositortól.
A Linux közösségnek nagy segítség lenne szerintem.
Köszönöm.
- 1274 megtekintés
Hozzászólások
Szerintem inkább olyan cuccot használj, ami szűri a kék fényt, pl. http://jonls.dk/redshift/ . Minden szín sokkal természetesebb lesz.
- A hozzászóláshoz be kell jelentkezni
Kösz de ez nem oldja meg azt amit a fenti.
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy nem a konkrét kérdésre volt válasz, de az eredeti problémát (szemkímélés) megoldja, és működik out of the box.
- A hozzászóláshoz be kell jelentkezni
Tényleg kösz, de már próbáltam régebben és nem annyira jó, mert az olvashatósághoz a nagyobb kontraszt jó. viszont fehér háttérnél ezt azzal kapom meg laptopon, ha növelem a fényerőt - de közben éjjel minimalizálni akarom a fényerőt - vagyis az igényem az, hogy minél kisebb fényerővel minél nagyobb kontraszt legyen.
A kettő ellentétes lenne, kivéve ha negatívba kapcsoljuk a képet. Ott növelhetem a fényerőt, melynek hatására a kisebb terület fog fényesedni, vagyis a betűk, míg a nagy fényerőt jelentő háttér az fekete marad. (Ha nem fekete, akkor átkapcsolom a desktop-ot high contrast módba, ami fehér feketét csinál a weboldalból).
Ebben a színek melegségének állítása nem segít nekem jelenleg.
- A hozzászóláshoz be kell jelentkezni
Milyen laptopot használsz?
- A hozzászóláshoz be kell jelentkezni
Ez márka és technológia független.
- A hozzászóláshoz be kell jelentkezni
Senki?
- A hozzászóláshoz be kell jelentkezni
Nagy nehezen találtam megoldást.
Ugye cél a sima inverz helyett az okos inverz (vagy a HSL érték fényességének invertálásával, vagy a sima negatív előtt vagy után a HUE érték 180 fokkal való elforgatásával, mindezek azért, hogy vissza kapjuk az eredeti színeket).
Egyrészt elemeztem xcalib kódját és nem kivitelezhető, mert az csak a gamma értékekkel manipulál. Ezen kívül találtam egy jó Firefox kiegészítőt Night Reader néven, mely okos inverzet csinál a CSS motor színeinek hsl és hue manipulációs lehetőségeivel. Nagyon jól működik, de ez csak a weboldalon belül színekre működik. Kevés esetben működött rosszul csak, ez néhány speciális weboldal esetén. A böngésző menüire nem. Ráadásul Firefox sötét témája nem sötétíti be a GUI nagy részét (book mark bar bal oldalon, beállítások panel stb stb).
Van viszont egy Gnome shell kiegészítő, amely mindezt megoldja egy patch segítségével. Releváns eredeti forrás itt:
https://github.com/maiself/gnome-shell-extension-invert-color/issues/1#…
Leírásom pedig itt:
https://github.com/vn971/linux-color-inversion/issues/5#issuecomment-44…
Bemásolva:
1) download Gnome shell extension from here:
https://github.com/maiself/gnome-shell-extension-invert-color/
2) unzip it into:
~/.local/share/gnome-shell/extensions/invert-window@maiself
3) patch the extension.js file the way written here and save it:
https://github.com/maiself/gnome-shell-extension-invert-color/issues/1#…
4) reload Gnome shell by hittin Alt+F2 and typing "r" + enter
5) install gnome-tweak-tool (unity-tweak-tool)
6) enable this extension on its Extensions panel tossing it to "on"
7) hit Ctrl+I key on a window that will go smart invert
8) Enjoy -> thank you for all the guys on the links above!
Külön a patch:
this.set_shader_source(' \
uniform sampler2D tex; \
void main() { \
vec4 color = texture2D(tex, cogl_tex_coord_in[0].st); \
if(color.a > 0.0) { \
color.rgb /= color.a; \
} \
float maxColor = max (color.r, max (color.g, color.b)); \
float minColor = min (color.r, min (color.g, color.b)); \
float lightness = (maxColor + minColor) / 2.0; \
float delta = (1.0 - lightness) - lightness; \
color.rgb = (color.rgb + delta); \
color.rgb *= color.a; \
cogl_color_out = color * cogl_color_in; \
} \
');
Megjegyzem, hogy a fényerőt nem egészen jól számolja, ha lesz időm kijavítani, akkor majd megírom ide a változtatást.
- A hozzászóláshoz be kell jelentkezni
Itt az álatalam javított kód, ezzel közelebb vannak a valós negatív fényerőhöz a színek. Vagyis a fehér alapon fakó kék nem fekete alapon erős kék lesz, hanem fekete alapon fakó kék. Persze a még jobb megfeleltetésért ennél bonyolultabb számítás kell, hogy az azonos telítettség fehéren, azonos telítettségnek nézzen ki feketén.
this.set_shader_source(' \
uniform sampler2D tex; \
void main() { \
vec4 color = texture2D(tex, cogl_tex_coord_in[0].st); \
if(color.a > 0.0) { \
color.rgb /= color.a; \
} \
float lightness = (color.r + color.g + color.b) / 3.0; \
float delta = (1.0 - lightness) - lightness; \
color.rgb = (color.rgb + delta); \
color.rgb *= color.a; \
cogl_color_out = color * cogl_color_in; \
} \
');
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Hogy nem folyt ki a szemed, míg ezt összegányoltad? Ja, nem, mert akkor nem kellene szemvédő...
- A hozzászóláshoz be kell jelentkezni
Mi lett összegányolva?? Ez nem az én weboldalam hanem a duckduckgo-é, de példának több trilliárd weboldal képét be lehetne ide tenni, ugye egyetértesz hogy annyi nem fér ide ki?
- A hozzászóláshoz be kell jelentkezni
Magic :). Nem gondoltam, hogy ilyen értelmesen tud kinézni. Érdekelne valami interaktívabb/teljesebb ábrán látni, melyik színből mi lesz így.
Nekem sajnos pont a fekete alapon világos szövegtől folyik ki a szemem, és még percekig világos csíkokat látok magam előtt.
- A hozzászóláshoz be kell jelentkezni
Mert valszeg rossz környezetben használod. Se a túl sötét, se a túl világos nem jó a szemnek. Illetve ennek keretein belül a minél nagyobb kontraszt jó, mert az olvashatóbb és így kevésbé rontja a szemet. Hiába megfelelő a kép össz fényereje, ha nem tudunk disztingválni a tartalom között - és fordítva.
Ennek megfelelően én a világos alapot kedvelem egész nap, és inkább a monitor megvilágítását állítom a szoba fényéhez úgy, hogy még a kontraszt is jó legyen. Azonban amint egy bizonyos mértékű fényerő alá megy a környezet fényessége, ettől a ponttól jobb a szememnek a fekete alap.
Tehát környezet függő. Egy teljesen sötét szobában az ágyban neten olvasni jobb a sötét háttér, és ezen kereten belül lehet játszani a kontraszttal. Én nem teszem túl nagyra, se nem túl kicsire, hanem optimálisra.
- A hozzászóláshoz be kell jelentkezni
BTW láttam az egyik munkádon pár éve hogy szereted a színeket és algókat (ugye a kép kitöltés minden színnel furcsa módon cuccodra gondolok). Még el akarok gondolkodni hogyan tudnám színprofil nélkül tovább közelíteni függvénnyel a "negatív" fényerő megállapítását, hogy pontosabb legyen a szaturáció negatívban az eredetihez képest, de ha érdekel, jó lenne kigyúrni valami egyszerű és hatékonyat. Ahogy látod feljebb, egyetlen sor a mérvadó kód, elég faék. Persze dícséretes hogy a többi részével összerakták.
Egyébként Androidra (talán 8-tól felfelé) van egy okos negatív, de nagyon lassú, és elég rosszak is a színek. Azt nem értettem hogy miért ilyen rosszat tudtak kizzadni. Akkor már a hue 180 fokos elforgatás is jobb.
- A hozzászóláshoz be kell jelentkezni