Desenvolvemento de GALPon MiniNo
De Gruvi
|
Consideracións iniciais
GALPon Mini 2008 non pretende ser unha distribución, de feito non o é, tan só pretende ser unha ferramenta para simplificar a instalación dun S.O GNU/Linux con baixos requerimentos de máquina.
Porqué de GALPon Mini 2008
Despois de moito e gratificante traballo coa Guadalinex_Mini 2004 a vista de que precisabamos algunha prestación máis, concretamente dispor de Abiword 2.4, para poder traballar con formatos ODF, e iso non era posible por moito que "subiramos" o núcleo xa que chegaba un momento no que "rachaba" todo. Polo tanto, dispuxemonos a buscar unha alternativa, e "imitando a Guadalinex Mini 2004 empezamos a traballar sobre as mismas bases.
- Núcleo o máis lixeiro posible.
- Ferramentas básicas de baixo requerimento e as maiores prestacións posibles.
- Estética de escritorio o máis amable posible.
- Poder instalala en máquinas PII/K6 con 128 MB de RAM (incluso as veces con 92 ou 64 MB) e discos de só 4 GB
Xa que eu personalmente só me desenvolvo razonablemente ben en Debian e que as súas "fillas" son en xeral moito máis pesadas, por moito que se intente facer unha instalación ó mínimo e se busque o xestor de escritorio máis lixeiro, non dimos feito con elas unha instalación que se desenvolvera no traballo cunha mínima dignidade.
Probamos un feixe de distribucions "light", as que tiñan un mínimo aceptable como Vector Linux (semi lixeira), Absolute Linux (lixeira), Feather (lixeira), Austrumi (lixeira).tiñan defectos como que eu non me desenvolvo nada ben con Slackware e precisan de dispositivos relativamente modernos (tivemos moitas dificultades con tarxetas ISA).
Deli Linux, Damn Small Linux, Puppy Linux, etc... plantexaban o mesmo problema que tiñamos coa Guada Mini i é que a súa paquetería acostuma ser versións moi antigas cos mismos problemas que xa tiñamos e nalgúns casos a súa "interface" é moi basta.
Outro dos grandes problemas que se plantexaban era o das localizacións, xa non digamos ó Galego, e que nin siquera era doado dispor delas ó 90% en Castelan, coa excepción dalgunha versión moi antiga que está bastante ben castelanizada por algunha comunidade suramericana (Arxentina especialmente).
Dentro da familia de moda Ubuntu probamos UbuntuLIte ( a antiga versión con IceWM e a máis actual con FluxBox), FluxBuntu, Linux Mint Darina FluxBox CE (xa desaparecida) todas elas, debido o núcleo, plantexaban moitos problemas co reconocemento dos discos IDE antigos ou resultaban moi pesadas e torpes.
A vista do anterior traballamos a busca de solucións en base o seguinte:
- Base Debian estable
- Xa tiñamos comprobado como instalacións completas con KDE ou Gnome desenvolvianse razonablemente ben en máquinas con PII de 333 MHz con 128 MB de RAM
- Xestor de ventanas IceWM
- O meu favorito, xa que despois de moitas probas cheguei a conclusión de que (de selo) é moi pouco máis pesado que outros con moita sona de ser os máis lixeiros, ademáis é o que mellor coñezo e resultame moi doada a súa configuración e "tuneado" de aspecto gráfico.
- Xestor de ficheiros e soporte de "escritorio" ROX-Filer
- Non só é un xestor de iconas moi doado de uso, sen precisar da edición de "scripts" como idesk etc ... senón que como xestor de ficheiros non envexa nada os "poderosos" de contornas pesadas. Así mesmo dispón de algunhas ferramentas propias moi lixeiras e axeitadas ó noso proposito (Archive, Edit, Picky, soporte de "paneis", "Applets" ...etc).
Sí, esta é exactamente a misma base da Guadalinex Mini 2004 por iso, como unha homenaxe a ela, bauticei este traballo co nome de GALPon Mini 2008
Para qué GALPon Mini 2008
Como deciamos antes, GALPon Mini 2008, non está concebida como unha distribución senón máis ben como unha ferramenta xa que a nosa necesidade é poder facer unha serie de instalacións de algo que xa existe, que non precisa de ningún engadido, so precisamos facer unha escolla de aplicacións e a súa correspondente configuración.
Tendo en conta que seguir todo o proceso que indicamos neste documento en 20 ou 30 máquinas resulta especialmente tedioso e non libre da posibilidade de erros, decidimos facer unha ferramenta que facilitase todo este proceso, despois de algunhas probas con "scripts" que automatizaban o proceso, chegamos a conclusión de que ese non era o xeito máis doado, así que é neste punto no que se pensa en facer unha instalación "prototipo", cos requerimentos mínimos imprescindibles para ter unha instalación funcional, e a partir dela facer un "instalador" en forma de .iso que poideramos transladar a CDs e traballar de forma eficaz.
E xa coa .iso nas mans, acorde coa nosa filosofía, poñelo nun servidor e incluso en algún espello para que a comunidade poida utilizalo.
Requisitos de máquina
Mínimos
- Procesador Pentium II - AMD K6/2 - 166 MHz (MMX)
- 64 MB de RAM
- (probado é funcionando con memorias EDO)
- Disco ríxido de 1,0 GB
- (apenas queda espacio para directorio /home, só recomendable para desempeños que non precisen gardar documentos)
Recomendable
- Procesador Pentium II - AMD K6/2 - >= 300 MHz
- 128 MB de RAM
- Disco ríxido >= 2,0 GB
Comparativa de xestores e aplicacións
nesta páxina http://debian.cante.net/stem/faq/index.html fan unhas comparativas que utilicei como referencia para a escolla de xestores e aplicacións.
COMOs ou Proceso de construcción de GALPon Mini 2008
- Instalación básica de Debian Etch e Lenny/Testing
- Engadindo IceWM + ROX-Filer
- Engadindo IceWM + ROX
- Configuración común de ROX-Filer e IceWM
- Trastero GALPon MiniNo
Notas do proceso de construcción de GALPon MiniNo 1.2 2009
Todo este proceso irá redactado en castellano, ya que Antonio no es gallego y, aunque lo entiende, le resulta más comprensible todo si está en su idioma natal, para los gallego hablantes no nos supone ningún obstáculo, así que...
- Normas/reglas de "empaquetado" final
- TODO - v1.2
- Instalación básica de trabajo
- Gettext_izar en "Bash scripting"
- Gettext_izar en "C"
- Gettext_izar en "Perl"
- Gettext_izar en "Python"
- Utilizando SSHFS para enviar ficheros de MiniNo a repos y viceversa
- Un sistema con SaMBa muy sencillo
- Uso de condicionales (if) poco frecuentes
Agosto 16
El XDM del MiniNo ya dispone de botones de Reinicio y Apagar directamente en la pantalla de login.
Todo este proceso depende del grupo de utilidades Tk para Tcl y X11, v8.5 - run-time files y de su leguage de programación wish (para este caso tan sencillo, podemos utilizar las versiones 8.3 ó 8.4 si ya la tenemos instalada)
sudo apt-get install tk8.5
Recordemos que para que funcione el XDM tiene que haber sido instalado, así como, para las imágenes del fondo de MiniNo también deberemos disponer de xloadimage
sudo apt-get install xdm xloadimage
Añadir a: /etc/X11/xdm/Xsetup
/usr/local/sbin/xdmshutdown -geometry +350+400 & echo $! > /var/run/xdmshutdown.pid
La primera línea ejecuta el script xdmshutdown y determina las posiciones en la pantalla.
La segunda línea escribe el PID de xdmshutdown en el fichero /var/run/xdmshutdown.pid.
Añadir a: /etc/X11/xdm/Xstartup
(Nota: deben ir al principio del fichero antes de la línea PATH="$PATH:/usr/bin/X11")
Si no se elimina el botón después de un inicio de sesión este permanecerá visible en nuestro escritorio. Este código elimina el botón después de un inicio de sesión.
pid=$(cat /var/run/xdmshutdown.pid 2>/dev/null) test "$pid" && kill -9 $pid 2>/dev/null
La primera línea almacena el PID de xdmshutdown en la variable $pid (si existe en el fichero /var/run/xdmshutdown.pid). Si no existe, entonces, el mensaje de error va a null.
La segunda línea comprueba si la variable $pid contiene un valor. Si es así, entonces, la orden kill mata el proceso número $pid (nuestro script botón de apagado). Cualquier error irá a /dev/null y nuestro botón de apagado desaparece.
Como vemos, esta instrucción de "muerte" del reloj, depende de kill, si no nos funcionara, deberemos instalar el paquete psmisc
sudo apt-get install psmisc
Script xdmshutdown
Colocar este script en /usr/local/sbin.
Asegúrarsese de que el propietario de xdmshutdown es root
sudo chown root:root /usr/local/sbin/xdmshutdown
Hacer xdmshutdown ejecutable
sudo chmod +x /usr/local/sbin/xdmshutdown
#!/usr/bin/wish
#
# Definimos el texto de los botones en función del idioma (aún sin completar)
variable LANG es
if {LANG == "es" || LANG == "gl"} {
variable REB Reiniciar
variable SHUT Apagar
} elseif {LANG ==fr} {
variable REB Redémarrer
variable SHUT Arrêter
} else {LANG == *} {
variable REB Reboot
variable SHUT Shutdown
}
proc shutdownf {} { exec /sbin/shutdown -h now 2>/dev/console >/dev/console }
proc rebootf {} { exec /sbin/reboot 2>/dev/console >/dev/console }
button .shutdown -text "$SHUT" \
-relief flat \
-bg #dfe9fe \
-activebackground #234c65 \
-fg #234c65 \
-activeforeground #dfe9fe \
-width 10
-command shutdownf
button .reboot -text "$REB" \
-relief flat \
-bg #dfe9fe \
-activebackground #234c65 \
-fg #234c65 \
-activeforeground #dfe9fe \
-width 10 \
-command rebootf
pack .reboot -side left
pack .shutdown -side right
Las dos primeras líneas definen una orden a ejecutar y la asocia con los procesos shutdownf y rebootf.
Las tercera y cuarta líneas crean un botón que contiene una etiqueta de texto, se definen algunos de los colores en el botón. Si alguien hace clic en el botón se ejecuta la orden shutdownf.
La quinta y sexta líneas muestran los botones.
En los parámetros:
-relief flat \ -bg #dfe9fe \ -activebackground #234c65 \ -fg #234c65 \ -activeforeground #dfe9fe \
Definimos los botones sin relieve, por ser más acordes a nuestro diseño de XDM, así como definimos los colores del fondo y de la ventana de login y jugamos con ellos invirtiendo los valores de fondo y texto al pasar el ratón sobre ellos.
El parámetro -side determina la posición de los botones, unos respecto a otros, en el definimos el borde de alineación. Sus valores pueden ser:
- bottom, top, left y right
Con los valores top y bottom los situaríamos uno encima del otro. Si bien al ser solo dos, podríamos utilizar en ambos top o en ambos bottom, la diferencia estará en que top respetará el orden en que están definidos en el script y bottom nos los invertirá.
Exactamente lo mismo, pero en horizontal será lo que suceda con left y right.
Standard options supported by widgets
Posicionamiento de los botones
Deberemos ajustar la línea en /etc/X11/xdm/Xsetup, para ajustarla a nuestra ventana de login
Vamos a ver algunos supuestos:
Para monitor de 1440x900 situando los botones en la parte inferior de la "tarjeta" de login y centrados con respecto a ella.
/usr/local/sbin/xdmshutdown -geometry +610+480 &
Colocar los botones en la esquina superior izquierda.
/usr/local/sbin/xdmshutdown -geometry +20+20 &
Colocar los botones en la esquina inferior derecha, sin conocer previamente la resolución
/usr/local/sbin/xdmshutdown -geometry -20-20 &
Recordemos que en los valores -geometry +XXX+YYY
- El primer campo (XXX) determina la distancia en dots entre el borde izquierdo de la pantalla y el borde izquierdo del botón (de ser dos o más en horizontal, el borde del que quede más a la izquierda)
- El segundo campo (YYY) determina la distancia en dots entre el borde superior de la pantalla y el borde superior del botón (de ser dos o más en vertical, el borde del botón superior)
Posición de los botones en la parte inferior de la "tarjeta" de login del MiniNo en las distintas resoluciones:
RESOL=$(xrandr|tail -n +3|cut -d " " -f4 |sed -n '1p') case $RESOL in 1600x1024) GEOM="+690+546" ;; 1440x900) GEOM="+610+480" ;; 1400x1050) GEOM="+590+560" ;; 1360x768) GEOM="+570+409" ;; 1280x1024) GEOM="+538+574" ;; 1280x960) GEOM="+538+538" ;; 1280x800) #no expande imagen GEOM="+538+444" ;; 1280x768) #aprox GEOM="+538+426" ;; 1152x864) GEOM="+475+479" ;; 1152x768) #aprox GEOM="+475+426" ;; 1024x768) GEOM="+412+426" ;; 1024x600) GEOM="+442+410" ;; 960x600) GEOM="+442+410" ;; 832x624) GEOM="+317+340" ;; 800x600) GEOM="+303+328" ;; 720x400) GEOM="+280+214" ;; 640x480) GEOM="+240+256" ;; *) GEOM="+20+20" ;; esac /usr/local/sbin/xdmshutdown -geometry $GEOM & echo $! > /var/run/xdmshutdown.pid
Descarga directa de ficheros ya configurados
Descargamos (del repo de MiniNo) y enviamos a su ubicación final los ficheros de configuración del XDM de MiniNo
Fichero Xresources
sudo wget http://gruvi.galpon.org/minino/2009/config/etc/X11/xdm/Xresources -O /etc/X11/xdm/Xresources
Fichero Xsetup
sudo wget http://gruvi.galpon.org/minino/2009/config/etc/X11/xdm/Xsetup -O /etc/X11/xdm/Xsetup
Fichero Xstartup
sudo wget http://gruvi.galpon.org/minino/2009/config/etc/X11/xdm//Xstartup -O /etc/X11/xdm/Xstartup
Fichero xdmshutdown
sudo wget http://gruvi.galpon.org/minino/2009/config/usr/local/sbin/xdmshutdown -O /usr/local/sbin/xdmshutdown
Ficheros de imagenes fondo de XDM
sudo wget http://gruvi.galpon.org/minino/2009/config/usr/share/X11/xdm/pixmaps/xdm-1024.jpg -O /usr/share/X11/xdm/pixmaps/xdm-1024.jpg sudo wget http://gruvi.galpon.org/minino/2009/config/usr/share/X11/xdm/pixmaps/xdm-1024x600.jpg -O /usr/share/X11/xdm/pixmaps/xdm-1024x600.jpg sudo wget http://gruvi.galpon.org/minino/2009/config/usr/share/X11/xdm/pixmaps/azul-2009.jpg -O /usr/share/X11/xdm/pixmaps/azul-2009.jpg
Agosto 14
Toca ya compilar el lxp-icewm modificado por nosotros, pero la configuración (./configure ...) se nos hace cuesta arriba, así que contando con la ayuda del "padre" de lxp-icewm, Manuel Carrasco, definimos una línea de ./configure bastante compleja:
./configure --prefix=/usr --exec-prefix=/usr --datadir=/usr/share --sysconfdir=/usr/share \ --with-docdir=/usr/share/doc --enable-lookxp --enable-gradients --enable-antialiasing \ --enable-guievents --enable-menu-leftpixmap --enable-taskbutton-over
Una opción muy cómoda es meter esta línea en un fichero de texto configura y despues ejecutar
configura.sh
Agosto 10
Para concluir el trabajo de adaptación de lxp-icewm hemos eliminado todo lo que significara parecerse a Ruin2 incluidos los temas que simulaban ese parecido y reescribimos y redibujamos nuestros ya habituales temas Elberg con un nuevo "look".
Agosto 9
lxp tiene un par de utilidades que son útiles pero que hemos retocado para el minino.
- lxp-switch-desktop: un menú para cambiar de escritorios (rox, pcmanfm y sin escritorio).
- lxp-icewm-keyboards: un menú para cambiar el teclado (español, inglés/USA, alemán, italiano y francés).
Al principio del lxp-switch-desktop hemos puesto un case de idioma para que cargue el escritorio rox según sea minino-es minino-gl o minino-en (se pueden añadir más en cualquier momento).
case $LANG in
es*)
escritorio_rox="minino-es"
;;
gl*)
escritorio_rox="minino-gl"
;;
*) # Other
escritorio_rox="minino-en"
;;
esac
En la variable DESKS hay que añadir ROX-Filer y pcmanfm para que los pueda cerrar al elegir otro escritorio.
DESKS="lxp-icewmbg idesk xfdesktop nautilus kdesktop rox ROX-Filer pcmanfm"
Más abajo, en el CASE correspondiente a rox hemos modificado:
rox) rox -p $escritorio_rox -t $escritorio_rox & ;; pcmanfm) pcmanfm & ;; *) return ;; esac
Recordatorio: el escritorio predefinido se guarda en ~/.lxp-icewm/.defaultdesktop
En cuanto a lxp-icewm-keyboards, lo hemos modificado para que guarde la configuración del teclado en sucesivas sesiones.
En la penúltima línea:
fi [ -n "$command" ] && echo "prog \" _$I18\" $icon /bin/sh -c '$command;echo $k>~/.lxp-icewm/.defaultkeyboard'"
Como vemos, se guardará en: ~/.lxp-icewm/.defaultkeyboard
Luego leemos ese archivo en cada inicio añadiendo en ~/.lxp-icewm/startup las siguientes líneas para establecer el teclado predeterminado en la sesión X con setxkbmap y también el escritorio predeterminado que queda guardado en .defaultdesktop:
case $LANG in
es*)
escritorio_rox="minino-es"
;;
gl*)
escritorio_rox="minino-gl"
;;
*) # Other
escritorio_rox="minino-en"
;;
esac
setxkbmap `cat ~/.lxp-icewm/.defaultkeyboard`
defaultdesktop=`cat ~/.lxp-icewm/.defaultdesktop`
case $defaultdesktop in
rox)
rox -p $escritorio_rox -t $escritorio_rox &
;;
pcmanfm)
pcmanfm&
;;
none) # Sin ná
echo "Sin ná de ná"
;;
esac
Agosto 3
GRandR ya está internacionalizado y probado.
ROX-Trash
Las traducciones van en texto simple en una estructura "case" en el fichero "item-template"
Tambien hay que traducir el "AppInfo.xml" → ojo con las tildes, deben ir con su entidad en hexa
á => á Á => Á é => é É => É í => í Í => Í ó => ó Ó => Ó ú => ú Ú => Ú ñ => ñ Ñ => Ñ ü => ü Ü => Ü © => © ® => ® & => &
http://www.htmlquick.com/es/reference/character-entity-reference.html
Debemos modificar el fichero "trash-icon" según estas pautas:
#!/bin/bash # Julio, 2009 - Equipo de desarrollo de GALPon MiniNo # basado en el trabajo previo de Gabriel Rojas y Fernando Garcia Bermudez # Determine the path to this application. APPDIR=`dirname "$0"` cd "$APPDIR" APPDIR="`pwd`" empty_icon="RUTA_A_ICONO_VACIO" full_icon="RUTA_A_ICONO_LLENO" if [ "$1" = "full" ];then ln -sf "$full_icon" "$APPDIR/.DirIcon" rox -x "$APPDIR" else ln -sf "$empty_icon" "$APPDIR/.DirIcon" rox -x "$APPDIR" fi exit
Agosto 2
ROX-minino - La base de minino_desktop
A ROX le hemos hecho las siguientes modificaciones:
Cambios en menu.c
El menú ahora es menos caótico y más práctico. Hemos añadido un buscador (catfish), un renombrador masivo (purrr) y la posibilidad de abrir la ventana actual como administrador (script rootrox) y la opción de crear un fichero vacío.
línea 152-153
static void buscador(gpointer data, guint action, GtkWidget *widget); static void rootrox(gpointer data, guint action, GtkWidget *widget);
línea 191
{N_("Create an empty file"), NULL, new_file, 0, "<StockItem>", GTK_STOCK_FILE},
línea 258
{N_("Search"), "<Ctrl>B", buscador, 0, "<StockItem>", GTK_STOCK_FIND},
líneas 262 a 294
static void rootrox(gpointer data, guint action, GtkWidget *widget)
{
const char *argv[] = {"rootrox", "", NULL, NULL};
gboolean close = action;
argv[2] = o_menu_xterm.value;
g_return_if_fail(window_with_focus != NULL);
if (rox_spawn(window_with_focus->sym_path, argv) && close)
gtk_widget_destroy(window_with_focus->window);
}
static void buscador(gpointer data, guint action, GtkWidget *widget)
{
const char *argv[] = {"buscador", "", NULL, NULL};
gboolean close = action;
argv[2] = o_menu_xterm.value;
g_return_if_fail(window_with_focus != NULL);
if (rox_spawn(window_with_focus->sym_path, argv) && close)
gtk_widget_destroy(window_with_focus->window);
}
static void renombrador(FilerWindow *filer_window)
{
GList *paths;
paths = filer_selected_items(filer_window);
run_with_files ("/usr/local/bin/renombrador",paths);
destroy_glist(&paths);
}
líneas 2016-2017
/*bulk_rename(window_with_focus->sym_path, items);*/ renombrador (window_with_focus);
Hay un "diff" disponible aquí.
En la misma carpeta de rox, hemos añadido los programas: MIME-Editor, MIME-types, Thumbs y VideoThumbnail. Por el sencillo motivo de que son programas que están en las opciones de rox-filer y da mucho coraje picar y que no ocurra nada ;-)
También hemos añadido AppFactory por su gran utilidad para hacer wrappers o lanzadores típicos de rox.
Para evitar que se instale 0launch y permitir lanzar los programas anteriores hemos recurrido al truco de crear un archivo llamado 0launch que realmente no hace nada más que ejecutar lo que tenemos como argumento.
#!/bin/sh $@
Para rematar el truco hay que cambiar el archivo Options.xml
... <launch uri="videothumbnail" label="Video thumbnails" appname="VideoThumbnail"/> ... <launch uri="thumbs" label="Manage thumbnails" appname="Thumbs"/>
Otra de las cosas que hemos añadido ha sido las bibliotecas típicas de los miniprogramas de rox (ROX-Clib y ROX-Lib2) dentro de la carpeta de rox para no tener que descargarlas e instalarlas a parte. Como solo mira en el directorio personal ~/lib y en /usr/lib, en el archivo que ejecuta rox-filer hemos añadido la ruta en la que se encuentra rox:
rutarox=`dirname "$0"` rutarox=`cd "$rutarox";pwd`;export rutarox PATH="$PATH:$rutarox"; export PATH LIBDIRPATH=$rutarox/lib; export LIBDIRPATH
De esta forma los programas buscan sus bibliotecas en la carpeta de ....ROX-Filer/lib. También añadimos la ruta de rox al PATH para ejecutar los programas extras que hemos comentado antes.
Añadido también los MIME-types del minino que usamos en la versión anterior. Añadido el tema de iconos del minino para que sea éste el que salga como predeterminado, en vez del tema azul de rox.
Añadido un programa extra llamado atool para descompresión y compresión de archivos. Es un paquete que está en el repositorio de debian, pero es únicamente un pequeño script en perl tan pequeño que merece la pena que forme parte de rox, ya que la compresión-descompresión de archivos es básico a la hora de administrar archivos.
Añadido script rootrox, que lo único que hace es llamar a rox con gksudo.
Añadido script rox-open para que se puedan abrir los archivos que encuentra Catfish.
Añadido script sendto y mimetipes que copia la configuración del minino a la carpeta correspondiente en home en el idioma del sistema. También puede servir para cuando se crean más usuarios (no la toca si ya existe).
Añadido un script que lanza rox, simplemente va en /usr/local/bin/rox y su contenido es indescifrable:
#!/bin/sh /usr/local/rox-filer-2.9/ROX-Filer/rox $@
La carpeta SendTo tiene scripts contextuales, es decir, que aparecerán en el menú de rox dependendiendo del tipo de archivo que esté seleccionado.
Solo hay unos scripts básicos, ya que despues se pueden seguir añadiendo este tipo de scripts en el directorio ~/Apps o en ~/.config/rox-sourceforge.net/SendTo. Estos scripts pueden ser simplemente enlaces simbólicos o wrappers.
Comprimir y Descomprimir: scripts muy prácticos que pueden descomprimir varios archivos a la vez, simplemente seleccionándolos y enviándolos a descomprimir. Soportan muchísimos formatos (todos los de atool). Además no te dejan con cara de bobo como Archive sin saber si ha terminado o no la compresión-descompresión.
Editar con Mtpaint. (ya que al picar sobre una imagen se abre el visor, pero no el editor)
Editar con Sodipodi.
Abrir en nueva ventana: útil para cuando queremos abrir una carpeta en una nueva ventana.
Hay un problema aún no resuelto y es precisamente la aparición de estos scripts en el idioma deseado. El primer idioma es el que se copia adecuadamente, despues, los cambios de idioma no se tienen en cuenta a menos que se borre la carpeta .config/rox.sourceforge.net/SendTo manualmente. No se puede automatizar este borrado porque se borrarían también los archivos creados por los usuarios.
Purrr - Renombrador masivo
Modificado Purrr para mejor usabilidad: cambiado el orden del esquema para el contador [c]
Antes, para conseguir, por ejemplo, renombrar con un contador de tres dígitos se hacía de la siguiente forma: [c,0,,3]
Ahora, [c,3]
Así es más práctico porque las opciones de saltar números y comenzar desde un número determinado son menos usuales.
Código modificado en el archivo renamer.py:
def parse_counter(self, str):
m = re.match("^[Cc](?P<name>\d+)?$", str)
if m:
return (m.group('name'), 1, 1, 1, None)
m = re.match("^[Cc](?P<name>\d+)?,(?P<start>[+-]?\d+)?$", str)
if m:
return (m.group('name'), 1, 1, int(m.group('start') or 1), None)
m = re.match("^[Cc](?P<name>\d+)?,(?P<start>[+-]?\d+)?,(?P<step>[+-]?\d+)?$", str)
if m:
return (m.group('name'), int(m.group('step') or 1), 1, int(m.group('start') or 1), None)
m = re.match("^[Cc](?P<name>\d+)?,(?P<start>[+-]?\d+)?,(?P<step>[+-]?\d+)?,(?P<pad>[+-]?\d+)?$", str)
if m:
return (m.group('name'),int(m.group('step') or 1), int(m.group('pad') or 1), int(m.group('start') or 1), None)
Para transformarlo en un wrapper de rox y que se pueda copiar y ejecutar en cualquier sitio hemos hecho algunas modificaciones más:
Hemos creado un módulo llamado “directoriodetrabajo.py” en /tmp que únicamente contiene desde dónde se está ejecutando purrr y se guarda en la variable libdir, que necesita purrr para poder ejecutarse. Antes era constante y ahora es como una variable.
En los archivos purrr.py, renamer.py y matcher.py hay que importar este directoriodetrabajo.py. También hay que usarlo para la localización de gettext.
import directoriodetrabajo import gettext APP="purrr" DIR= directoriodetrabajo.libdir+"/po"
El directoriodetrabajo.py lo crea el script que inicia purrr. En el wrapper es AppRun.
rutapurrr=`dirname "$0"` directoriodetrabajo="libdir='$rutapurrr'" echo $directoriodetrabajo >/tmp/directoriodetrabajo.py $rutapurrr/purrr.py $@
Agosto 1
Concluida la internacionalización de Purrr (python+glade) y de AbsVolume (C), ahora le toca el turno a Ceni (perl+ncurses) y GRandR (C+glade)
Julio 31
Aunque parezca que no se hace nada ya que estamos calladitos, seguimos trabajando.
Estos días pasados estabamos todos haciendo cositas de "hormiguitas", Antonio pegandose con la futura configuración del escritorio, del que ya tenemos una captura previa.
Por mi parte me dediqué a hacer de forma canónica la internacionalización (i18n) de todos nuestros scripts y de otras aplicaciones que estamos "robandole" a otras distros como AbsVolume (Absolute Linux) Ceni (Sidux), etc... fruto de ello son los manuales que sobre el tema estamos desarrollando en esta misma wiki y cuyos enlaces teneis un poco más arriba.
Estamos tratando tambien de solucionar de forma "comoda y sencilla" la sustitución de Xorg como gestor de (mapas de) teclado, que ahora es trabajo de "hal".
Julio 16 y 17
Probando Olix para tratar de incorporarlo
Encontramos fallos en la generación de menús en MiniNo. Entre otras cosas los ficheros con nombres con espacios (Editar con mtPaint) nos lo convierte en tres entradas de menú [Editar], [con] y [mtPaint] solucionamos la rutina así:
Script original /usr/bin/olix-icewm_create_menu
#!/bin/bash
[ $# == 1 ] && DIR=$1 || DIR=${HOME}/progs
[ -d $DIR ] || exit 1
C_DIR=`dirname $0`
C_PROG=`basename $0`
for I in `ls $DIR`;do
echo $I
if [ -d "$DIR/$I" ] && [ -f "$DIR/$I/AppRun" ];then
if [ -f "$DIR/$I/.MenuIcon" ];then
echo "prog \"$I\" \"$DIR/$I/.MenuIcon\" \"$DIR/$I/AppRun\""
else
echo "prog \"$I\" \"$DIR/$I/.DirIcon\" \"$DIR/$I/AppRun\""
fi
elif [ -d $DIR/$I ];then
echo "menuprog \"$I\" folder \"$C_DIR/$C_PROG\" \"$DIR/$I\""
elif [ -x $DIR/$I ];then
echo "prog \"$I\" $I \"$DIR/$I\""
else
echo ""
fi
done
Script modificado con soporte para archivos .desktop y para tener en cuenta los iconos de los directorios.
#!/bin/bash
[ $# == 1 ] && DIR=$1 || DIR=${HOME}/progs
[ -d $DIR ] || exit 1
C_DIR=`dirname $0`
C_PROG=`basename $0`
ls -1 $DIR|while read I;
do
if [ -d "$DIR/$I" ] && [ -f "$DIR/$I/AppRun" ];then
if [ -f "$DIR/$I/.MenuIcon" ];then
echo "prog \"$I\" \"$DIR/$I/.MenuIcon\" \"$DIR/$I/AppRun\""
else
echo "prog \"$I\" \"$DIR/$I/.DirIcon\" \"$DIR/$I/AppRun\""
fi
elif [ -d "$DIR/$I" ];then
if [ -f "$DIR/$I/.DirIcon" ];then
echo "menuprog \"$I\" \"$DIR/$I/.DirIcon\" \"$C_DIR/$C_PROG\" \"$DIR/$I\""
else
echo "menuprog \"$I\" folder \"$C_DIR/$C_PROG\" \"$DIR/$I\""
fi
elif [ -x "$DIR/$I" ];then
echo "prog \"$I\" \"$I\" \"$DIR/$I\""
elif [ `echo $I|cut -d "." -f2` == "desktop" ];then
nombre=`cat $DIR/$I |grep Name=|cut -d "=" -f2|sed -n '1p'`
icono=`cat $DIR/$I |grep Icon=|cut -d "=" -f2|sed -n '1p'`
ruta=`cat $DIR/$I |grep Exec=|cut -d "=" -f2|sed -n '1p'`
echo "prog \"$nombre\" \"$icono\" \"$ruta\""
fi
done
Las traducciones se realizan en scripts "tipo" gettext en /usr/share/olix/trans
Los lanzadores AppRun hay que crearlos o modificarlos en /usr/share/olix/apps y en las carpetas que hay dentro de /usr/share/olix/apps/Utils
Estructura:
- AppRun de XMMS
#!/bin/sh exec xmms "$@"
- Tooltips AppInfo.xml de XMMS
<?xml version="1.0"?> <AppInfo> <Summary xml:lang="cs">XMMS - přehrávač zvukových souborů</Summary> <Summary xml:lang="en">XMMS - audio file player</Summary> <Summary xml:lang="es">XMMS - reproductor musical</Summary> <Summary xml:lang="gl">XMMS - reprodutor musical</Summary> </AppInfo>
Añadimos la bandera de galicia en /usr/share/olix/icons/kbd/gl.png y en /usr/share/olix/apps/Utils/Keyboard/gl.xpm
Julio 15
Miguel
Concluida la traducción de "MIME-editor", "VideoThumbnails", "Thumbs" y "ROX-Trasher".
Probando la instalación de "absAdduser.py"
Necesita instalar xdialog-0.3 que se descarga de esta ruta http://www.chrisarndt.de/en/software/python/download/xdialog-0.3.tar.bz2
Para instalar este paquete:
cd /ruta/a/la/carpeta python setup.py build python setup.py test python setup.py install (como root) ó python setup.py install --home=~ (como usuario)
depende de:
- python >= 2.0
- Xdialog >= 1.5.1 (1.4.6 si no utiliza las nuevas características)
absAdduser se debe ejecutar como "root" en el enlace definitivo tendremos que poner en la línea de menú gksu (o gksudo)
gksu python /usr/local/bin/absAdduser.py
Tendremos que analizar la línea 930 de absAdduser:
if commands.getoutput('useradd -m -g users -G \
users,audio,video,disk,plugdev,floppy,cdrom,games -p %s %s' % (sendpass, un)):
y ver la conveniencia de añadir los grupos "lpadmin" y "scanner"
if commands.getoutput('useradd -m -g users -G \
users,audio,video,disk,plugdev,floppy,cdrom,games,lpadmin,scanner -p %s %s' % (sendpass, un))
De todas formas, habrá que ver al final si falta o sobra algún grupo.
Julio 14
Miguel
Traducido ROX_Filer 2.9 y probado que funcione en los .po los añadidos específicos para MiniNo, traducidas tambien las versiones 2.9 "oficial" y la "git" [1]. Acordarse de ejecutar ./dist en la compilación
Traducida la nueva versión (0.1.7) de epdfview [2]
Revisada la traducción de "catfish" [3]
En proceso de traducción "MIME-editor", "VideoThumbnails" y "Thumbs". Para la compilación final creo que será necesario ejecutar ./dist, comprobarlo
Analizando la forma de "renombrar" según la variable $LANG los ejecutables de "SendTo"
Analizando la unificación con "case" de las tradus de purr, grandr, ...
Analizando la unificación con "GetText" de las tradus de AbsVolume ...
Julio 13
Miguel
En la versión 2.9 de Rox-Filer es necesario actualizar las tradus.
Para generar los nuevos .po debemos ejecutar update -po dentro de ../rox-filer-2.9/ROX-Filer/src/po (es suficiente con hacer doble clic sobre el y "ejecutar en terminal". A partir de aquí traduciremos los nuevos .po
Probaremos si incluir las líneas del nuevo menú funciona en la traducción, al menos si funciona incluirlas en el messages.pot antes de hacer un update-po. Para eso las nuevas líneas de ../rox-filer-2.9/ROX-Filer/src/menu.c deben estar en "idioma fuente" es decir, en inglés.
Julio 12
Antonio
Continuamos afinando rox-filer. Creado un directorio libs dentro de rox-filer para meter sus librerías extras: roxlib, roxclib, roxperl... Y configurado con una variable de entorno para que puedan ser usadas por los pequeños programas que hay en su web. Así no hay que instalar estas librerías a parte en /usr/lib o en el /home/minino/libs, van ya incorporadas a rox. He intentado incluir también los programas MIME-Editor, Thumbs y VideoThumbnail que son llamados desde las Opciones... de rox-filer. Rox-filer está cada vez más integrado con el sistema "ZeroInstall por webs". Nos conviene evitarlo en un principio porque aunque es práctico es un poco pesado (pythoniano a más no poder). Resulta que al picar en los botones de las opciones referidas a estos programas lo primero que se hace es llamar a zeroinstall. Después de varias intentonas fallidas, parece que he dado con la tecla para engañar a rox y evitar la instalación de zeroinstall. He creado un archivo ejecutable en el path de rox llamado 0launch con la única misión de ejecutar cualquier cosa, luego he configurado Options.xml para sustituir la web de aquellos programas por la ruta local a los programas y luego he incluido los programas dentro de la carpeta de rox-filer. Para mantener la independencia de localización de rox-filer, se añade al PATH general del sistema la ruta de ejecución de rox-filer, de tal manera que se puedan ejecutar todas las aplicaciones sea cual sea la ruta en la que pongamos rox-filer.
Lo único que es fijo en rox-filer es la localización de iconos que creo recordar que necesitaba la ruta completa de cada icono en el archivo globicons.xml. Pero eso va en $HOME/.config/rox.sourceforge.net/ROX-Filer/...
También he añadido el archivo atool para comprimir/descomprimir picando con el botón derecho del ratón. Archive se queda pero de forma visual, es decir, para arrastrar los archivos o carpetas que queramos al icono de Archive (no desde el mismo menú, como atool). Con Archive teníamos varios problemas, como que no se pueden enviar archivos+carpetas al mismo tiempo o que no es un sistema "inteligente" a la hora de descomprimir. Por contra atool, se maneja bastante bien aquí, por ejemplo, si hay un solo archivo dentro de un zip, solo te saca ese archivo, pero si hay más de uno, te crea una carpeta y te mete todos los archivos dentro. Tampoco sobreescribe si hay archivos con el mismo nombre, crea una carpeta y los mete todos dentro. Ya lo miraré, pero creo que se podría incluso meter un scriptcito zenitiano con una barrita pin pon o con la salida de atool para no dejarnos con cara de bobo sin saber si está haciendo su trabajo el compresor mientras se comprime/descomprime lo que sea (como ocurre con Archive ahora mismo).
Las aplicaciones MIME-Editor, Thumbs y VideoThumbnail tenemos que traducirlas. También hay que corregir los TIPs de sus respectivos botones en las opciones de rox-filer porque sale "Prema no botón izquierdo..." en la traduc castellana.
Queda por ver cómo vamos a realializar la configuración de los idiomas para todos los programitas que no usan el sistema de localización estándar de linux. Hasta ahora usábamos una pequeña triquiñuela con "if", pero recuerdo que comentamos algo sobre poner un "case".
Julio 11
Antonio
hay que ver aún cómo van las cuatro traducciones del menú, pero el funcionamiento creo que va todo bien
le he cambiado lo siguiente: metido el buscador (catfish), metido el renombrador (purrr), metido el abrir nueva ventana como administrador, metido abrir directorio en nueva ventana, todo conjuntado para que al picar tome el directorio de trabajo y lo use, por ejemplo, el buscador comenzará su búsqueda en el directorio en el que estás y se abrirá rox-filer si le picas en abrir (también modificadas las fuentes de catfish para esto), y también algunas teclas para que se parezca a gnome, F2 para renombrar, supr, para borrar, y la tecla "menor que" para poder navegar con el teclado más fácilmente.
Miguel
1.- Revisadas las tradus .po "item" ya estaba corregido, corregida la errata "ordenador" y añadida la leyenda, quedó así:
#: menu.c:1991 msgid "You cannot do this to more than one item at a time" msgstr "" "Esto sólo es posible hacerlo con un elemento cada vez.\n" "Rox tiene una política muy visual, arrastre directamente los elementos a la ventana de destino."
- NOTA IMPORTANTE: Hay que revisar, una vez compilado que el mensaje aparece correctamente, si hay que eliminarlo, o solo eliminar el retorno de carro "\n"
2.- Sugerencia: en vez de "<" usar las flechas de desplazamiento(?)
- "←" - keycode 113 (keysym 0xff51, Left) -
- "→" - keycode 114 (keysym 0xff53, Right) -
- "↑" - keycode 111 (keysym 0xff52, Up) -
- "↓" - keycode 116 (keysym 0xff54, Down) -
(Antonio) Las flechas de desplazamiento ya están de forma predeterminada, pero el poder cambiar al directorio padre tenía una tecla rara en nuestro teclado (supongo que no en el teclado americano), por eso la cambié (solo esa tecla). Resumiendo, se navega con los cursores en todas direcciones, se selecciona con el espacio, se entra con ENTER y se "sube" o se "sale" con la tecla "<".
3.- Control de volumen, analizar que versión instalar tray/non-tray ?
http://www.pcbypaul.com/software/absvolume.html
Recordar
NOTA: Al editar dejar este apartado de último para que a Adrian le sea más facil localizarlo.
Compilar para nuestro repo
- Que Adrian determine el nombre específico o como indicar la versión.
| ACORDARSE DE INTEGRAR LOS ".po" REVISADOS POR NOSOTROS http://xiki.to/flp |
NOTA: Utilizar enlaces abreviados http://xiki.to
| Original | Parche | Nombre MiniNo | OK | Notas |
|---|---|---|---|---|
| http://xiki.to/xlp | solo .po (gl y es) | catfish | NO | Acordarse de los .po |
| Nuestro almacen | menu.c - añadidos - Tiene un AppInfo que hay que sustituir - .po (gl y es) | ROX-Filer_minino | NO | - Tiene un AppInfo que hay que sustituir - integrado en minino-desktop - Acordarse de los .po y de ejecutar ./dist - provisionalmente utilizar el tar.gz construido al efecto en nuestro almacen de aplicaciones |
| https://launchpad.net/ubuntu/+source/purrr | internacionalización (i18n) | purr_minino | NO | Fué internacionalizado, hay una versión estándar y una específica (modificada) para minino, fuentes para minino en nuestro almacen |
| http://xiki.to/Alp | internacionalización (i18n) | absvolume_minino | NO | Tenemos varios ".deb" para pruebas en: http://xiki.to/oXp |
| http://xiki.to/8lp - http://roscidus.com/desktop/MIME-Editor | Tiene un AppInfo que hay que sustituir - solo .po (gl y es) | MIME-Editor | NO | Acordarse de los .po y de ejecutar ./dist |
| http://xiki.to/Vlp - http://www.kerofin.demon.co.uk/rox/thumbs.html | Tiene un AppInfo que hay que sustituir - solo .po (gl y es) | Thumbs | NO | Acordarse de los .po y de ejecutar ./dist |
| http://xiki.to/nlp - http://www.kerofin.demon.co.uk/rox/VideoThumbnail.html | Tiene un AppInfo que hay que sustituir - solo .po (gl y es) | VideoThumbnails | NO | Acordarse de los .po y de ejecutar ./dist |
| http://xiki.to/elp - http://trac.emma-soft.com/epdfview/wiki/Download | solo .po (gl y es) | epdfview | NO | Última versión, aún no está en repos oficiales - Acordarse de los .po - La versión en SVN ya incorpora nuestros .po |
| http://cgit.freedesktop.org/xorg/app/grandr/ | internacionalización (i18n) | grandr_minino | NO | Fué internacionalizado, fuentes para minino en nuestro almacen |
| ? | internacionalización (i18n) | Ceni_minino | NO | ? |
| ? | compilar para MiniNo | ircp-tray_minino | SI | ? |
| http://roscidus.com/desktop/node/370 | Tiene un AppInfo que hay que sustituir - localización (i10n) | ROX-Trasher | ? | Las traducciones van en texto simple en una estructura "case" en el fichero "item-template" - Tiene un AppInfo que hay que sustituir - integrado en minino-desktop |
| http://www.kerofin.demon.co.uk/rox/appfactory.html | Tiene un AppInfo que hay que sustituir - localización (i10n) | app-factory | ? | integrado en minino-desktop - Acordarse de los .po y de ejecutar ./dist |
| http://olix-desktop.sourceforge.net/ | localización (i10n) modificaciones de código y configuración | olix | ? | integrado en minino-desktop - La localización es un poquito rara, ver COMO en ../MiniNo/traduccions/Olix |
| Nuestro almacén | localización (i10n) modificaciones de código y configuración | minino_lxp-icewm | ? | Tiene una compilación bastante compleja, ver ../MiniNo/Proyecto_2009/minino-sources/COMOS_compilacion/ - integrado en minino-desktop |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |
| ? | ? | ? | ? | ? |

