Trocar fontes no IceWM por shell script [RESOLVIDO]

1. Trocar fontes no IceWM por shell script [RESOLVIDO]

Francisco Raimundo da Silva
chimico

(usa Debian)

Enviado em 24/02/2012 - 12:11h

Olá pessoal, há muito tempo tenho tentado um comando que trocasse as fontes do IceWM, mas não tenho tido sucesso. Já usei o sed, tr, awk, grep. As fontes do IceWM ficam em ~/.icewm/preferences e em ~/.icewm/themes/tema/default.theme. Estou tentando trocar as fontes do tema Nano-Blu (~/.icewm/themes/Nano Blu- 1.1).
estas são suas fontes:

~$ grep "*" default.theme
MinimizedWindowFontName="-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*"
QuickSwitchFontName="-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*"
NormalButtonFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
ActiveButtonFontName="-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*"
ListBoxFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
LabelFontName="-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*"
MenuFontName="-*-sans-medium-r-normal-*-*-90-*-*-p-*--*-*"
NormalTaskBarFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
ActiveTaskBarFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
ToolButtonFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
ClockFontName="-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*"
ApmFontName="-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*"
ToolTipFontName="-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*"
TitleFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
InputFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
NormalWorkspaceFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
ActiveWorkspaceFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
StatusFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"

Pretendo trocar por -*-denmark-*-r-normal-*-*-80-*-*-p-*--*-* em cada uma das ocorrências. O comando que tenho rodado é este:

for Font in `grep "*" default.theme | awk -F "=" '{print $2}' | tr -d '"'` ; do sed -i "s/"$Font"/-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*/g" default.theme ; done ; sync

Parte deste comando:
~$ grep "*" default.theme | awk -F "=" '{print $2}' | tr -d '"'
-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-90-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*
-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*

Alguém pode me ajudar?


  


2. MELHOR RESPOSTA

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 24/02/2012 - 17:03h

Você pode tentar algo do tipo:

echo 'MinimizedWindowFontName="-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*"' | sed 's/"\([^"]\|\\"\)*"/"-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*"/g' 


Se funcionar para o que você quer, basta adaptá-lo ao seu caso! =) Tipo:

$ cat default.theme
MinimizedWindowFontName="-*-sans-medium-r-normal-*-*-100-*-*-p-*--*-*"
QuickSwitchFontName="-*-sans-medium-r-normal-*-*-120-*-*-p-*--*-*"
NormalButtonFontName="-*-sans-medium-r-normal-*-*-110-*-*-p-*--*-*"
...
...

$ sed -i 's/"\([^"]\|\\"\)*"/"-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*"/g' default.theme

$ cat default.theme
MinimizedWindowFontName="-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*"
QuickSwitchFontName="-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*"
NormalButtonFontName="-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*"
...
...


3. Re: Trocar fontes no IceWM por shell script [RESOLVIDO]

Francisco Raimundo da Silva
chimico

(usa Debian)

Enviado em 24/02/2012 - 20:30h

@SMarcell

ESte comando é muito bacana, mas este adiciona "-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*" em toda linha que tenha a sintaxe 'Configuração="String"', não apenas as fontes, onde a 'String' começa por '-*'.
Como faço para trocar cada ocorrência em que a string começa com '-*', sem mexer nas outras linhas, como dizer isso ao sed e de preferência que este seja '--in-place' (direto no arquivo)?.


4. Re: Trocar fontes no IceWM por shell script [RESOLVIDO]

Francisco Raimundo da Silva
chimico

(usa Debian)

Enviado em 25/02/2012 - 01:49h

@SMarcell
Obrigado pela boa vontade amigo, neste link achei algo que me levou a solução:

http://www.ibm.com/developerworks/linux/library/l-sed2/index.html
No título "Regexp snafus" tem este comando para linhas que começam com "<" e terminam com ">" com caracteres ao meio e o comando é este:

$ sed -e 's/<.*>//g' myfile.html

Para minha necessidade, as linhas começam com "-*-" e terminam com "*", que são as linhas que configuram fontes:

sed -e 's/"-*-.*"/"-*-denmark-*-r-normal-*-*-80-*-*-p-*--*-*"/g' default.theme

O comando que você postou vai me ajudar em outras coisas, por isso valeu!


5. Re: Trocar fontes no IceWM por shell script [RESOLVIDO]

Francisco Raimundo da Silva
chimico

(usa Debian)

Enviado em 25/02/2012 - 17:39h

Montei um script, este ficou assim:

#!/bin/sh -v
sed -i 's/"-*-.*"/"-*-denmark-*-r-normal-*-*-90-*-*-p-*--*-*"/g' default.theme
sed -i 's/"[a-x]*:size=.*:.*"/"Denmark:size=9:Thin"/g' default.theme

Pode ser adaptado para qualquer fonte e deve ser executado no diretório onde está o arquivo default.theme, ou seja, no diretório do tema do IceWM que você quer modificar.

A primeira linha do sed altera a fonte sem uso do XFT e a segunda com uso deste, logo deve pegá-la tal como está em ~/.gtkrc-2.0


6. Re: Trocar fontes no IceWM por shell script [RESOLVIDO]

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 25/02/2012 - 17:59h

Beleza!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts