Personalizar o OpenOffice para multi-instalação em Linux
O OpenOffice é realmente uma aplicação fantástica. A personalização que se alcança é imensa e quando se pretende disponibilizar para muitos utilizadores, há que ter alguma atenção.
Preciso de disponibilizar o OpenOffice (versão 3.1.0 em Português) para 60 utilizadores de terminais (LTSP) em Linux. O OpenOffice, a primeira vez que os utilizadores o iniciam, apresenta um ecrã de registo, para colocar nome, iniciais, etc… Pergunta se queremos procurar actualizações, apresenta a licença e se desejamos efectuar o registo. Após iniciar, temos mais uma imensidade de opções que podem ser configuradas. Existem também as extensões, e o dicionário em Português (que por incrivel não vem na versão Portuguesa que se descarrega da internet) que têm que ser instaladas automáticamente para cada utilizador.
Ora, eu nao posso deixar que estas coisas fiquem por configurar, principalmente os caminhos dos modelos, porque senão é uma chuva de telefonemas.
Aqui está como foi efectuado.
Sistema Operativo: Ubuntu 7.10 (Gutsy) com LTSP 5 (x2 servidores)
O OpenOffice3 não existe para esta versão do Ubuntu, entao, tive que o descarregar e instalar manualmente.
Instalar o dicionário Português para todos os utilizadores
O dicionário em Português é uma extensão. Os utilizadores podem descarregar extensões e instalar, mas ficam apenas disponiveis para eles. Da seguinte forma, pode-se instalar uma extensão que fique disponível globalmente
<OpenOffice_dir>/program/unopkg add –shared <extensão>
Assim, instalamos as extensões e estas ficam disponiveis para todos. Encontram este exemplo no wiki do OpenOffice.
Alterar o caminho dos modelos
Para se alterar o caminho dos modelos e ficar já configurado antes do utilizador executar o OpenOffice a primeira vez (partindo do principio que existe uma directoria que contém os modelos de documentos a utilizar), editamos o ficheiro <OpenOffice_dir>/basis3.1/share/registry/data/org/openoffice/Office/Paths.xcu
vi Paths.xcu
Vamos avançado pelo ficheiro até chegarmos à linha 138, que mostra o seguinte:
<node oor:name="Template" oor:op="fuse" oor:mandatory="true">
<node oor:name="InternalPaths">
<node oor:name="$(insturl)/share/template/$(vlang)" oor:op="fuse"/>
</node>
<prop oor:name="WritePath">
<value>$(userurl)/template</value>
</prop>
</node>
A linha a negrito deverá ser alterada para refletir a localização da directoria. O parâmetro $(home) reflecte a directoria do utilizador, geralmente /home/<USER> e template onde deverão estar os modelos. No meu caso, eu altero para
<value>$(home)/Modelos</value>
Para saberem mais sobre as variáveis pré-definidas do OpenOffice, consultem o wiki.
Retirar o First Time Wizard
O seguinte vai retirar o Wizard que corre a primeira vez que o utilizador executa o OpenOffice. Temos duas opções para realizar isto:
- Editar directamente os ficheiros de configuração (ainda não consegui retirar a janela que pergunta ao utilizador se pretende registar-se)
- Descarregar uma extenção e registá-la, de forma a retirar o First Time Wizard
Método 1
Editar o ficheiro <OpenOffice_dir>/share/registry/schema/org/openoffice/Setup.xcs
Navegar até à linha 237 onde aparece:
<prop oor:name="FirstStartWizardCompleted" oor:type="xs:boolean">
<info>
<desc>is set to true, when the FirstStartWizard has been completed</desc>
</info>
<value>false</value>
</prop>
O valor a negrito altera-se para true. Desta forma, o Wizard já não irá correr.
Método 2 ( Retirado desta página)
Para a versão 3.1.0, usamos a extensão DisableFirstStartWzd_ooo31.oxt .
Na linha de comandos, executamos o unopkg para a instalar:
<OpenOffice_dir>/program/unopkg add --shared DisableFirstStartWzd_ooo31.oxt
Desta forma, já não vai aparecer o Wizard, nem mesmo se o utilizador quer registar-se.
Personalizar as informações dos utilizadores
Após estar tudo configurado e como deve ser, criei um script que vai alterar as informações dos utilizadores, personalizando para cada um. Para isto, tirei vantagem do suporte de LDAP existente nos servidores.
O OpenOffice cria uma directoria no perfil do utilizador, onde guarda todas as definições do utilizador. Este script (além das alterações já efectuadas em cima) vai alterar o ficheiro UserProfile.xcu criado de base com as informações para cada utilizador.
Como foi feito:
Executei o OpenOffice 3 com um utilizador. Editei as informações do utilizador e coloquei variaveis do estilo _NOME_, _APELIDO_,etc…. Fechei o OpenOffice e copiei o ficheiro UserProfile.xcu para outra localização (/opt). Com o script, vou recolher informações sobre os utilizadores e com a ajuda do sed vou procurar por essas variáveis e substituir pelas correctas. Este processo funciona apenas para utilizadores já existentes.
Aqui fica o script
#!/bin/bash
# Este script permite alterar os dados do utilizador do OpenOffice3 directamente
# nos ficheiros de configuracao - UserProfile.xcu
# Bruno Santos - bvsantos@hal.min-saude.pt
# 2009-09-04
#
# Variaveis que procura
# - _EMPRESA_ : <Empresa>
# - _NOME_ : Nome do utilizador
# - _APELIDO_ : Ultimo nome do utilizador
# - IN : Iniciais
# - _EMAIL_ : Email do utilizador
#
# Linha Original
# getent passwd | awk -F":" '{ print $5 }' | awk -F" " '{print $1" "$NF}'
#
# Defined Variables
#Directory where OpenOffice will save the configuration files
OOdir=.openoffice.org/3/user/registry/data/org/openoffice
#File to update
OOfile=UserProfile.xcu
#Static variables to replace
COMPANY="<empresa>"
COUNTRY="Portugal"
CITY="Castelo Branco"
#UserProfile.xcu file location with its name
OOcopy=/opt/UserProfile.xcu
#Go through every user in /home
for F in /home/*; do
#Put user name in a variable
NAME=`getent passwd | grep $F | awk -F":" '{ print $5 }'`
FIRST=`echo $NAME | awk -F" " '{ print $1 }'` #Primeiro Nome
LAST=`echo $NAME | awk -F" " '{ print $NF }'` #Ultimo Nome
NAMEU=`getent passwd | grep $F | awk -F":" '{ print $1 }'` #Username
#Now, check if directory exists
if [ ! -d $F/$OOdir ]; then
#If not found, create it
echo "Creating directory for user $NAME"
mkdir -p $F/$OOdir
echo "Changing permissions: setting $NAMEU:users"
chown -R `echo $NAMEU`:users $F/.openoffice.org
else
echo "User: $NAME Directory Exists"
fi
#Check if UserProfile.xcu file exits. If not, copy it
if [ ! -f $F/$OOdir/$OOfile ]; then
echo "Copying file $OOfile"
cp /opt/$OOfile $F/$OOdir
fi
#Initials for the name
INI1=`echo $FIRST | cut -c1`
INI2=`echo $LAST | cut -c1`
#Start replacing stuff
echo "Replacing stuff"
sed -i -e "s/_EMPRESA_/`echo $COMPANY`/g"
-e "s/_PAIS_/`echo $COUNTRY`/g"
-e "s/_CIDADE_/`echo $CITY`/g"
-e "s/_EMAIL_/`echo $NAMEU`@<domain>/g"
-e "s/_NOME_/`echo $FIRST`/g"
-e "s/_APELIDO_/`echo $LAST`/g"
-e "s/IN/`echo $INI1$INI2`/g" $F/$OOdir/$OOfile
# fi
done
Eu sei que o script não é a coisa mais optimizada do mundo, mas faz o trabalho dele. Sejam livres de o alterar.
Disponibilizar os atalhos para os utilizadores
O OpenOffice tras com ele uns DEBS para integração no desktop, mas não os vou usar. Como não removi a versão anterior do OpenOffice, os atalhos ainda lá continuam.
Se adicionasse esses .deb, iriam aparecer mais atalhos e garantidamente iria confundir os utilizadores. Acreditem, iria e posteriormente era o cabo dos trabalhos.
Assim, vamos alterar os atalhos já existentes.
Os atalhos para os programas, em Gnome 2.20.1 (Ubuntu 7.10) estão em /usr/share/applications.
ls ooo* -l
-rw-r--r-- 1 root root 7492 2008-11-20 10:23 ooo-base.desktop
-rw-r--r-- 1 root root 8008 2008-11-20 10:23 ooo-calc.desktop
-rw-r--r-- 1 root root 5895 2008-11-20 10:23 ooo-draw.desktop
-rw-r--r-- 1 root root 7975 2008-11-20 10:23 ooo-impress.desktop
-rw-r--r-- 1 root root 5533 2008-11-20 10:23 ooo-math.desktop
-rw-r--r-- 1 root root 226 2008-11-20 13:21 ooo-template.desktop
-rw-r--r-- 1 root root 8736 2008-11-20 10:23 ooo-writer.desktop
Vamos editar cada um deles e alterar o caminho para o programa.
Diferenças:
- Na versão 2, o binário é oofice
- Na versão 3, o binário é soffice e como não está na path, temos que dar o caminho completo
Vou aqui colocar um exemplo, e depois é tudo igual, alterando apenas o parâmetro.
OpenOffice Writer
vi ooo-writer.desktop
Alteramos a seguinte linha:
Exec=ooffice -writer %U
para
Exec=/opt/openoffice.org3/program/soffice -writer %U
Guardamos e saímos. Experimentem executar agora a aplicação carregando no icon que aparece no grupo de programas "Produtividade" (em Português)
Esta página ainda se encontra em construção. Assim que for fazendo mais coisas, irei colocar aqui.