Integrar/Sincronizar Firefox/Thunderbird com o KDE
Publicado por Claudio Polegato Junior 08/04/2005
[ Hits: 6.109 ]
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
Automatizando backups no Samba
Criando pdf para impressão de livros
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta