Integrar/Sincronizar Firefox/Thunderbird com o KDE
Publicado por Claudio Polegato Junior 08/04/2005
[ Hits: 6.348 ]
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
CkDeps - Análise de Dependências e Busca por Pacotes Instalados
[ResuLinux] Discador Claro 3G em dialog
Alta disponibilidade IP-Virtual
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (10)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









