Integrar/Sincronizar Firefox/Thunderbird com o KDE
Publicado por Claudio Polegato Junior 08/04/2005
[ Hits: 6.446 ]
Quando clico sobre um arquivo em uma página no Firefox ou anexo no Thunderbird sempre preciso escolher um programa para abrí-lo, mas este já tem um padrão no KDE. Pensando nisso (e no usuário final), li um pouco da documentação de como é feita a associaçao no KDE e nos Mozilla's Softwares, dei uma raqueada e construi um script que sincroniza o programa padrão que escolho ou já vem pré-configurado no KDE para ser uma opção pronta no Firefox e no Thunderbird.
#!/bin/bash
######################################################
# #
# Programa: criar_mime.types #
# Autor: Claudio Polegato Junior #
# Versão: 0.1 #
# Data: 7 de Abril de 2004 #
# #
######################################################
################################################################################
# #
# Quando clico sobre um arquivo em uma página no Firefox ou anexo no #
# Thunderbird sempre preciso escolher um programa para abrí-lo, mas este já #
# tem um padrão no KDE. Pensando nisso (e na impossibilidade de um usuário #
# final - mas final mesmo - encontrar o programa correto no sistema de #
# arquivos do linux), li um pouco da documentação de como é feita a associaçao #
# no KDE e nos Mozilla's Softwares, dei uma raqueada e construi um script que #
# sincroniza o programa padrão que escolho ou já vem pré-configurado no KDE #
# para ser uma opção pronta no Firefox e no Thunderbird. #
# #
# Este script faz basicamente uma varredura sobre os "mime types" (tipos #
# que especificam o conteúdo o arquivo) com .desktop contidos nos diretórios #
# ~/.kde/share/mimelnk (tipos definidos ou alterados pelo usuário), #
# $KDEDIR/share/mimelnk (tipos padrões do KDE) e /usr/share/mimelnk (tipos que #
# alguns outros softwares definem no Linux). Dessa varredura são então #
# encontrados os "mime types" e as extensões que estão associadas (isso é uma #
# tentativa que faço e aparentemente dá certo). #
# Para cada "mime type" encontrado, primeiramente é verificado se este #
# consta no arquivo ~/.kde/share/config/profilerc (definido pelo usuário e #
# contém uma lista dos "mime types" seguida por um traço e um número e então #
# propriedade associadas a esta prioridade de "mime type") ou no arquivo #
# $KDEDIR/share/config/profilerc (global para o KDE e características ídem ao #
# anterior). Se for encontrado em um destes arquivos, é escolhido o link para #
# aplicativo (.desktop) de prioridade 1, senão realiza uma varredura nos links #
# para aplicativos definidos no KDE constantes nos diretórios #
# ~/.kde/share/applnk (links definidos pelo usuário) e em $KDEDIR/share/applnk #
# (links globais do KDE), ondem é verificado em cada link se há uma referencia #
# para o "mime type" em questão e cria-se uma lista destes links. A partir #
# desta lista, verifica-se qual tem o maior valor na propriedade #
# InitialPreference e este então é dado como o link padrão. Caso houver empate #
# na ordenaçao por InitialPreference, pega o primeiro da lista como link #
# padrão. Caso não encontre InitialPreference em nenhum, pega o primeiro da #
# lista para ser o link padrão. #
# A partir deste arquivo de link padrão encontrado, procura-se a propriede #
# Exec, a qual indica o programa a ser usado para abrir o arquivo que casa com #
# o "mime type" que está sendo analisado. #
# Ufa! Neste ponto tenho um "mime type", as extensões associadas com ele e #
# o programa padrão utilizado pelo KDE. Então crio uma entrada no arquivo #
# ~/.mime.types (primeiro o "mime type" e depois as extensões separadas por #
# espaço) e no arquivo ~/.mailcap (primeiro o "mime type" e depois o programa #
# separados por ponto e vírgula - ; - e terminado por %s). #
# Fazendo-se isso para cada "mime type" do KDE consigo associar os #
# programas padrões do KDE para ser o padrão no Firefox e no Thunderbird. Cada #
# vez que se altera o programa padrão no KDE ou insere um tipo novo deve-se #
# rodar este script para fazer o sincronismo real sem ser necessário sair e/ou #
# reiniciar o Firefox e/ou o Thunderbird. #
# #
# Espero que seja útil para a comunidade... #
# #
################################################################################
if [ -a ~/.mime.types ]; then
mv ~/.mime.types ~/.mime.types_`date +"%Y.%m.%d_%H.%M.%S"`
fi
if [ -a ~/.mailcap ]; then
mv ~/.mailcap ~/.mailcap_`date +"%Y.%m.%d_%H.%M.%S"`
fi
# Mime type modified by current user
MIME_USER_DESKTOP=`find ~/.kde/share/mimelnk -name "*.desktop"`
# Mime type global from KDE
MIME_GLOBAL_DESKTOP=`find $KDEDIR/share/mimelnk -name "*.desktop"`
# Mime type global from Linux
MIME_LINUX_DESKTOP=`find /usr/share/mimelnk/application -name "*.desktop"`
echo
echo "******************************"
echo "***** User Space *****"
echo "******************************"
echo
for MIME_DESKTOP in $MIME_USER_DESKTOP; do
MIME=`expr "$MIME_DESKTOP" : '.*mimelnk/\(.*\).desktop'`
echo "Mime: $MIME"
EXTS=`grep "Patterns\=" "$MIME_DESKTOP" | sed s/Patterns=// | sed s/'*'//g | sed s/'\.'//g | sed y/\;/' '/`
echo "Exts: $EXTS"
PROFILE=""
PROFILERC="$HOME/.kde/share/config/profilerc"
if [ -a "$PROFILERC" ]; then
PROFILE=`expr "\`grep -n "$MIME - 1" "$PROFILERC"\`" : '\(.*\):.*'`
if [ -z "$PROFILE" ]; then
PROFILERC="$KDEDIR/share/config/profilerc"
if [ -a "$PROFILERC" ]; then
PROFILE=`expr "\`grep -n "$MIME - 1" "$PROFILERC"\`" : '\(.*\):.*'`
fi
fi
fi
if [ -z "$PROFILE" ]; then
DESKTOPS=`grep -rl $MIME ~/.kde/share/applnk $KDEDIR/share/applnk`
if [ -n "$DESKTOPS" ]; then
LEVELS=`grep "InitialPreference" $DESKTOPS | rev | sort -r | rev`
if [ -z "$LEVELS" ]; then
for DESKTOP in $DESKTOPS; do
break
done
else
POS=`expr index "$LEVELS" ':'`
if [ $POS == 0 ]; then
DESKTOP=`grep -l "InitialPreference" $DESKTOPS`
else
DESKTOP=`expr substr "$LEVELS" 1 \`expr $POS \- 1\``
fi
fi
else
DESKTOP=""
fi
else
PROFILE=`expr $PROFILE \+ 2`
DESKTOP=`expr "\`sed -n ${PROFILE}p "$PROFILERC"\`" : 'Application=\(.*\)'`
DESKTOP="$HOME/.kde/share/applnk/$DESKTOP"
fi
if [ -n "$DESKTOP" ]; then
PROG=`expr "\`grep '^Exec' "$DESKTOP"\`" : 'Exec=\(.*\)'`
POS=`expr index "$PROG" ' '`
if [ "$POS" != "0" ]; then
PROG=`expr substr "$PROG" 1 \`expr $POS \- 1\``
fi
PROG=`echo "$PROG" | sed s/"'"//g | sed s/'"'//g`
fi
echo "Prog: $PROG"
echo
if [ -n "$PROG" ]; then
if [ -z "$EXTS" ]; then
echo "$MIME" >> ~/.mime.types
else
echo "$MIME $EXTS" >> ~/.mime.types
fi
echo "$MIME;$PROG %s" >> ~/.mailcap
fi
done
echo
echo "********************************"
echo "***** Global Space *****"
echo "********************************"
echo
for MIME_DESKTOP in $MIME_GLOBAL_DESKTOP; do
MIME=`expr "$MIME_DESKTOP" : '.*mimelnk/\(.*\).desktop'`
echo "Mime: $MIME"
EXTS=`grep "Patterns\=" "$MIME_DESKTOP" | sed s/Patterns=// | sed s/'*'//g | sed s/'\.'//g | sed y/\;/' '/`
if [ -a ~/.kde/share/mimelnk/$MIME.desktop ]; then
echo "Exts: *** Modified in User Space *** $EXTS"
echo
continue
fi
echo "Exts: $EXTS"
PROFILE=""
PROFILERC="$HOME/.kde/share/config/profilerc"
if [ -a "$PROFILERC" ]; then
PROFILE=`expr "\`grep -n "$MIME - 1" "$PROFILERC"\`" : '\(.*\):.*'`
if [ -z "$PROFILE" ]; then
PROFILERC="$KDEDIR/share/config/profilerc"
if [ -a "$PROFILERC" ]; then
PROFILE=`expr "\`grep -n "$MIME - 1" "$PROFILERC"\`" : '\(.*\):.*'`
fi
fi
fi
if [ -z "$PROFILE" ]; then
DESKTOPS=`grep -rl $MIME ~/.kde/share/applnk $KDEDIR/share/applnk`
if [ -n "$DESKTOPS" ]; then
LEVELS=`grep "InitialPreference" $DESKTOPS | rev | sort -r | rev`
if [ -z "$LEVELS" ]; then
for DESKTOP in $DESKTOPS; do
break
done
else
POS=`expr index "$LEVELS" ':'`
if [ $POS == 0 ]; then
DESKTOP=`grep -l "InitialPreference" $DESKTOPS`
else
DESKTOP=`expr substr "$LEVELS" 1 \`expr $POS \- 1\``
fi
fi
else
DESKTOP=""
PROG=""
fi
else
PROFILE=`expr $PROFILE \+ 2`
DESKTOP=`expr "\`sed -n ${PROFILE}p "$PROFILERC"\`" : 'Application=\(.*\)'`
DESKTOP="$HOME/.kde/share/applnk/$DESKTOP"
fi
if [ -n "$DESKTOP" ]; then
PROG=`expr "\`grep '^Exec' "$DESKTOP"\`" : 'Exec=\(.*\)'`
POS=`expr index "$PROG" ' '`
if [ "$POS" != "0" ]; then
PROG=`expr substr "$PROG" 1 \`expr $POS \- 1\``
fi
PROG=`echo "$PROG" | sed s/"'"//g | sed s/'"'//g`
fi
echo "Prog: $PROG"
echo
if [ -n "$PROG" ]; then
if [ -z "$EXTS" ]; then
echo "$MIME" >> ~/.mime.types
else
echo "$MIME $EXTS" >> ~/.mime.types
fi
echo "$MIME;$PROG %s" >> ~/.mailcap
fi
done
echo
echo "*******************************"
echo "***** Linux Space *****"
echo "*******************************"
echo
for MIME_DESKTOP in $MIME_LINUX_DESKTOP; do
MIME=`expr "$MIME_DESKTOP" : '.*mimelnk/\(.*\).desktop'`
echo "Mime: $MIME"
EXTS=`grep "Patterns\=" "$MIME_DESKTOP" | sed s/Patterns=// | sed s/'*'//g | sed s/'\.'//g | sed y/\;/' '/`
if [ -a ~/.kde/share/mimelnk/$MIME.desktop ]; then
echo "Exts: *** Modified in User Space *** $EXTS"
echo
continue
if [ -a $KDEDIR/share/mimelnk/$MIME.desktop ]; then
echo "Exts: *** Modified in Global Space *** $EXTS"
echo
continue
fi
fi
echo "Exts: $EXTS"
PROFILE=""
PROFILERC="$HOME/.kde/share/config/profilerc"
if [ -a "$PROFILERC" ]; then
PROFILE=`expr "\`grep -n "$MIME - 1" "$PROFILERC"\`" : '\(.*\):.*'`
if [ -z "$PROFILE" ]; then
PROFILERC="$KDEDIR/share/config/profilerc"
if [ -a "$PROFILERC" ]; then
PROFILE=`expr "\`grep -n "$MIME - 1" "$PROFILERC"\`" : '\(.*\):.*'`
fi
fi
fi
if [ -z "$PROFILE" ]; then
DESKTOPS=`grep -rl $MIME ~/.kde/share/applnk $KDEDIR/share/applnk`
if [ -n "$DESKTOPS" ]; then
LEVELS=`grep "InitialPreference" $DESKTOPS | rev | sort -r | rev`
if [ -z "$LEVELS" ]; then
for DESKTOP in $DESKTOPS; do
break
done
else
POS=`expr index "$LEVELS" ':'`
if [ $POS == 0 ]; then
DESKTOP=`grep -l "InitialPreference" $DESKTOPS`
else
DESKTOP=`expr substr "$LEVELS" 1 \`expr $POS \- 1\``
fi
fi
else
DESKTOP=""
PROG=""
fi
else
PROFILE=`expr $PROFILE \+ 2`
DESKTOP=`expr "\`sed -n ${PROFILE}p "$PROFILERC"\`" : 'Application=\(.*\)'`
DESKTOP="$HOME/.kde/share/applnk/$DESKTOP"
fi
if [ -n "$DESKTOP" ]; then
PROG=`expr "\`grep '^Exec' "$DESKTOP"\`" : 'Exec=\(.*\)'`
POS=`expr index "$PROG" ' '`
if [ "$POS" != "0" ]; then
PROG=`expr substr "$PROG" 1 \`expr $POS \- 1\``
fi
PROG=`echo "$PROG" | sed s/"'"//g | sed s/'"'//g`
fi
echo "Prog: $PROG"
echo
if [ -n "$PROG" ]; then
if [ -z "$EXTS" ]; then
echo "$MIME" >> ~/.mime.types
else
echo "$MIME $EXTS" >> ~/.mime.types
fi
echo "$MIME;$PROG %s" >> ~/.mailcap
fi
done
Multiplos gerenciadores nome do seu pacote
SLAC - Programa de manutenção para Slackware 14x
diskSpace - acha os dez maiores gastadores de espaço em disco
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (11)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









