Integrar/Sincronizar Firefox/Thunderbird com o KDE
Publicado por Claudio Polegato Junior 08/04/2005
[ Hits: 6.363 ]
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
[Nokia-3g] Configuração do Nokia Internet Stick CS 10
Pequeno Script para você ver a maioria dos filmes e sons.
IA Turbina o Desktop Linux enquanto distros renovam forças
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
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









