Romanian PC Forum Sabitech Media - web design, gazduire web, promovare, seo, logo design si branding


Go Back   Romanian PC Forum > Software > Unix - Linux - BSD

Unix - Linux - BSD Coltul fanilor... distributii, configurari, sfaturi si probleme, tutoriale, etc.


Reply
 
Thread Tools
Old 22.01.2018, 17:23   #1
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Afișaj culori baterie in sh (Bourne Shell)

Am un script care ar trebui să afișeze statusul bateriei în funcție de procentul de încărcare/descărcare pe culori, dar dintr-un motiv care îmi scapă îmi afișează doar o singura culoare (gri), culoare ce nici măcar nu este definită. Scriptul rulează fără erori și afișează procentul bateriei dar fără culori.

Code:
#!/bin/sh
#
#

color0="#e60000"
color1="#ff9900"
color2="#ffff00"
color3="#99ff33"
color4="#66ffff"


#URGENT_LOWER=10
#URGENT_HIGHER=100
SYMBOL_PERCENT="%"

Blife=$(sysctl hw.acpi.battery.life | cut -d " " -f2)
ACline=$(sysctl hw.acpi.acline | cut -d " " -f2)
BState=$(acpiconf -i batt | grep "State" | tr -s " " | cut -d " " -f2 | tr -d "State,:")

icon0=" "
icon1=""
icon2=""
icon3=""
icon4="" 


if [ "$Blife" -le 100 ];then 
   echo "${icon4} ${Blife} ${SYMBOL_PERCENT}"
   echo "${icon4} ${Blife} ${SYMBOL_PERCENT}"
   echo "{color4}" 
   echo ""
elif [ "$Blife" -le 80 ];then 
     echo "${icon3} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon3} ${Blife} ${SYMBOL_PERCENT}"
     echo "$color3"
     echo ""
elif [ "$BLife" -le 60 ];then 
     echo "${icon2} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon2} ${Blife} ${SYMBOL_PERCENT}"
     echo "color2"
     echo ""
elif [ "$BLife" -le 40 ];then 
     echo "${icon1} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon1} ${Blife} ${SYMBOL_PERCENT}"
     echo "$color1"
     echo ""
elif [ "$BLife" -lt 20 ];then
     echo "${icon0} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon0} ${Blife} ${SYMBOL_PERCENT}" 
     echo "$color0"
     echo ""
fi
Are cineva vreo idee care să mă lumineze și pe mine? Definirea culorilor să fie problema?
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
Old 22.01.2018, 17:28   #2
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Pai cum trebuie facut echo la variabila color? La primul if statement ai folosit echo "{color4}" iar apoi la elseif ai folosit echo "$color3", echo "$color0" etc. Cum e corect?
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
Old 22.01.2018, 17:34   #3
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Simplu fără "{ }" . Am încercat și cu { } crezând că poate funcționează așa. Sintaxa in sh diferă puțin de bash de asta am nedumeriri; scriptul trebuie să ruleze pe FreeBSD și bash-ul nu este default pe acest sistem, ci sh/csh/tcsh.
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
Old 22.01.2018, 17:39   #4
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Poti folosi si -c ca sa fortezi citirea direct din string, in caul tau $colorx, uite problema si solutie: https://unix.stackexchange.com/quest...utput-anything

Din pacate nu am pe ce testa codul momentan, sa-l vad cum reactioneaza in timp real, ca imi era mai usor sa-l tot modific si testez direct.

/LE: clar... deci ai diferente fata de sh... aici nu te mai pot ajuta, si asa nu sunt expert in limbajele astea. Vezi totusi cu -c, poate fortand variabila sa redea direct din ea continutul, deci codul culorii, poate asa merge.

---------- Post added at 18:39 ---------- Previous post was at 18:35 ----------

Vad ca nu e diferenta la output cu echo intre sh si tcsh... uite ce zice aici: https://web.fe.up.pt/~jmcruz/etc/unix/sh-vs-csh.html

Deci nu vad de ce nu ar face echo $colorx direct, fara ghilimele sau alt caracter, ca doar e o simpla variabila. Incearca si vezi.
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following 2 Users Say Thank You to XVanish For This Useful Post:
AnbuBlack (22.01.2018), bogdan (23.01.2018)
Old 22.01.2018, 17:46   #5
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Scriptul ăsta rulează în interiorul lui i3blocks nu direct în terminal. Si dacă îl atașez la comanda din i3blocks nu se întâmpla nimic.

---------- Post added at 18:45 ---------- Previous post was at 18:44 ----------

Uite rezultatul scriptului rulat în terminal:

Code:
 sh -x .config/i3/modules/batterybar3                                                                                                          -- INSERT --
+ color0='#e60000'
+ color1='#ff9900'
+ color2='#ffff00'
+ color3='#99ff33'
+ color4='#66ffff'
+ URGENT_LOWER=10
+ URGENT_HIGHER=100
+ SYMBOL_PERCENT=%
+ sysctl hw.acpi.battery.life
+ cut -d ' ' -f2
+ Blife=100
+ sysctl hw.acpi.acline
+ cut -d ' ' -f2
+ ACline=1
+ acpiconf -i batt
+ grep State
+ tr -s ' '
+ cut -d ' ' -f2
+ tr -d State,:
+ BState=$'\t\t\thigh'
+ icon0=$'\357\211\204 '
+ icon1=$'\357\211\203'
+ icon2=$'\357\211\202'
+ icon3=$'\357\211\201'
+ icon4=$'\357\211\200'
+ [ 100 -le 100 ]
+ echo $'\357\211\200 100 %'
 100 %
+ echo $'\357\211\200 100 %'
 100 %
+ echo {color4}
{color4}
+ echo ''


---------- Post added at 18:46 ---------- Previous post was at 18:45 ----------

Si dacă îl rulez cu acel operator imi afișează doar culorile și procentul:

Code:
sh -c .config/i3/modules/batterybar3                                                                                                          
 100 %
 100 %
{color4
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
Old 22.01.2018, 17:46   #6
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Poti sa vezi ce printeaza direct in terminal, sa vezi daca exporta corect codurile de culoare din variabilele alea? Inainte de a le afisa prin i3blocks... macar sa sti daca codul si variabilele sunt ok iar i3blocks nu le preia asa sau intr-adevar variabilele nu sunt definite sau printate corect in codul tcsh.
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following User Says Thank You to XVanish For This Useful Post:
bogdan (23.01.2018)
Old 22.01.2018, 17:46   #7
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Apoi lucrul ăsta îl făcea și înainte.
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
Old 22.01.2018, 17:52   #8
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Ai postat intre timp exact ce ziceam mai sus. Ok, vad ca nu-ti returneaza in terminal codul culorilor, deci valoarea strigurilor colorx... deci banuiesc nu sunt corect definite.

Incearca set color0="#ff6600" si apoi echo $color0
Sau set color0=#ff6600 si apoi echo $color0

si vezi daca printeaza in terminal codul culorii...

Vad ca iti returneaza si comanda echo, ceea ce nu ar trebui, ar trebui sa-ti returneze doar continul stringului color, nu si echo bla bla... posibil sa nu recunoasca cum trebuie echo... vad ca tcsh stie si env|grep color, vezi in tabelul de mai sus si incearca un script simplu doar cu definirea unei variabile si printarea ei... experimentezi variantele de definire si printare variabile din tabelul ala si vezi care merge. Nu prea mai am idei daca nu cunosc limbajul.
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following 2 Users Say Thank You to XVanish For This Useful Post:
AnbuBlack (22.01.2018), bogdan (23.01.2018)
Old 22.01.2018, 17:54   #9
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Ok testez și revin cu rezultatele. Mulțumesc!
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
Old 22.01.2018, 18:14   #10
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

E simplu cu switch case cum am zis, uite aici link-ul de referinta, numai ca trebuie sa-ti regandesti codul, practic ii zici sa faca switch de la un case la altul atunci cand Blife se schimba. iar case-ul default il poti folosi cand e bateria 100%, ca va eveni la acel case default de fiecare data cand celelalte case-uri nu exista. https://en.wikipedia.org/wiki/C_shell#switch_statement

Uite exemplu: https://www.experts-exchange.com/que...statement.html

Sau poate mai simplu pentru tine e sa folosesti while:

Code:
while ( Blife e la 100%)
   echo bla bla
end

while ( Blife e la 50%)
   echo bla bla
end
Mi-e greu asa daca nu am pe ce scrie si testa codul...

---------- Post added at 19:14 ---------- Previous post was at 19:11 ----------

Am mai gasit si chestia asta, poate ai ceva definit in fisierul ala care iti limiteaza printarea in i3locks, nu stiu exact ce face dar a fost o recomandare la cineva care tot asa avea probleme cu if statement si case in tcsh.

Quote:
Change #!/bin/csh to #!bin/csh -f. This tells the shell not to read your ~/.cshrc file, which saves time and can avoid confusion. (If you accidentally write code that depends on aliases you've defined in your .cshrc, for example, your script won't work for anyone else.)
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following 2 Users Say Thank You to XVanish For This Useful Post:
Alin99 (22.01.2018), bogdan (23.01.2018)
Old 23.01.2018, 01:35   #11
bogdan
RPC Super Moderator
 
bogdan's Avatar
 
Join Date: 26.06.2010
Posts: 5,349
Thanks: 5,862
Thanked 7,861 Times in 3,997 Posts
Default Re: Afișaj culori baterie in sh

Anbule, tare mi-e ca incerci sa fortezi un spatiu de culoare mult prea mare (cu #XXYYZZ).
As zice sa te limitezi la basic-ul de 16 culori cu ANSI escape codes:
Incearca treaba asta:
Code:
echo -e "I'm \033[0;31mAnbu\033[0;30mBlack\033[0m and I like BSD"
iacata la mine:
Code:
[bogdan@homepc /tmp]$ echo $0
tcsh
[bogdan@homepc /tmp]$ echo -e "I'm \033[0;31mAnbu\033[0;30mBlack\033[0m and I like BSD"
I'm AnbuBlack and I like BSD


Culorile le ai descrise aici (primul raspuns). Pentru rosu (0;31) il "cazezi" aici: \033[0;31m ; negru (0;30) aici: \033[0;30m etc...
Ar trebui sa mearga atat cu echo cat si cu printf. Daca nu merge... atunci nu din script e problema ci din terminal (mie in xterm imi merge OK).

---------- Post added at 02:35 ---------- Previous post was at 02:29 ----------

Quote:
Originally Posted by AnbuBlack View Post
Scriptul ăsta rulează în interiorul lui i3blocks nu direct în terminal.
La naiba, stai ca acu' mi-a sarit in ochi treaba asta ...
i3blocks n-am folosit niciodata, asa ca nu prea stiu mare branza despre el
__________________
CHIAR Imi place Romanian PC Forum - www.rpc-forum.ro!
bogdan is offline   Reply With Quote
The Following 3 Users Say Thank You to bogdan For This Useful Post:
Alin99 (23.01.2018), AnbuBlack (23.01.2018), XVanish (23.01.2018)
Old 23.01.2018, 16:44   #12
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Problema nu este chiar atât de ușoară, în sensul că i3blocks este scris în C, iar culorile pentru acest program sunt definite altfel față de terminal.

Am reușit oarecum să schimb culoarea:

01.png 02.png

însă problema mea este că scriptul nu trece mai departe de primul if, adică dacă procentul scade sub pragul de 80 ar trebui să schimbe culoarea și iconul, însă nu o face, nu-mi dau seama de ce. Ce este drept și acpi-ul în FreeBSD este scris cu picioarele, cel din GNU/Linux este mult mai maleabil.
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
The Following 2 Users Say Thank You to AnbuBlack For This Useful Post:
bogdan (23.01.2018), XVanish (23.01.2018)
Old 23.01.2018, 17:13   #13
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Eu zic sa cauti un exemplu facut cu switch case pentru i3blocks cum iti trebuie tie, chiar daca nu e pentru baterie... sa vezi cum e scris codul, sa te inspiri... sau chiar cu if / elseif ca poate ai o eroare in cod iar eu unul daca nu am pe ce testa nu o pot depista usor.

Ai incercat sa renunti la elseif? sa folosesti doar if bla bla endif, if bla bla 2 endif ? Poate nu stie elseif si atunci parcurge fiecare if separat... poate asa va merge.
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following 3 Users Say Thank You to XVanish For This Useful Post:
Alin99 (09.02.2018), AnbuBlack (23.01.2018), bogdan (23.01.2018)
Old 23.01.2018, 18:21   #14
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

O să încerc și cu case când am timp; am încercat fără elif, doar cu segmente de if-fi și până acum nimic.
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
The Following 2 Users Say Thank You to AnbuBlack For This Useful Post:
Alin99 (09.02.2018), XVanish (23.01.2018)
Old 08.02.2018, 23:32   #15
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

După multe peripeții i-am dat de cap și acum îmi afișeaza corect procentul/iconul/culoarea exact ca în script:
_ 5-20 % din baterie 5-20.png
_ 21-40 % din baterie 21-40.png
_ 41-60 % din baterie 41-60.png
_ 61-80 % din baterie 61-80.png
_ 81-100% din baterie 81-100.png

Code:
#!/bin/sh


color0="#e60000"
color1="#ff9900"
color2="#ffff00"
color3="#99ff33"
color4="#66ffff"

SYMBOL_PERCENT="%"

Blife=$(sysctl hw.acpi.battery.life | cut -d " " -f2)

icon0=""
icon1=""
icon2=""
icon3=""
icon4=""


if [ $Blife -lt 100 -a $Blife -gt 80 ]; then
   echo "${icon4} ${Blife} ${SYMBOL_PERCENT}"
   echo "${icon4} ${Blife} ${SYMBOL_PERCENT}"
   echo "$color4"   
elif [ $Blife -le 80 -a $Blife -gt 60 ]; then
     echo "${icon3} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon3} ${Blife} ${SYMBOL_PERCENT}"
     echo "$color3"
elif [ $Blife -le 60 -a $Blife -gt 40 ]; then
     echo "${icon2} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon2} ${Blife} ${SYMBOL_PERCENT}"
     echo "$color2"
elif [ $Blife -le 40 -a $Blife -gt 20 ]; then
     echo "${icon1} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon1} ${Blife} ${SYMBOL_PERCENT}"
     echo "$color1"
elif [ $Blife -le 20 -a $Blife -gt 5 ]; then
     echo "${icon0} ${Blife} ${SYMBOL_PERCENT}"
     echo "${icon0} ${Blife} ${SYMBOL_PERCENT}"
     echo "$color0"
fi
În mare codul este același însă sintaxa dintre sh (Bourne Shell) și bash (Bourne Again Shell) este destul de diferită și asta era cauza erorilor.
Următorul "proiect" este să ascund procentul în spatele iconului și să fie vizibil doar atunci când dau click pe iconă, exact cum îl am pe GNU/Linux.
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
The Following 3 Users Say Thank You to AnbuBlack For This Useful Post:
Alin99 (09.02.2018), XVanish (09.02.2018), yo9fah (09.02.2018)
Old 09.02.2018, 07:02   #16
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Frumos, bravo! Chiar vroiam sa zic ca nu vad nici o diferenta majora in cod, doar mici ajustari.
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following 2 Users Say Thank You to XVanish For This Useful Post:
Alin99 (09.02.2018), AnbuBlack (09.02.2018)
Old 09.02.2018, 11:25   #17
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Quote:
Originally Posted by XVanish View Post
Frumos, bravo! Chiar vroiam sa zic ca nu vad nici o diferenta majora in cod, doar mici ajustari.
Da, așa este, nu sunt diferențe mari însă aceste ajustări fac diferența între un script funcțional și unul parțial funcțional. Probabil când voi ascunde procentul în spatele iconului vor apărea și schimbări în cod, schimbări ce vor implica case/ do, etc.
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki
AnbuBlack is online now   Reply With Quote
The Following 2 Users Say Thank You to AnbuBlack For This Useful Post:
Alin99 (09.02.2018), XVanish (09.02.2018)
Old 09.02.2018, 17:51   #18
XVanish
RPC Administrator
 
XVanish's Avatar
 
Join Date: 03.06.2008
Location: Baia Mare
Age: 37
Posts: 5,964
Thanks: 3,655
Thanked 3,372 Times in 1,984 Posts
Send a message via Yahoo to XVanish Send a message via Skype™ to XVanish
Default Re: Afișaj culori baterie in sh

Aha, deci sa inteleg ca pana la urma te-ai pus sa studiezi mai bine variantele de care ti-am pomenit, switch, case etc. Abia astept sa vad ce iese, succes!
__________________
Internetul e distractie, nu pierde controlul!


Foloseste Google si YouTube inainte de a pune intrebari stupide!
XVanish is online now   Reply With Quote
The Following User Says Thank You to XVanish For This Useful Post:
AnbuBlack (09.02.2018)
Old 10.02.2018, 19:40   #19
AnbuBlack
*nix enthusiast
 
AnbuBlack's Avatar
 
Join Date: 20.04.2011
Location: 127.0.0.1
Posts: 3,981
Thanks: 4,677
Thanked 6,292 Times in 3,015 Posts
Default Re: Afișaj culori baterie in sh

Quote:
Originally Posted by XVanish View Post
Aha, deci sa inteleg ca pana la urma te-ai pus sa studiezi mai bine variantele de care ti-am pomenit, switch, case etc. Abia astept sa vad ce iese, succes!
Switch nu există pe SH (Bourne Shell), ci doar în CSH, dar am folosit cu succes case.
Scriptul face următoarele lucruri:
_ în prim plan afișează bateria și nivelul de încărcare al acesteia;
_ în plan secund după un click pe icoană afișează procetul bateriei.
Mai multe detalii despre baterie nu am cum să afișez pentru că sunt limitat de acpi-ul din FreeBSD, care este mult mai scărac în detalii față de cel din GNU/Linux.

Iată ce a ieșit:
_ încarcare: 00.png 01.png02.png03.png04.png 05.png06.png 07.png
_ descărcare: 08.png09.png10.png11.png12.png13.png14.png15.png
_ animații: bat_discharge.gifbat_charge.gif

Inițial ca să afișeze când încarcă/descarcă am pus lângă pictograma bateriei un mic sem care indica sensul de încărcare/descărcare al bateriei, dar am realizat că nu este foarte vizibil și l-am înclocuit cu -/+ ca în imaginile de mai jos:

16.png17.png

Atunci când bateria nu se încarcă sau descarcă, conform lui hwstat sau lui sysctl hw.acpi.battery.state, ci este pe high (cred ca vrea să fie un fel de full) îmi afisează următoarea pictogramă:

high.png

Code:
#!/bin/sh

colors0="#e60000"
colors1="#ff9900"
colors2="#ffff00"
colors3="#99ff33"
colors4="#66ffff"
unknown_color="#00cccc"
pictograme="■"

Blife=$(sysctl hw.acpi.battery.life | cut -d " " -f2)
BState=$(sysctl hw.acpi.battery.state | cut -d " " -f2)


if [ $Blife -le 100 -a $Blife -gt 80 ]; then
     symbol=""  
elif [ $Blife -le 80 -a $Blife -gt 60 ]; then
     symbol=""
elif [ $Blife -le 60 -a $Blife -gt 40 ]; then
     symbol=""
elif [ $Blife -le 40 -a $Blife -gt 20 ]; then
     symbol=""
elif [ $Blife -le 20 -a $Blife -gt 2 ]; then
     symbol=""
fi


if [ "$BState" -eq 0 ]; then
     symbol="<sup>  </sup>$symbol"
elif [ "$BState" -eq 2 ]; then
     symbol="<sup>  </sup>$symbol"
else [ "$BState" -eq 1] 
     symbol="<sup>  </sup>$symbol"
fi     

case $BState in
 2) # Charging state
      if [ $Blife -gt 2 -a $Blife -le 20 ]; then
         color="$colors0"
      elif [ $Blife -gt 20 -a $Blife -le 40 ]; then
         color="$colors1"
      elif [ $Blife -gt 40 -a $Blife -le 60 ]; then
         color="$colors2"
      elif [ $Blife -gt 60 -a $Blife -le 80 ]; then
         color="$colors3"
      elif [ $Blife -gt 80 -a $Blife -le 100 ] ; then
         color="$colors4"
      fi
      ;;
 0) # High state
         color="$unknown_color"
      ;;
 1) # Discharging state 
      if [ $Blife -le 100 -a $Blife -gt 80 ]; then
         color="$colors4"
      elif [ $Blife -le 80 -a $Blife -gt 60 ]; then
         color="$colors3"
      elif [ $Blife -le 60 -a $Blife -gt 40 ]; then
         color="$colors2"
      elif [ $Blife -le 40 -a $Blife -gt 20 ]; then
         color="$colors1"
      elif [ $Blife -le 20 -a $Blife -gt 2 ]; then
         color="$colors0"
      fi
      ;;
  *)
  ;;
esac

if [ "${BLOCK_BUTTON}" -eq 1 ]; then 
    echo "$Bstate <span foreground=\"$color\">$Blife%</span>"
fi
echo "<span foreground=\"$color\">$symbol</span>"
#Job done!
__________________
Doar Universul şi prostia umană sunt infinite, însă nu sunt sigur de primul. - Albert Einstein


_________________
Manuale:
_FreeBSD: FreeBSD Handbook | The Complete FreeBSD | Unix Toolbox | FAQ
_Arch GNU/Linux : ArchWiki

Last edited by AnbuBlack; 12.02.2018 at 20:26.
AnbuBlack is online now   Reply With Quote
The Following 2 Users Say Thank You to AnbuBlack For This Useful Post:
Alin99 (13.02.2018), XVanish (11.02.2018)
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Caut programator in C++ / shell ambreik Suport Tehnic 0 23.11.2015 10:34
Baterie Asus Costin Suport Tehnic 4 18.12.2013 21:42
[VAND] Baterie laptop winston90 Hardware 0 06.11.2012 17:08
Utilizarea functiilor pentru executarea comenzilor shell[php] mic_programator Web 1 11.05.2012 00:11
Problema pentru shell scripting Florinel76 Unix - Linux - BSD 0 05.12.2010 07:04

 
Advertisement




camere foto digitale

aparate foto digitale


Partner Links
Sabitech Media - dezvoltare web, servicii media

RSP Forum - sateliti.info
Comunitate Satelitara






All times are GMT +2. The time now is 22:29.


Powered by vBulletin® - © Jelsoft Enterprises Ltd.
~ Copyright © 2007-2015 Romanian PC Forum ~
Toate drepturile rezervate

Romanian Sattelites Provider Wi-Fi Magazin