Bem-vindo: Sex, 19 de Abril 2024, 0:58 Pesquisa avançada

[problema] algoritmo para alterar caminhos em scripts conky

Escreveu alguma aplicação ou script que quer partilhar? Ou conhece algo que quer partilhar? Sabe alguma linguagem de programação e quer partilhar esse conhecimento com um tutorial? Tem alguma dúvida em alguma linguagem? Então este é o sítio certo.

[problema] algoritmo para alterar caminhos em scripts conky

Mensagempor Matheus Sproesser » Qua, 19 de Junho 2013, 22:25

Iae galera, estou desenvolvendo uma aplicação para gerenciar scripts conky
no caso esta aqui viewtopic.php?f=19&t=4423
e nessa aplicação os scripts são movidos das pastas do usuario para dentro da pasta dele, fazendo a organização interna e quando eu quiser usar aquele script eu falo pra aplicação qual script é e ele cria um script bash que chama o conky indicando o local do script
conky -c /home/matheus/teste/scripts/conkyrc2

por exemplo
o problema é quando o script depende de imagens, scripts.lua etc.
nesse caso ele teria alem do script uma pasta para guardar essas coisas e dentro do script teria o endereço dessa outra pasta.
eu preciso de algum algoritmo que me permita ler o script principal e encontrar esses endereços para mudar para o endereço novo quando for movido para dentro da aplicação
exemplo:
tenho um script "~/Documentos/scriptxrc" e sua pasta "~/Documentos/scriptFolder/" onde nesse caso funciona perfeitamente.
porem minha aplicação fica em Downloads "~/Downloads/ConkyApp/"
e tenho que importar o "scriptxrc" para dentro da minha aplicação mas preciso levar junto sua pasta com as dependencias "scriptFolder"
o problema é que dentro de "scriptxrc" possui pontos dizendo que "scriptFolder" esta em documentos mas não vai estar mais quando eu colocar dentro da aplicação
então eu teria que ler o script e reescrever com a nova localização de preferencia localização absoluta.

Matheus Sproesser
 
Mensagens: 65
Registrado em: 04 Fevereiro, 2013
Localização: Brazil, Indaiatuba

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Exploit » Qui, 20 de Junho 2013, 3:15

por quê que não pões o conkyrc a apontar para um sítio fixo? guardas as imagens no /opt e o conky usa essas imagens
Avatar do usuário
Exploit
 
Mensagens: 1297
Registrado em: 31 Agosto, 2011

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Matheus Sproesser » Qui, 20 de Junho 2013, 5:17

acontece que o aplicativo vai gerenciar scripts que foram criados por outras pessoas e geralmente costuma guardar imagens e etc em uma subpasta e o aplicativo vai armazenar todos os scripts da mesma forma numa subpasta onde ficarão todos os scripts e suas subpastas de dependencias

Matheus Sproesser
 
Mensagens: 65
Registrado em: 04 Fevereiro, 2013
Localização: Brazil, Indaiatuba

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Matheus Sproesser » Qui, 20 de Junho 2013, 21:14

eu precisava de algum tipo de expressão regular que eu pudesse usar pra verificar linha por linha.

eu tinha pensado em algo assim mas não manjo de regExp

teria que ser uma expressão que pegasse as linhas que contenham "/nomedearquivo" pq é o que diferencia os endereços do resto do script

Matheus Sproesser
 
Mensagens: 65
Registrado em: 04 Fevereiro, 2013
Localização: Brazil, Indaiatuba

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Claudio Novais » Qui, 20 de Junho 2013, 22:02

Parece-me que está perante uma situação bem complicada. Talvez uma abordagem alternativa fosse mais fácil.

O que estou a pensar é exigir à priori a quem faz os conkys que escrevam uma variable (ou mais) que vocÊ defina. Essa variable é uma localização que você depois trabalha nela. Por exemplo (se a varivável fosse \$) ao porem uma imagem escreveriam ${image \$/img.png} e então o seu script ao ativar um conky, processava esse conky, pondo as imagens num determinado local, conforme essas variáveis.

Através dessa variável você poderia criar depois pastas para cada conky numa pasta oculta na pasta pessoal, cada pasta com o nome do conky.
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Matheus Sproesser » Sex, 21 de Junho 2013, 7:15

Claudio sua ideia é muito boa, talvez as pessoas colaborassem dessa forma futuramente quando a aplicação estiver finalizada mas atualmente não fazem isso. e esse metodo de importação deverá servir para importar todos( ou a maioria) dos scripts do topico de conkys
esse aqui : viewtopic.php?f=30&t=191&hilit=conky

e tinha pensado em regExp que seria o que sairia mais limpo o codigo mas acho que vou fazer do jeito hardcore mesmo

talvez esse metodo de usar uma variavel como referencia a um local seja usado na aplicação quando quiser exportar um script de dentro da aplicação para ser compartilhado com outros usuarios da aplicação, facilitará bastante.

Matheus Sproesser
 
Mensagens: 65
Registrado em: 04 Fevereiro, 2013
Localização: Brazil, Indaiatuba

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Claudio Novais » Sex, 21 de Junho 2013, 19:57

Pois isso claro que expressões regulares será o melhor, aliás, usar expressões regulares ou uma variável seria quase igual. Sendo assim, recomendo vivamente as expressões regulares ao invés do Hardcode. É que só lhe vai dar trabalho a longo prazo.

Se fosse um projeto muito pequeno recomendaria o hardcode, aliás eu tenho várias coisas assim no ubuntued-deskmod, porque simplesmente não é preciso exagerar na perfeição. No seu caso, isso vai dar jeito.

Para além disso, o facto do Conky funcionar de uma maneira muito restritiva facilita muito as expressões regulares. Se reparar você só precisa de ver variáveis dentro de chavetas, por isso, aprenda expressões regulares. Para a sua formação é bom e para o seu trabalho não é nada de mais. Creio que você em 3 ou 4 horas fique a saber perfeitamente bem para o que precisa de fazer para o Conky.

Numa rápida pesquisa, encontrei este site que parece o ideal para você aprender de forma rápida. Se precisar use sites adicionais como (provavelmente) a wikipédia que lhe explicam com maior rigor teórico as coisas:
Veja aqui por exemplo possíveis soluções das questões:
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Matheus Sproesser » Sáb, 22 de Junho 2013, 17:03

vlw a dica Claudio.
eu já fiz o metodo no hard mas não pude testar ainda mas com certeza vou mudar pra regExp

encontrei tb esse site http://regexpal.com/
que testa as expressões, é muito bom mas ainda não consegui achar a expressão ideal que pegue somente endereços mas esta quase la

estou usando esse script como referencia
Spoiler:
Código: Selecionar todos
default_bar_size 60 8

#########################
# - Graphics settings - #
#########################
draw_shades no

default_color efefef
default_shade_color 1d1d1d
color0 ffffff
color1 ffffff
color2 ffffff



TEXT
##Bg
${image ~/.conky/base.png -p 10,0 -s 339x86}
${image ~/.conky/base.png -p 10,73 -s 339x86}
${image ~/.conky/base.png -p 10,146 -s 339x86}
${image ~/.conky/base.png -p 10,219 -s 339x86}
${image ~/.conky/base.png -p 10,292 -s 339x86}
${image ~/.conky/base.png -p 10,365 -s 339x86}
${image ~/.conky/base.png -p 10,438 -s 339x86}
${image ~/.conky/base.png -p 10,511 -s 339x86}
${image ~/.conky/base.png -p 10,584 -s 339x86}
${image ~/.conky/base.png -p 10,657 -s 339x86}
##Icons
${image ~/.conky/Icons/Clock.png -p 32,20 -s 45x45}
${image ~/.conky/Icons/Task_Manager.png -p 32,166 -s 45x45}
${image ~/.conky/Icons/Memory.png -p 32,239 -s 45x45}
${image ~/.conky/Icons/HDD.png -p 32,312 -s 45x45}
${image ~/.conky/Icons/Gmail.png -p 32,531 -s 45x45}
${image ~/.conky/Icons/Weather.png -p 32,604 -s 45x45}


${execi 1700 rm .conky/Scripts/weather.txt && ruby .conky/Scripts/current_weather.rb >> .conky/Scripts/weather.txt}

##Clock
${voffset -295}${goto 100}${font Ubuntu:style:size=36}${time %I:%M}${font}

##Updates
${goto 100}${voffset -20}${font Ubuntu:style:size=9}Updates: ${font}${font Ubuntu:style=Bold:size=9}${execi 360 aptitude search "~U" | wc -l | tail} Packages${font}${goto 242}${voffset -40}${font Ubuntu:style=Bold:size=28}${time %a}${font}
${goto 240}${font Ubuntu:style:size=10}${time %D}${font}

##System
${if_existing /etc/SuSE-release}
${image ~/.conky/Icons/OS/opensuse.png -p 32,93 -s 45x45}
${else}
${if_existing /etc/fedora-release}
${image ~/.conky/Icons/OS/fedora.png -p 32,93 -s 45x45}
${else}
${if_existing /etc/gentoo-release}
${image ~/.conky/Icons/OS/gentoo.png -p 32,93 -s 45x45}
${else}
${if_existing /etc/issue Ubuntu}
${image ~/.conky/Icons/OS/ubuntu.png -p 32,93 -s 45x45}
${else}
${if_existing /etc/slackware-version}
${image ~/.conky/Icons/OS/slackware.png -p 32,93 -s 45x45}
${else}
${if_existing /etc/issue Mint}
${image ~/.conky/Icons/OS/mint.png -p 32,93 -s 45x45}
${else}
${if_existing /etc/issue Arch}
${image ~/.conky/Icons/OS/archlinux.png -p 32,93 -s 45x45}
${else}${image ~/.conky/Icons/OS/setting.png -p 32,93 -s 45x45}
${endif}${endif}${endif}${endif}${endif}${endif}${endif}

${goto 92}${voffset -90}${font Ubuntu:style:size=9}Distro: ${font}${font Ubuntu:style=Bold:size=9}${exec lsb_release -d -s}${font}
${goto 92}${font Ubuntu:style:size=9}Kernel: ${font}${font Ubuntu:style=Bold:size=9}${kernel}${font}
${goto 92}${font Ubuntu:style:size=9}Uptime: ${font}${font Ubuntu:style=Bold:size=9}${uptime}${font}


##CPU
${goto 92}${voffset 0}CPU1 Usage: ${font Ubuntu:style=Bold:size=9}${color1}${cpu cpu1}%${font}${color} ${alignr 15}Temp: ${font Ubuntu:style=Bold:size=9}${color1}${execi 5 sensors -f | grep 'Core 0' | cut -c15-17}°F${color}${font}

${goto 92}CPU2  Usage: ${font Ubuntu:style=Bold:size=9}${color1}${cpu cpu2}%${font}${color} ${alignr 15}Temp: ${font Ubuntu:style=Bold:size=9}${color1}${execi 5 sensors -f | grep 'Core 2' | cut -c15-17}°F${color}${font} 

##RAM
${goto 92}${voffset 25}RAM:${color1} ${font Ubuntu:style=Bold:size=9}${memperc}%${font}${color}${font Ubuntu:style=Bold:size=9}${font}  Free: ${font Ubuntu:style=Bold:size=9}${color2}${memeasyfree}${color} ${font}  Used: ${font Ubuntu:style=Bold:size=9}${color2}${mem}${color}${font}

##HDD
${goto 92}${voffset 36}HDD:${color1} ${font Ubuntu:style=Bold:size=9}${fs_used_perc /home}%${font}${color}  Free: ${color2}${font Ubuntu:style=Bold:size=9}${fs_free /home}${color}${font}  Used: ${font Ubuntu:style=Bold:size=9}${color2}${fs_used /home}${color}${font}
${goto 92}${font Ubuntu:size=9}Temp: ${font}${font Ubuntu:style=Bold:size=9}${execi 5 hddtemp --unit=f /dev/sda | grep '/dev/sda' | cut -c34-40}${font}

##Internet
${voffset -10}
${if_up wlan0}${image ~/.conky/Icons/Network/wlan.png -p 32,385 -s 45x45}
${voffset 4}${goto 92}${voffset -6}Upload: ${font Ubuntu:style=Bold:size=9}${color1}${upspeed wlan0}${color}${font} ${goto 230}Total: ${font Ubuntu:style=Bold:size=9}${color2}${totalup wlan0}${color}${font}
${voffset 4}${goto 92}Signal:   ${font Ubuntu:style=Bold:size=9}${color1}${wireless_link_qual wlan0}%${color}${font} ${alignr 15}Essid: ${font Ubuntu:style=Bold:size=9}${wireless_essid wlan0}${font}
${voffset 4}${goto 92}Down:   ${font Ubuntu:style=Bold:size=9}${color1}${downspeed wlan0}${color}${font} ${goto 230}Total: ${font Ubuntu:style=Bold:size=9}${color2}${totaldown wlan0}${color}${font}${voffset 15}

# |--PPP0
${else}${if_up ppp0}${image ~/.conky/Icons/Network/ppp.png -p 32,385 -s 45x45}
${goto 92}Up: ${font Ubuntu:style=Bold:size=9}${upspeed ppp0}${font}
${goto 92}Total: ${totalup ppp0}
${goto 92}Down: ${font Ubuntu:style=Bold:size=9}${downspeed ppp0}${font}
${goto 92}Total: ${totaldown ppp0}
${goto 180}${voffset -35}Local IP: ${addr ppp0}
${goto 180}${voffset -35}Public IP: ${execi 10800 ~/.conky/Scripts/conkyIp}
${voffset 50}
# |--ETH0
${else}${if_up eth0}${image ~/.conky/Icons/Network/lan.png -p 32,385 -s 45x45}
${goto 92}${voffset -5}Up: ${font Ubuntu:style=Bold:size=9}${upspeed eth0}${font}
${goto 92}Total: ${font Ubuntu:style=Bold:size=9}${totalup eth0}${font}
${goto 92}Down: ${font Ubuntu:style=Bold:size=9}${downspeed eth0}
${goto 92}Total: ${font Ubuntu:style=Bold:size=9}${totaldown eth0}${font}
${goto 180}${voffset -35}Local IP: ${addr eth0}
${goto 180}${voffset -35}Public IP: ${execi 10800 ~/.conky/Scripts/conkyIp}
${voffset 50}
${else}${image ~/.conky/Icons/Network/disconnected.png -p 32,385 -s 45x45}${goto 92}${voffset 35}No active network interface ${voffset 45}
${endif}${endif}${endif}

##Power
${if_existing /sys/class/power_supply/BAT0/present}
${goto 92}${voffset -50}${font Ubuntu:style:size=9}Power State: ${font}${font Ubuntu:Bold:size=9}${battery}${font}
${goto 92}${battery_bar 10,200}${color}
${goto 92}${font Ubuntu:style:size=9}Time left: ${font}${font Ubuntu:bold:size=9}${battery_time}${font}${image ~/.conky/Icons/Battery.png -p 32,458 -s 45x45}
${else}${goto 92}${voffset -20}${font Ubuntu:style:size=9}Power State: ${font}${font Ubuntu:Bold:size=9}Connected ${font}${image ~/.conky/Icons/Power.png -p 32,458 -s 45x45}${voffset 15}
${endif}

##Gmail
${goto 92}${color0}${font Ubuntu:style=Bold:size=9}GMAIL${color}${font}
${goto 92}${font Ubuntu:size=9}You have ${font}${font Ubuntu:style=Bold:size=12}${execpi 1200 .conky/Scripts/conkyEmail.py -m IMAP -s imap.googlemail.com -e -u <username> -p <password>}${font}${voffset -3}${font Ubuntu:size=9} new message(s)${font}

##weather
${goto 92}${voffset 15}${font Ubuntu:size=9}Currently: ${font}${font Ubuntu:style=Bold:size=9}${execi 1700 cat .conky/Scripts/weather.txt | grep 'Currently:'| cut -c11-40}${font}
${goto 92}${font Ubuntu:size=9}Humidity: ${font}${font Ubuntu:style=Bold:size=9}${execi 1700 cat .conky/Scripts/weather.txt | grep 'Humidity:'| cut -c10-15}${font}
${goto 92}${font Ubuntu:size=9}Wind: ${font}${font Ubuntu:style=Bold:size=9}${execi 1700 cat .conky/Scripts/weather.txt | grep 'Wind:'| cut -c6-12}${font}
${goto 92}${font Ubuntu:size=9}Barometer: ${font}${font Ubuntu:style=Bold:size=9}${execi 1700 cat .conky/Scripts/weather.txt | grep 'Barometer:'| cut -c11-20}${font}


##Music
${image ~/.conky/Icons/Player/music.png -s 45x45 -p 32,677}
${if_running clementine}
${goto 92}${voffset -5}${execpi .5 ~/.conky/Scripts/conkyClementine.py -t .conky/Templates/conkyClementine.template}
${else}
${if_running banshee}
${goto 92}${voffset -20}${execpi .5 ~/.conky/Scripts/conkyBanshee.py -t .conky/Templates/conkyBanshee.template}
${else}
${if_running rhythmbox}
${goto 92}${voffset -40}${execpi .5 ~/.conky/Scripts/conkyRhythmbox.py -t .conky/Templates/conkyRhythmbox.template}
${else}
${if_running exaile}
${goto 92}${voffset -50}${execpi .5 ~/.conky/Scripts/conkyExaile.py -t .conky/Templates/conkyExaile.template}
${else}
${if_running guayadeque}
${goto 92}${voffset -60}${execpi .5 ~/.conky/Scripts/conkyGuayadeque.py -t .conky/Templates/conkyGuayadeque.template}
${else}

${endif}${endif}${endif}${endif}${endif}



e testei essas expressões
Spoiler:
    (~|\..*)?(/.*/)(.*\.\w{2,4})
    (~|\.)?((\w|\d)*/)

Matheus Sproesser
 
Mensagens: 65
Registrado em: 04 Fevereiro, 2013
Localização: Brazil, Indaiatuba

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Claudio Novais » Sáb, 22 de Junho 2013, 18:05

Você vai querer buscar o quê a mais que as imagens? Neste momento estou ocupado a fazer um artigo para o blog, no entanto, eu sugeria algo assim (não testei, atenção, mas deve ser mais ou menos isto):
Código: Selecionar todos
\${image (.*\.\w+).*}


Ou seja, procura todas as referências a imagem e vai buscar a localização que esteja lá dentro.
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: [problema] algoritmo para alterar caminhos em scripts co

Mensagempor Matheus Sproesser » Sáb, 22 de Junho 2013, 23:17

alem de imagens podem conter scripts lua que ficam na parte antes do TEXT do script

ou no caso do exemplo que postei acima tem caso de usar um conjunto de comandos do proprio shell a partir do execi, e nesses comandos do shell ele chama scripts em ruby, apaga arquivos, cria outros novos etc. nesse caso ele esta indicando caminhos, mas não especificamente para imagens.

nesse script tem lugares que indica para /dev/sda, pelo que entendi , para pegar informações de temperatura.

esse modelo é bem complexo, então se funcionar nesse, com certeza funcionará na grande maioria.

Matheus Sproesser
 
Mensagens: 65
Registrado em: 04 Fevereiro, 2013
Localização: Brazil, Indaiatuba

Próximo

Voltar para Scripts, programação e aplicações em desenvolvimento

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 91 visitantes

cron