Archive for 16 diciembre 2012

Soporte de actividades para Firefox

diciembre 16, 2012

Requisitos

Por un lado se necesita habilitada la sincronización de Firefox con todos las opciones habilitadas excepto las pestañas. A mi no me gusta sincronizar con el servidor oficial de Mozilla así que he habilitado mi propio servidor local de sincronización de Firefox.

Por otro lado hay que verificar que en el directorio:

~/.mozilla/firefox

sólo se tenga un directorio con la forma:

xxxxxxxx.default

Si no fuera así podemos renombrar el directorio y actualizar la ruta en el archivo profiles.ini.

Script firefoxkde

Creamos el fichero:

/usr/local/bin/firefoxkde

y le damos permisos de ejecució con:

chmod +x /usr/local/bin/firefoxkde

Lo editaremos para que su contenido sea:

#!/bin/bash
#
# Compatability for Firefox and kde 4.x's activities.
#

ACTIVITY=$(qdbus org.kde.kactivitymanagerd /ActivityManager CurrentActivity)
FF_FOLDER=$"$HOME/.mozilla/firefox"
DEF_PROF=$"$FF_FOLDER/????????.default"
NEW_PROF=$"$FF_FOLDER/????????.$ACTIVITY"

if [ -d $FF_FOLDER/????????.$ACTIVITY ];
then
        firefox -no-remote -P $ACTIVITY

else
        firefox -no-remote -createprofile $ACTIVITY
        cp -a $DEF_PROF/* $NEW_PROF/
        cd $NEW_PROF
        rm sessionstore.*
        cd ~
        firefox -no-remote -P $ACTIVITY &

fi

exit

Día a día

Como KDE guarda las sesiones vamos primero a salir del firefox actual con Archivo. Salir. para que kde no guarde la sesión del kde actual.

Si necesario también mataremos el proceso si sigue en marcha.

Deshabilitar arranque

En mi caso necesito deshabilitar el arranque del Firefox por defecto sí o sí. Para eso nos vamos a:

  • Preferencias del sistema
  • Administración del sistema
  • Arranque y Apagado
  • Gestor de sesiones
  • Aplicaciones a excluir de las sesiones

en mi caso tuve que añadir:

firefox-bin,/usr/bin/iceweasel,/usr/lib/iceweasel/firefox-bin,iceweasel

aunque es posible que con /usr/bin/iceweasel ya valga. En sistemas no Debian hay que substituir iceweasel por Firefox.

Finalmente pulsamos en el botón Aplicar.

Icono lanzador de Firefox

Yo lanzo Firefox desde un panel que tengo en la parte inferior de la pantalla. Hago click en él con el botón derecho, propiedades.

En la primera pestaña puedo ver su localización. En mi caso en:

/home/adrian/.local/share/applications

y que su nombre es:

iceweasel-2

.

No obstante el fichero no existe en la localización vista. Editamos el lanzador y le añadimos cualquier cambio y guardamos.
Ahora ya podemos editar el fichero:

/home/adrian/.local/share/applications/iceweasel-2.desktop

.
Los cambios que tenemos que hacer son:

Exec=iceweasel %u

para ser:

Exec=firefoxkde %u

Script para borrar profiles antiguos

Creamos el fichero:

/usr/local/bin/firefox-clean-old-activies-profiles

y le damos permisos de ejecució con:

chmod +x /usr/local/bin/firefox-clean-old-activies-profiles

Lo editaremos para que su contenido sea:

#!/bin/bash

ActivityList=( $(qdbus org.kde.kactivitymanagerd /ActivityManager ListActivities |tr '\n' ' ') )
FF_FOLDER=$"$HOME/.mozilla/firefox"
PRESERVED_FOLDERS="pruebasZD pruebasZD2 pruebasZD3 1g5dikse.default"
CRASH_REPORTS="Crash Reports"

cd "${FF_FOLDER}"

for ffile in * ; do

  IGNORE_DELETE="NO"

  if [ -d "${ffile}" ] ; then
    if [ "${CRASH_REPORTS}" = "${ffile}" ] ; then
      IGNORE_DELETE="YES"
    fi
    for npreserved in ${PRESERVED_FOLDERS} ; do
      if [ "${npreserved}" = "${ffile}" ] ; then
      IGNORE_DELETE="YES"
      fi
    done
    for nactivity in "${ActivityList[@]}"; do
      if echo "${ffile}" | grep "${nactivity}" >/dev/null 2>&1; then
      IGNORE_DELETE="YES"	
      fi
    done

  else
    continue
  fi

  dir_to_delete="${ffile}"

  if [ ${IGNORE_DELETE} = "NO" ] ; then
    echo -e -n "We are going to delete: ${dir_to_delete}\n"
    rm -rf ${dir_to_delete}
  else
    echo -e -n "DO NOT DELETE: ${dir_to_delete}\n"
  fi

done

dónde en:

PRESERVED_FOLDERS

ponemos los directorios que no queremos que se borren, siempre y cuando no tengan espacios en el nombre. Si tienen espacios habrá que o bien renombrarlos o bien modificar el script para tenerlos en cuenta y excluirlos del borrado.

Finalmente forzaremos el arranque de este script desde:

  • Preferencias del sistema
  • Administración del sistema
  • Arranque y Apagado
  • Autoarranque

Hacemos click en Añade script… y ponemos la ruta al script:

/usr/local/bin/firefox-clean-old-activies-profiles

.
Descartamos: Crear como symlink. Y click en Aceptar.

Inconvenientes

En mi configuración una vez creada la primera ventana del firefox de actividad las nuevas ventanas hay que crearlas desde el mismo Firefox con Archivo. Nueva Ventana. Ya digo. Seguramente sea cosa de mi configuración y no os tiene porque pasar lo mismo.

El otro inconveniente es que no se arrancan las diferentes sesiones de Firefox automáticamente como si se arrancarían programas distintos en cada actividad. Pero, bueno, casi mejor, así se empieza antes a trabajar.

Bibliografía

Servidor Firefox sync local

diciembre 16, 2012

Voy a aprovechar para hacerme un servidor de firefox sync local porque lo necesito para hacer funcionar Firefox con las actividades de KDE sin romperme mucho el coco.

Requisitos

sudo apt-get install python-dev mercurial sqlite3 python-virtualenv

Instalación

mkdir /usr/local/firefoxsync

para poder hacer:

cd /usr/local/firefoxsync
hg clone https://hg.mozilla.org/services/server-full
cd server-full
make build

Configuración

En  mi caso voy a crear el directorio que albergará las bases de datos de la sincronización de firefox con:

mkdir /home/adrian/.firefoxsync

Y luego tendremos que abrir el fichero:

/usr/local/firefoxsync/server-full/etc/sync.conf

para descomentar:

[nodes]
fallback_node = http://localhost:5000/

y para escribir algo como:

[storage]
sqluri = sqlite:////home/adrian/.firefoxsync/storage.db

[auth]
sqluri = sqlite:////home/adrian/.firefoxsync/auth.db

En nuestro, muy extraño que queremos un servidor local no querremos que nadie desde fuera se nos conecte. Para ello modificaremos:

[server:main]
host = 127.0.0.1

en el archivo:

/usr/local/firefoxsync/server-full/development.ini

Script de arranque

Vamos a preparar un script de arranque de nuestro particular servidor de firefoxsync.

Creamos el fichero:

/usr/local/firefoxsync/mydaemon

con el contenido:

#!/bin/bash
umask 007
cd /usr/local/firefoxsync/server-full
bin/paster serve development.ini

. Le daremos permisos de ejecución con:

chmod +x /usr/local/firefoxsync/mydaemon

Arranque automático del script

Editaremos el archivo:

/etc/rc.local

para colocar antes de la línea:

exit 0

lo siguiente:

nohup /usr/local/firefoxsync/mydaemon 2>&1 >/dev/null &

.

Uso de la sincronización

En mi caso por el tema de las actividades no quiero sincronizar los tabs. Así que no los marcaré.

  • Herramientas
  • Configurar sincronizaci&oaute;n
  • Crear una nueva cuenta
  • Detalles de la cuenta
    • Dirección de correo: La que queramos
    • Password: Uno cualquiera
    • Confirmar password: El mismo de antes
    • Servidor: Usar un server personalizado.
             http://127.0.0.1:5000/
    • Captcha: Rellenarlo.
    • Opciones de sincronización
      • Nombre PC: El que queramos
      • Sincronizar mis: Dejar todo marcado excepto Tabs.
      • En mi caso personal tampoco sincronizo passwords.
    • Siguiente

Entonces empieza a sincronizar y nos aparece el estado en una nueva pestaña.

Securizar que no haya más usuarios

Una vez hayamos sincronizado seguramente no queramos que nadie más, aunque sea de nuestro propio equipo, pueda sincronizar.
Para ello editaremos el fichero:

/usr/local/firefoxsync/server-full/etc/sync.conf

para añadir la línea:

allow_new_users = false

y, claro está, habrá que apagar el servidor de sync de Firefox y volverlo a encender.

Bibliografía