ff-multiconverter, multimedia, audio, video, linux, ubuntu ubuntu kylin, china, releases, linux terminal, ubuntu, linux, comandos, shell conky, gadgets, ubuntu, linux SpeedTest-Cli, velocidad, red, consola, terminal tag foto 6 pinta, grafica, linux, ubuntu djl, juegos, yum, synaptic, paquetes ubuntu, releases, canonical psensor, ubuntu, linux, sistema, monitor

Software Packages incluìdos en Ubuntu 9.04 Jaunty Jackalope, secciòn Juegos, sexta parte

Lo que sigue es la sexta parte de la lista completa y definitiva (extraìda de los repositorios oficiales de Ubuntu) de los juegos incluìdos en la nueva versiòn 9.04 Jaunty Jackalope con un breve comentario de cada uno.

Algunas variantes con respecto a la versiòn anterior Ubuntu 8.10 Intrepid Ibex.

En los ùltimos años Ubuntu es una de las distribuciones Linux que màs ha adaptado su plataforma a las aplicaciones de juegos para el PC y al multimedial.

En las ùltimas releases la mayor parte de ellas ya viene incluìda de default en los repositorios universe o multiverse y por lo tanto la instalaciòn es sumamente sencilla ya sea a travès de Synaptic o con el classico sudo apt-get install, sin tener que hacer us,o como en versiones anteriores, de Wine.

Desde Pachi hasta Pytris


pachi (1:1.0-5) [universe]
Platform game featuring Pachi el marciano
pachi-data (1:1.0-5) [universe]
Platform game featuring Pachi el marciano (data files)
pacman (10-17ubuntu1) [universe]
Chase Monsters in a Labyrinth
pacman4console (1.2-2) [universe]
a console based pacman game
pangzero (1.3-1) [universe]
action game that involves popping balloons with a harpoon
papaya (0.97.20031122-5.4) [universe]
extensible MUD client
parsec47 (0.2.dfsg1-1) [universe]
retromodern hispeed shmup
parsec47-data (0.2.dfsg1-1) [universe]
retromodern hispeed shmup - game data
passage (3+dfsg1-2) [universe]
game about the passage through life
pathogen (1.1.1-2) [universe]
Puzzle game about matching 3D model structures
pathological (1.1.3-8ubuntu2) [universe]
puzzle game involving paths and marbles
pathological-music (2) [universe]
puzzle game involving paths and marbles [music]
pcsx (1:1.816-1) [universe]
Transition package for pcsx-df
pcsx-df (1:1.816-1) [universe]
Sony PlayStation emulator -- binary
penguin-command (1.6.11-1) [universe]
a missile command clone
pengupop (2.2.4-1) [universe]
Online multiplayer clone of Bust a Move
pennmush (1.8.2p8-1) [universe]
text-based multi-user virtual world server
pennmush-common (1.8.2p8-1) [universe]
common files for the PennMUSH virtual world server
pennmush-i18n (1.8.2p8-1) [universe]
i18n support files for the PennMUSH virtual world server
pennmush-mysql (1.8.2p8-1) [universe]
text-based multi-user virtual world server with MySQL support
pente (2.2.5-5.1) [universe]
Five in a row game for X and the console
performous (0.3.0-2) [universe]
karaoke game that allows user supplied songs
performous-dbg (0.3.0-2) [universe]
karaoke game that allows user supplied songs
petris (1.0.1-8) [universe]
Peter's Tetris - a Tetris(TM) clone
pgn-extract (16.0-1) [universe]
Portable Game Notation (PGN) extractor
phalanx (22+d051004-7) [universe]
Chess playing program
pinball (0.3.1-7ubuntu2) [universe]
Emilia Pinball Emulator
pinball-data (0.3.1-7ubuntu2) [universe]
Data files for the Emilia Pinball Emulator
pinball-dev (0.3.1-7ubuntu2) [universe]
Development files for the Emilia Pinball Emulator
pingus (0.7.2-2) [universe]
Free Lemmings(TM) clone
pingus-data (0.7.2-2) [universe]
Data files for pingus, a free Lemmings(TM) clone
pioneers (0.12.2-4) [universe]
the Settlers of Catan board game
pioneers-ai (0.12.2-4) [universe]
pioneers transitional package
pioneers-ai
virtual package provided by pioneers-console
pioneers-client (0.12.2-4) [universe]
pioneers transitional package
pioneers-client
virtual package provided by pioneers
pioneers-console (0.12.2-4) [universe]
the Settlers of Catan board game - console parts
pioneers-console-data (0.12.2-4) [universe]
the Settlers of Catan board game - data files
pioneers-data (0.12.2-4) [universe]
the Settlers of Catan board game - data files
pioneers-help (0.12.2-4) [universe]
pioneers transitional package
pioneers-help
virtual package provided by pioneers
pioneers-meta-server (0.12.2-4) [universe]
pioneers transitional package
pioneers-meta-server
virtual package provided by pioneers-console
pioneers-server-console (0.12.2-4) [universe]
pioneers transitional package
pioneers-server-console
virtual package provided by pioneers-console
pioneers-server-data (0.12.2-4) [universe]
pioneers transitional package
pioneers-server-gtk (0.12.2-4) [universe]
pioneers transitional package
pioneers-server-gtk
virtual package provided by pioneers
pipenightdreams (0.10.0-13) [universe]
connect pipes to get the water flowing from inlet to outlet
pipenightdreams-data (0.10.0-13) [universe]
connect pipes to get the water flowing from inlet to outlet (data files)
pipewalker (0.4.3-1) [universe]
Puzzle game - connect all computers to the net
pixbros (0.6.1-2) [universe]
2D game inspired in Bubble Bobble, Snow Bros and Tumble Pop
pixfrogger (1.0-1) [universe]
help the frog cross the street
planetpenguin-racer (0.3.1-11) [universe]
another 3D racing game featuring Tux, the Linux penguin
planetpenguin-racer-data (0.3.1-11) [universe]
data files for the game PlanetPenguin Racer
planetpenguin-racer-dbg (0.3.1-11) [universe]
another 3D racing game featuring Tux, the Linux penguin (debugging symbols)
planetpenguin-racer-extras (0.5-3) [universe]
Additional courses for PlanetPenguin Racer
planetpenguin-racer-gimp-dev (0.3.1-11) [universe]
plugins for GIMP for easy development of ppracer courses
plee-the-bear (0.2.1-2) [universe]
A 2D platform game
plee-the-bear-data (0.2.1-2) [universe]
Data for Plee the Bear
pokerth (0.6.3-1) [universe]
Texas hold'em game
pokerth-data (0.6.3-1) [universe]
Texas hold'em game - common data files
pokerth-server (0.6.3-1) [universe]
Texas hold'em game - server
polygen (1.0.6.ds2-6) [universe]
generator of random sentences from grammar definitions
polygen-data (1.0.6.ds2-6) [universe]
grammar definitions for PolyGen
polyglot (1.4-3) [universe]
chess engine protocol adaptor, connects UCI engines to xboard
pong2 (0.1.2-2) [universe]
Remake of old arcade classic in OpenGL
pouetchess (0.2.0-3) [universe]
3D chess game
pouetchess-data (0.2.0-3) [universe]
Data files for the game pouetChess
powder (107-1) [multiverse]
Graphical dungeon crawling game
powermanga (0.90-dfsg-1) [universe]
vertical shoot 'em up with colourful 3D graphics
powermanga-data (0.90-dfsg-1) [universe]
graphics and audio data for powermanga
pq (6.2-0ubuntu2) [multiverse]
Progress Quest is a "fire and forget" computer role-playing game
prboom (2:2.5.0+dfsg1-1) [universe]
clone of the legendary first person shooter Doom
projectl (1.001.dfsg1-2) [universe]
sword action shooting
purity (1-17) [universe]
Automated purity testing software.
purity-off (0-3) [universe]
Sex related purity tests
pushover (0.0.1-1) [universe]
Fun puzzle game with dominos
pybridge (0.3.0-4) [universe]
An online contract bridge game. Gtk client
pybridge-common (0.3.0-4) [universe]
Common files for pybridge
pybridge-server (0.3.0-4) [universe]
Server files for pybridge
pyching (1.2.2-4) [universe]
A Python program to cast and interpret I Ching hexagrams
pydance (1.0.3-4) [universe]
dancing simulation game similar to the kind in arcades
pydance-music (5) [universe]
Songs and step patterns for pydance
pykaraoke (0.5.1-1ubuntu1) [universe]
free CDG/MIDI/MPEG karaoke player
pykaraoke-bin (0.5.1-1ubuntu1) [universe]
free CDG/MIDI/MPEG karaoke player
pyracerz (0.2-4) [universe]
multiplayer top view 2D racing game
pyscrabble (1.6.2-3ubuntu4) [universe]
a multiplayer scrabble implementation written in Python - client part
pyscrabble-common (1.6.2-3ubuntu4) [universe]
a multiplayer scrabble implementation - common files
pyscrabble-server (1.6.2-3ubuntu4) [universe]
a scrabble implementation written in Python - server part
pysol (4.82.1-4.1ubuntu7) [universe]
X11 solitaire game written in Python
pysol-cardsets (4.40-3) [universe]
Additional card graphics for Pysol
pysol-sound-server (3.01-1ubuntu2) [universe]
Sound server for PySol
pysol-sounds (4.82.1-4.1ubuntu7) [universe]
Sounds and background music for use with PySol
pysycache (3.1-2) [universe]
Educational game to teach children to use the mouse
pysycache-buttons-beerabbit (3.1-2) [universe]
Bee-rabbit images for buttons activities for PySyCache
pysycache-buttons-crapaud (3.1-2) [universe]
Crapaud images for buttons activities for PySyCache
pysycache-buttons-ice (3.1-2) [universe]
Ice images for buttons activities for PySyCache
pysycache-buttons-wolf (3.1-2) [universe]
Wolf images for buttons activities for PySyCache
pysycache-click-dinosaurs (3.1-2) [universe]
Dinosaurs images for click activities for PySyCache
pysycache-click-sea (3.1-2) [universe]
Sea images for click activities for PySyCache
pysycache-dblclick-appleandpear (3.1-2) [universe]
Apple and pear images for double click activities for PySyCache
pysycache-dblclick-butterfly (3.1-2) [universe]
Butterfly images for double click activities for PySyCache
pysycache-i18n (3.1-2) [universe]
Translations for PySyCache
pysycache-images (3.1-2) [universe]
Images for PySyCache
pysycache-move-animals (3.1-2) [universe]
Animals images for mouse move activities for PySyCache
pysycache-move-food (3.1-2) [universe]
Food images for mouse move activities for PySyCache
pysycache-move-plants (3.1-2) [universe]
Plants images for mouse move activities for PySyCache
pysycache-move-sky (3.1-2) [universe]
Sky images for mouse move activities for PySyCache
pysycache-move-sports (3.1-2) [universe]
Sports images for mouse move activities for PySyCache
pysycache-puzzle-cartoons (3.1-2) [universe]
Cartoons images for puzzle activities for PySyCache
pysycache-puzzle-photos (3.1-2) [universe]
Photos for puzzle activities for PySyCache
pysycache-sounds (3.1-2) [universe]
A collection of sounds to be used with PySyCache
python-pykaraoke (0.5.1-1ubuntu1) [universe]
free CDG/MIDI/MPEG karaoke player
python-renpy (6.7.1-1ubuntu2) [universe]
framework for developing visual-novel type games - Python module
pytris (0.98) [universe]
two-player networked console tetris clone


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:


Sudoku es una aplicación open source para jugar al popular juego de lógica

Sudoku es una aplicación para jugar al popular juego de lógica sudoku, en el que debe rellenar un tablero de 9 por 9 con los dígitos correctos.

Ultima versión estable: 2.28.1
Versión en desarrollo: 2.29.2

Sudoku es una aplicación para generar y jugar a los populares juegos de lógica tipo puzle Sudoku (también conocidos como el lugar del número).

Las reglas de Sudoku son bastante simples. Para completar el puzle, debe rellenar cada cuadrado con un número entre 1 y 9 tal que cada fila, columna y caja de 3x3 del tablero contenga los números del 1 al 9. Dicho de otra manera, debe rellenar cada cuadrado tal que no se repita ningún número en la misma fila, columna o caja de 3x3.

Estas dos maneras diferentes de observar el puzle son las dos principales formas de pensar de los jugadores de Sudoku. Por una parte, se pregunta a sí mismo «¿Cómo puedo llenar todos los cuadrados de esta caja?». Y por la otra también se pregunta «¿Qué números pueden ir en este cuadrado sin causar conflicto con los otros números de la misma fila, columna o caja 3x3?».

A pesar de la simplicidad del juego, los puzles de Sudokus pueden variar enormemente su dificultad. Sudoku le permite seleccionar la dificultad del puzle que desee jugar. De forma predeterminada mostrará puzles fáciles para, gradualmente, ir incrementando la dificultad de los mismos mientras mejore su pericia.


Iniciar Sudoku

Puede iniciar Sudoku de las siguientes maneras:

Menú Aplicaciones

Elija Juegos ▸ Sudoku.

Línea de comandos

Para iniciar Sudoku desde la línea de comandos, escriba el siguiente comando y después pulse Intro:

gnome-sudoku

Al iniciar Sudoku por primera vez, verá la pantalla de selección de puzles, donde puede elegir la dificultad del puzle al que quiere jugar. Si ha jugado anteriormente y dejó un puzle sin finalizar, también puede seleccionar esos puzles desde esta pantalla.

En la pantalla de selección de puzles se muestra la dificultad del puzle. El color alrededor de la imagen del puzle corresponde con la dificultad. Por ejemplo, un puzle en rojo oscuro es más difícil que uno en rojo claro.

Pulse dos veces en el puzle de su elección para empezar a jugar.

Sudoku categoriza los puzles basándose en el número de cuadrados que pueden rellenarse rápidamente. La caja de estadísticas del puzle le muestra la puntuación global así como tres informaciones adicionales:

* El número de cuadrados rellenables por eliminación, comenzando por la rejilla vacía (ej. sólo puede ir un 2 en tal cuadrado, así que debe ser un 2).
* El número de cuadrados rellenables por rellenado, comenzando por la rejilla vacía (ej. sólo puede haber un 2 en esta fila, así que debe ser un 2).
* El número de veces que el computador tuvo que que usar prueba y error o «adivinanzas» para solucionar el puzle.

Muchos usuarios se decepcionan cuando averiguan que el computador usa el método de prueba y error para solucionar puzles, especialmente desde que algunos gurúes del Sudoku dijeron que nunca se debería adivinar un puzle para completarlo. Existen un número de algoritmos que pueden implementarse para ayudar al equipo a completar sudokus tales como los patrones «swordfish» y «X-wing».

Sudoku sólo usa los dos algoritmos descritos anteriormente así como el método de prueba y error. Cuando las cajas de estadísticas digan que Sudoku necesita usar el método de prueba y error X veces no significa que una persona deba usar el método de prueba y error para resolver el puzle.

Puede cambiar los puzles en cualquier momento pulsando Nuevo. Esto le mostrará la pantalla de selección de puzle, donde puede seleccionar el puzle que desee.

Juego básico

Para jugar al juego, comience a rellenar los números del 1 al 9 en los cuadrados tal que en ninguna fila, columna o caja de 3x3 se repita algún número.

Puede rellenar un número en un cuadrado usando el teclado o el ratón.

Teclado

Use las teclas de flechas o el ratón para seleccionar el cuadrado que desea rellenar. Después escriba el número que quiere introducir en el cuadrad. Pulsando Retroceso borrará el número.
Ratón

Pulse un cuadrado para seleccionarlo, después pulse en el centro del cuadrado para mostrar los botones con los números del 1 al 9. Pulse sobre un número para seleccionarlo, o pulse sobre Limpiar para limpiar el cuadrado. También puede pulsar dos veces en el centro del cuadrado par amostrar los botones de los números.

Si introduce un número que está en conflicto con otros números de la rejilla, los números conflictivos se resaltarán en rojo.



Guardar y resumir juegos

Los sudokus se guardan automáticamente cada pocos minutos y siempre que cambie de partida o cierre la aplicación.


Siempre que inicie Sudoku o pulse Nuevo se listarán sus partidas guardadas en la pantalla de selección de puzles. Verá una imagen en miniatura del puzle guardado, la fecha en la que lo jugó por última vez y cuánto tiempo lo ha jugado. Para abrir el puzle simplemente pulse dos veces sobre él.

Si quiere dejar de jugar una partida y comenzar otra, simplemente seleccione Nuevo y comience su nuevo juego.

Características

Sudoku proporciona cierto número de características para ayudarle a resolver los puzles.

Notas

Las Notas o notas de lápiz le permiten tomar notas en cada cuadrado. Muchos jugadores usan las notas para seguir posibles valores para los cuadrados.

Sugerencias y autorellenar

Puede usar las Sugerencias y Autorellenar para hacer que Sudoku le proporcione posibles valores para un cuadrado o llene automáticamente un cuadrado.

Resaltado

En el modo resaltado, se resaltan en diferentes colores la fila, columna y caja actual para hacer más fácil la visión del tablero.

Seguimientos

Los seguimientos hacen más fácil seguir las soluciones de prueba y error. Cuando sigue un juego de movimientos, los números se introducen en un color especial que le ayuda a distinguir esos movimientos de los relazados previamente en la partida.

Tomar notas

Para escribir notas (también conocido como «notas de lápiz») en una caja, primero seleccione la caja con el teclado o el ratón. Después haga una de las siguientes acciones:

* Pulse en la parte superior del cuadrado (la parte se resaltará con un cuadrado cuando mueva el ratón sobre el cuadrado seleccionado).
* Pulse N

Esto mostrará un campo en el que podrá escribir sus notas. Pulse Retorno cuando termine de editar la nota.

También puede tomar notas en la casilla inferior pulsando en la parte inferior del cuadrado o pulsando la tecla M. No obstante este área se usa cuando pide sugerencias, así que no debería usarla para tomar sus notas si también planea usar las sugerencias.

Sugerencias y autorellenar

Las características Sugerencia y Rellenar funcionan basándose en las posibilidades lógicas proporcionadas por el tablero actual. No trabajan basándose en la solución. Si ha cometido un error en un movimiento anterior, estas características pueden fallar al rellenar o sugerir un valor.

Sugerencias

Sudoku puede proporcionarle sugerencias basándose en el tablero actual. Entonces puede preguntar una sugerencia para la casilla seleccionar pulsando Sugerencia, seleccionando Herramientas ▸ Sugerencia, o pulsando Ctrl+H. Esto mostrará una lista de posibles valores en la parte inferior del cuadrado.

Si quiere eliminar o alterar la sugerencia puede editar el texto pulsando en la parte inferior del cuadrado.

Para los puzles más difíciles, puede elegir la opción que muestra todos los valores posibles para cada caja en Sudoku. Para activar esta opción, pulse Herramientas ▸ Siempre mostrar sugerencias. Nótese que esto puede conllevar que los puzles fáciles sean demasiado fáciles, de tal forma que deberá usar esta opción consecuentemente.


Rellenar cuadrado

Para rellenar una casilla automáticamente para la que sólo hay un valor posible, puede seleccionar Rellenar, seleccione Herramientas ▸ Rellenar o pulse Ctrl+F. Esto es útil cuando ha rellenado 8 o 9 casillas de una fila y quiere rellenar rápidamente el último cuadrado vacío.

Si hay más de un valor válido para la entrada, entonces no ocurrirá nada.

Rellenar todos los cuadrados

Puede rellenar automáticamente todos los cuadrados para los que lógicamente sólo pueda haber un valor en ese momento. Para ello seleccione Herramientas ▸ Rellenar todos los cuadrados, o pulse Ctrl+A.

Esta característica sólo debería usarse para ayudarle cuando está estancado durante un sudoku muy difícil. Usar esta característica en un juego fácil puede resolver el puzle entero, haciéndolo aburrido.

Resaltado

Puede activar el resaltado para resaltar automáticamente la fila, columna y caja actuales en diferentes colores. Esto puede hacer que vea los valores que pueden ir, o no, más fácilmente en el cuadrado actual. Para conmutar el resaltado puede:

* Pulsar Resaltador
* Ver Resaltador


Seguimientos
Puede usar los seguimientos para mantener el seguimiento de múltiples movimientos a la vez. Los movimientos bajo seguimiento se introducen en un color distinto para distinguirlos visualmente. También puede borrar los movimientos bajo seguimiento de una vez. Esto es particularmente útil para resolver puzles difíciles por el método de prueba y error.

Algunos jugadores de sudoku piensan que nunca debería usar el método de prueba y error para resolver un puzle. Estos jugadores no deberían usar esta característica.

Puede conmutar el interfaz de seguimiento con una de las siguientes acciones:

* Herramientas ▸ Seguir adiciones
* Pulse Seguir adiciones

Esta acción mostrará una lista de los seguimientos en la parte derecha del juego actual. Cree un nuevo seguimiento pulsando Añadir seguimiento. Desde este punto en adelante cualquier número que introduzca formará parte del seguimiento seleccionado.

Puede limpiar todos los valores que forman parte de un seguimiento seleccionando el seguimiento de la lista y pulsando Limpiar seguimiento. Puede limpiar todos los valores que no forman parte del seguimiento pulsando Limpiar otros.

Imprimir Sudokus

Sudoku puede imprimir puzles en papel. Útil si quiere dejar el equipo pero quiere terminar un juego que haya comenzado o si quiere imprimir un puñado de puzles para resolver más tarde.

Para imprimir el puzle al que está jugando, pulse Imprimir o seleccione Juego ▸ Imprimir. Esto incluirá los números que ya haya rellenado.

Para imprimir puzles vacíos seleccione Juego ▸ Imprimir múltiples sudokus.

Entones se le presentará un diálogo que le permitirá elegir la cantidad de juegos que desea imprimir y el número de juegos que quiere imprimir por página (cuantos más sudokus por página imprima más pequeños serán).

También puede seleccionar el rango de dificultad que quiere para los juegos. Los juegos se imprimirán en orden de dificultad ascendente, del más fácil al más difícil.

Para crear un libro de 25 páginas de minisudokus puede seleccionar imprimir 100 sudokus, 4 por página, con dificultad ascendente.

De forma predeterminada Sudoku no imprimirá los juegos a los que ya haya jugado. Si está imprimiendo juegos para un amigo o no le importa que se impriman juegos repetidos, puede activar Incluir juegos que ya haya jugado en la lista de juegos a imprimir.

También puede seleccionar a mano los juegos que desea imprimir expandiendo la Lista de juegos y seleccionando múltiples puzles de la lista.


Estadísticas limitadas de los puzles

Sudoku categoriza los puzles basándose en el número de cuadrados que pueden rellenarse rápidamente. La caja de estadísticas del puzle le muestra la puntuación global así como tres informaciones adicionales:

* El número de cuadrados rellenables por eliminación, comenzando por la rejilla vacía (ej. sólo puede ir un 2 en tal cuadrado, así que debe ser un 2).
* El número de cuadrados rellenables por rellenado, comenzando por la rejilla vacía (ej. sólo puede haber un 2 en esta fila, así que debe ser un 2).
* El número de veces que el computador tuvo que que usar prueba y error o «adivinanzas» para solucionar el puzle.

Muchos usuarios se decepcionan cuando averiguan que el computador usa el método de prueba y error para solucionar puzles, especialmente desde que algunos gurúes del Sudoku dijeron que nunca se debería adivinar un puzle para completarlo. Existen un número de algoritmos que pueden implementarse para ayudar al equipo a completar sudokus tales como los patrones «swordfish» y «X-wing».

Sudoku sólo usa los dos algoritmos descritos anteriormente así como el método de prueba y error. Cuando las cajas de estadísticas digan que Sudoku necesita usar el método de prueba y error X veces no significa que una persona deba usar el método de prueba y error para resolver el puzle.
Instalemos Sudoku en Ubuntu:

Desde terminal digitar

sudo apt-get install gnome-sudoku

En cambio para los usuarios que descargan un tarball:

tar -zxf gnome-sudoku-0.3.1.tar.gz
cd gnome-sudoku-0.3.1
sudo python setup.py install

La página de las descargas es èsta (SourceForge).


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:


GIMP no será incluído en Lucid Lynx, Ubuntu 10.04

El UDS que se está desarrollando por estos días en Dallas, es el lugar donde los desarroladores de Ubuntu definen lo que será su trabajo para los próximos 6 meses para la salida de la nueva versión.

El tema del miercoles fué “Selección de aplicaciones en la instalación por defecto”

Entre otros temas se trató la idea de incluir o no a GIMP en la instalación por defecto, como lo venimos viendo hasta ahora.

Y se decidió no incluir a GIMP en Lucid Lynx

Los factores que se tuvieron en cuenta al tomar la decisíon:

  • el usuario en general no lo usa
  • Su interfaz es demasiado compleja
  • es una aplicación para los profesionales
  • los usuarios de escritorio sólo quieren editar fotos y pueden hacerlo en F-Spot
  • es un reemplazo de Photoshop y Photoshop no está incluido por defecto en Windows …(?)
  • que ocupa espacio en el disco

De todas maneras GIMP estará en los repositorios, así que siempre vas a poder instalarlo fácilmente .

A título informativo podemos decir que existe una versión portátil de GIMP que puede ser transportada y usada directamente desde una memoria USB sin necesidad de instalarse en el ordenador,[ disponible solo para ordenadores bajo Windows y Mac.

La biblioteca de controles gráficos GTK, desarrollada para GIMP, dio origen al entorno de escritorio de GNOME.

GIMP existe en español ademas de en la lengua de desarrollo original, el inglés, y también, en catalán, gallego, francés, italiano, alemán, ruso, sueco, noruego, coreano, neerlandés y en otras lenguas adicionales.

Una pàgina donde pueden encontrar tantos templates de Gimp es èsta: Gimp Templates

La pàgina del download de GIMP

Post relacionados con Gimp que te pueden interesar:



Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:


Nuevas actualizaciones para el navegador Firefox 3.5 presente en Ubuntu 9.10 Karmic Koala

Nuevas actualizaciones para el navegador Firefox 3.5 en Ubuntu 9.10 Karmic Koala.

Como normalmente lo hacemos en estas señalaciones las novedades se refieren a la seguridad del browser internet y del sistema.

Para quienes hayan optado por la actualizaciòn automàtica simplemente deberàn autorizar y seleccionar los paquetes a instalar desde la ventana que se abre anunciando la disponibilidad de las descargas. Para quienes, en cambio, quieren hacer la actualizaciòn en forma manual deberàn optar por el clasico sudo apt-get update.

El detalle de las actualizaciones.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Firefox delivers safe, easy web browsing. A familiar user interface, enhanced security features including protection from online identity theft, and integrated search let you get the most out of the web.
This is a meta package that will point to the latest firefox package in ubuntu. Don't remove this if you want to receive automatic major version upgrades for this package in future.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1


Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes

This is a transitional package so firefox-3.0 users get firefox-3.5 on upgrades. It can be safely removed.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes
This is a transitional package so firefox-3.0 users get firefox-3.5 on upgrades. It can be safely removed.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes

This is a transitional package so firefox-3.0 users get firefox-3.5 on upgrades. It can be safely removed.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes

Firefox delivers safe, easy web browsing. A familiar user interface, enhanced security features including protection from online identity theft, and integrated search let you get the most out of the web.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes

This package ships the Firefox branding bits. If you remove this package your user experience will become that of the abrowser.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes

This is an extension to Firefox that allows it to use protocol handlers from GnomeVFS, such as smb or sftp, and other GNOME integration features.

Cambios para las versiones:
3.5.4+nobinonly-0ubuntu0.9.10.1
3.5.5+nobinonly-0ubuntu0.9.10.1

Versione 3.5.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v3.5.5 (FIREFOX_3_5_5_RELEASE)
* fixes regressions/crashes

This is a meta package that will always point to the latest gnome-support package for firefox. Don't remove this if you want to receive automatic major version upgrades for this package in future.

Cambios para las versiones:
1.9.1.4+nobinonly-0ubuntu0.9.10.1
1.9.1.5+nobinonly-0ubuntu0.9.10.1

Versione 1.9.1.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v1.9.1.5 (FIREFOX_3_5_5_RELEASE)
- fixes regressions and crashers only

XULRunner is a single "gecko runtime" that can be used to bootstrap multiple XUL + XPCOM applications that are as rich as Firefox and Thunderbird.
XUL is Mozilla's XML based User Interface language that lets you build feature-rich cross platform applications. These applications are easily customized with alternative text, graphics and layout so that they can be readily branded or localized for various markets. Web developers already familiar with Dynamic HTML (DHTML) will learn XUL quickly and can start building applications right away.
XPCOM is a cross platform component model. It has multiple language bindings and IDL descriptions so programmers can plug their custom functionality into the framework and connect it with other components.

Cambios para las versiones:
1.9.1.4+nobinonly-0ubuntu0.9.10.1
1.9.1.5+nobinonly-0ubuntu0.9.10.1

Versione 1.9.1.5+nobinonly-0ubuntu0.9.10.1:

* New upstream release v1.9.1.5 (FIREFOX_3_5_5_RELEASE)
- fixes regressions and crashers only

This is an extension to xulrunner-1.9.1 that allows XUL applications to use protocol handlers from GnomeVFS, such as smb or sftp, and other GNOME integration features.


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:



Ocrad programa de reconocimiento de caracteres ópticos publica la versión 0.18

ocrad GNU Ocrad es un programa de OCR (Reconocimiento de Caracteres Ópticos) basado en un método de extracción de características (feature extraction). Ocrad lee una imagen en formato pbm (mapa de bits), pgm (escala de grises) o ppm (color), y produce texto en formato byte (8-bit) o UTF-8.

También incluye un analizador de composición (layout) capaz de separar las columnas o bloques de texto que forman normalmente las páginas impresas.

Ocrad puede ser usado como aplicación autónoma en modo texto, o como complemento (backend) de otros programas.

Documentación
El manual está disponible en el sistema info del Sistema Operativo GNU. Emplea el comando info para acceder al directorio del sistema info. Emplea info ocrad para acceder directamente a la sección de ocrad.

Se puede acceder al manual de ocrad desde aquí.

Descargar (Download) ocrad
La última versión publicada de GNU Ocrad se puede encontrar en el subdirectorio /gnu/ocrad/ en tu espejo GNU preferido. Para ver otras formas de obtener ocrad, consulta Cómo conseguir Software GNU. La última versión publicada será la versión más reciente disponible enhttp://ftp.gnu.org/gnu/ocrad/.

Puedes encontrar versiones antiguas y (si las hay) versiones beta para probar en http://download.savannah.gnu.org/releases/ocrad/.

Cómo Conseguir Ayuda
Para informar sobre errores (bugs) en ocrad, la lista de correo bug-ocrad@gnu.org es el lugar más adecuado. Por favor, envía los mensajes como texto llano. No envies HTML, base64 MIME ni múltiples formatos. Incluye una linea descriptiva en el asunto (subject) del mensaje. Si todos los asuntos son "error en ocrad" es imposible diferenciarlos.

Un archivo de la lista de correo está disponible en http://lists.gnu.org/mailman/listinfo/bug-ocrad.

Cómo Ayudar
Para contactar con los mantenedores, tanto para informar sobre un error (bug) como para contribuir soluciones o mejoras, envía un mensaje a bug-ocrad@gnu.org. Por favor, envía los mensajes como texto llano. Si envías parches, hazlo en formato diff unificado (diff -u) sobre la última versión. Incluye una descripción del problema en el mensaje.


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

Ncurses, una librería para usar múltiples ventanas en Linux, segunda parte

ncurses Recuadros Alrededor de Ventanas
Puede crear recuadros alrededor de las ventanas para darle un aspecto más agradable a su programa. Hay una macro en la librería llamado box que lo hace por usted. Al contrario que otras funciones wbox no existe, box toma como argumento un puntero de tipo WINDOW.
Puede encontrar fácilmente más detalles de box en las páginas del man. Aunque hay algo más que debería ser mencionado. Ponerle un recuadro  a una ventana simplemente consiste en escribir los caracteres necesarios en la matriz de caracteres de la ventana que corresponden con las posiciones de los bordes. Si mas adelante por algún motivo escribe en estas posiciones, el recuadro puede corromperse. Para evitar esto, puede crear una ventana dentro de la ventana original con subwin, poner el [recuadro] en la ventana original y utilizar la ventana interior para escribir.
Teclas de Función
Para poder usar las teclas de función, el indicador _use_keypad tiene que ser activado en la ventana desde la que se va a leer la entrada de teclado. keypad es la función que establece el valor de _use_keypad. Una vez activado _use_keypad, puede tomar la entrada de teclado de la forma habitual con las funciones de entrada.
En este caso, si por ejemplo utiliza getch para obtener datos, debe tener cuidado en almacenar los datos en una variable de tipo entero en lugar de una de tipo char. Esto es porque los valores numéricos de las teclas de función son mayores que los valores que puede contener una variable de tipo char. No necesita conocer el valor numérico de las teclas de función ya que la librería proporciona nombres ya definidos para ellas. Estos nombres están listados en la página man de getch.
Un Ejemplo
Vamos a analizar ahora un sencillo y bonito programa. En él los menús van a ser creados usando ncurses y se indicará cuando se selecciones una opción del menú. Un aspecto interesante de este programa es el uso de ventanas ncurses para simular los menús cuando se abren. Lo puede ver en la captura de pantalla de más abajo.
El programa comienza con las cabeceras como es habitual. Luego definimos las constantes para los valores ASCII de las teclas de enter y escape.
#include <curses.h>

#include <stdlib.h>

#define ENTER 10
#define ESCAPE 27


La siguiente función es las primera que se llama al ejecutar el programa. Primero llama a initscr para inicializar curses y luego a start_color para poder utilizar colores. Los pares de colores que se van a utilizar en el programa se definen a continuación. La llamada a curs_set(0) hace que el cursor físico sea invisible. noecho hace que entrada del teclado no aparezca en pantalla. También se puede usar la función noecho para controlar la entrada del teclado y mostrar únicamente las partes que quiera que se muestren. Para quitar los efectos de la función noecho hay que llamar a la función echo. Finalmente se llama a la función keypad para habilitar las teclas de función cuando se lea la entrada de stdscr. Esto es necesario porque en nuestro programa vamos a utilizar las teclas F1, F2 y los cursores.


void init_curses()
{
    initscr();
    start_color();
    init_pair(1,COLOR_WHITE,COLOR_BLUE);
    init_pair(2,COLOR_BLUE,COLOR_WHITE);
    init_pair(3,COLOR_RED,COLOR_WHITE);
    curs_set(0);
    noecho();
    keypad(stdscr,TRUE);
}


La siguiente función crea una barra de menú que aparece en la parte de arriba de la pantalla. Si se fija en dicha función se dará cuenta de que la barra de menú que se ve como una línea sencilla en la parte superior en realidad está definida como una subventana de stdscr con una única línea de alto. Ésta función toma un puntero a esta ventana como parámetro, primero cambia el color de fondo y luego escribe los nombres de los menús. Usamos waddstr para escribir los nombres de los menús. Preste atención a las llamadas a wattron, se usan para escribir con un par de colores diferente (número 3) en lugar de usar el par de colores por defecto (número 2). Recuerde que el par número 2 fue puesto como par por defecto en la primera línea por wbkgd. wattroff es llamado cuando se quiere cambiar al par de color por defecto.


void draw_menubar(WINDOW *menubar)
{
    wbkgd(menubar,COLOR_PAIR(2));
    waddstr(menubar,"Menu1");
    wattron(menubar,COLOR_PAIR(3));
    waddstr(menubar,"(F1)");
    wattroff(menubar,COLOR_PAIR(3));
    wmove(menubar,0,20);
    waddstr(menubar,"Menu2");
    wattron(menubar,COLOR_PAIR(3));
    waddstr(menubar,"(F2)");
    wattroff(menubar,COLOR_PAIR(3));
}


La siguiente función dibuja los menús cuando las teclas F1 o F2 son presionadas. Para crear el efecto de menú una ventana nueva con el mismo color blanco que la barra de menú es creada sobre la ventana azul que compone el fondo.No queremos que esta nueva ventana sobrescriba los caracteres que hubiera anteriormente en el fondo. Estos deben continuar ahí una vez que el menú sea cerrado. Esto es  por lo que la ventana menú no puede ser creada como una subventana de stdscr. Como verá más abajo, la ventana items[0] es creada con la función newwin mientras que las otras ocho ventanas items son creadas como subventanas de items[0]. Aquí items[0] es usada para dibujar una caja alrededor del menú y las otras ventanas items lo son para mostrar los items seleccionados en el menú y también para no sobreescribir los caracteres de la caja alrededor del menú. Para hacer que un item del menú parezca que está seleccionado es suficiente con hacer que el color de fondo sea diferente al del resto de los items. Esto es lo que hace la antepenúltima línea; el color de fondo del primer item es puesto de un color diferente al de los otros y así cuando el menú aparece, el primer item está seleccionado.






WINDOW **draw_menu(int start_col)
{
    int i;
    WINDOW **items;
    items=(WINDOW **)malloc(9*sizeof(WINDOW *));

    items[0]=newwin(10,19,1,start_col);
    wbkgd(items[0],COLOR_PAIR(2));
    box(items[0],ACS_VLINE,ACS_HLINE);
    items[1]=subwin(items[0],1,17,2,start_col+1);
    items[2]=subwin(items[0],1,17,3,start_col+1);
    items[3]=subwin(items[0],1,17,4,start_col+1);
    items[4]=subwin(items[0],1,17,5,start_col+1);
    items[5]=subwin(items[0],1,17,6,start_col+1);
    items[6]=subwin(items[0],1,17,7,start_col+1);
    items[7]=subwin(items[0],1,17,8,start_col+1);
    items[8]=subwin(items[0],1,17,9,start_col+1);
    for (i=1;i<9;i++)
        wprintw(items[i],"Item%d",i);
    wbkgd(items[1],COLOR_PAIR(1));
    wrefresh(items[0]);
    return items;
}


La función que tenemos a continuación simplemente borra la ventana menú creada por la función anterior. Primero borra las ventanas de los items con delwin y luego libera la memoria asignada para el puntero items.


void delete_menu(WINDOW **items,int count)
{
    int i;
    for (i=0;i<count;i++)
        delwin(items[i]);
    free(items);
}


La función scroll_menu nos permite movernos entre menús y dentro de ellos. Primero lee con getch las teclas que son pulsadas en el teclado. Si se presionan los cursores de arriba o abajo, entonces se selecciona el item superior o inferior. Esto se hace, como recordará, haciendo que el color de fondo sea diferente que el del resto de los items. Si se presionan los cursores de izquierda o derecha, el menú abierto se cierra y luego se abre el siguiente. Si se presiona la tecla enter, la función devuelve el item seleccionado. Si la tecla presionada es ESC, se cierran todos los menús sin seleccionar ningún item, La función ignora cualquier otra tecla que sea pulsada. En esta función, getch es capaz de leer las teclas de cursor del teclado. Permítame recordarle que esto es posible porque anteriormente, en la función init_curses, se hizo una llamada a keypad (stdscr, TRUE) y el valor devuelto por getch es de tipo int en lugar de ser de tipo cha ya que los valores de las teclas de función son mayores de lo que una variable de tipo char puede contener.


int scroll_menu(WINDOW **items,int count,int menu_start_col)
{
    int key;
    int selected=0;
    while (1) {
        key=getch();
        if (key==KEY_DOWN || key==KEY_UP) {
            wbkgd(items[selected+1],COLOR_PAIR(2));
            wnoutrefresh(items[selected+1]);
            if (key==KEY_DOWN) {
                selected=(selected+1) % count;
            } else {
                selected=(selected+count-1) % count;
            }
            wbkgd(items[selected+1],COLOR_PAIR(1));
            wnoutrefresh(items[selected+1]);
            doupdate();
        } else if (key==KEY_LEFT || key==KEY_RIGHT) {
            delete_menu(items,count+1);
            touchwin(stdscr);
            refresh();
            items=draw_menu(20-menu_start_col);
            return scroll_menu(items,8,20-menu_start_col);
        } else if (key==ESCAPE) {
            return -1;
        } else if (key==ENTER) {
            return selected;
        }
    }
}


Finalmente tenemos la función principal. En ella se usan todas las funciones que hemos escrito anteriormente para hacer que el programa funcione adecuadamente. También lee las teclas pulsadas con getch y si F1 o F2 son pulsadas, dibuja la ventana de menú correspondiente con draw_menu. Después llama a scroll_menu y deja que el usuario haga su selección desde los menús. Una vez tenga el valor devuelto por scroll_menu, borra las ventanas de menú e imprime el item seleccionado en la barra de mensajes.


Habría que mencionar ahora la función touchwin. Si se llama directamente a refresh sin llamar antes a touchwin después de cerrar los menús, el último menú abierto puede permanecer en pantalla. Esto es poque las funciones de menú no afectan para nada a stdscr y así, cuando se llama a refresh, éste no reescribe ningún caracter de stdscr ya que asume que dicha ventana no ha sido cambiada. touchwin pone todos los indicadores en la estructura WINDOW para decirle a refresh que todas las líneas de la ventana han cambiado y así en el próximo refresco de pantalla se reescribe la ventana completa incluso aunque sus contenidos no hayan cambiado. La información escrita en stdscr permanece  ahí una vez que los menús se han cerrado porque los menús no escriben sobre stdscr, sino que lo hacen en las ventanas nuevas que han creado.


int main()
{
    int key;
    WINDOW *menubar,*messagebar;

    init_curses();

    bkgd(COLOR_PAIR(1));
    menubar=subwin(stdscr,1,80,0,0);
    messagebar=subwin(stdscr,1,79,23,1);
    draw_menubar(menubar);
    move(2,1);
    printw("Press F1 or F2 to open the menus. ");
    printw("ESC quits.");
    refresh();

   do {
        int selected_item;
        WINDOW **menu_items;
        key=getch();
        werase(messagebar);
        wrefresh(messagebar);
        if (key==KEY_F(1)) {
            menu_items=draw_menu(0);
            selected_item=scroll_menu(menu_items,8,0);
            delete_menu(menu_items,9);
            if (selected_item<0)
                wprintw(messagebar,"You haven't selected any item.");
            else
                wprintw(messagebar,
                  "You have selected menu item %d.",selected_item+1);
            touchwin(stdscr);
            refresh();
        } else if (key==KEY_F(2)) {
            menu_items=draw_menu(20);
            selected_item=scroll_menu(menu_items,8,20);
            delete_menu(menu_items,9);
            if (selected_item<0)
                wprintw(messagebar,"You haven't selected any item.");
            else
                wprintw(messagebar,
                  "You have selected menu item %d.",selected_item+1);
            touchwin(stdscr);
            refresh();
        }
    } while (key!=ESCAPE);

    delwin(menubar);
    delwin(messagebar);
    endwin();
    return 0;
}


Si copia el código en un fichero llamada example.c y elimina mis explicaciones puede compilarlo con


gcc -Wall example.c -o example -lcurses


y probar el programa. También puede descargar el código en el enlace que viene más abajo en la sección de referencias.


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:


Ncurses, una librería para usar múltiples ventanas en Linux, primera parte

Ncurses es una librería que proporciona mapeado de las teclas de función, funciones de dibujado en pantalla y la habilidad de usar múltiples ventanas no solapadas en terminales de texto.

¿Qué es Ncurses?
¿Quiere que sus programas tengan una colorida interfaz basada en el terminal? Ncurses es una librería que proporciona funcionalidad de ventanas para terminales de texto. Algunas cosas que ncurses es capaz de hacer son:
    * Usar la pantalla completa como quieras.
    * Crear y controlar ventanas.
    * Usar 8 colores diferentes.
    * Darle a su programa soporte para el ratón.
    * Usar las teclas de función del teclado.
Es posible usar ncurses en cualquier sistema Unix que sigua la norma ANSI/POSIX. Aparte de esto la librería es capaz de detectar las propiedades del terminal de la base de datos del sistema y actuar en consecuencia, proporcionando una interfaz independiente del terminal. Por lo tanto, ncurses puede ser usado con garantías para diseños que vayan a trabajar en diferentes plataformas y terminales.
Midnight Commander es un ejemplo de un programa que utiliza ncurses. También la interfaz utilizada para la configuración del kernel está escrita con ncurses. Más abajo se pueden ver unas capturas de pantalla de estos ejemplos.
ncurses2
ncurses1

¿Donde descargarlo?
Ncurses está desarrollado bajo GNU/Linux. Para descargar la última versión, ver información detallada y encontrar otros enlaces, visite  www.gnu.org/software/ncurses/.
Lo básico
Para utilizar la librería, debe incluir curses.h en su código y asegurarse de enlazar su código con la librería curses. Eso se hace pasando el parámetro -lcurses a gcc.
Es necesario tener algún conocimiento acerca de la estructura básica de datos cuando se trabaja con ncurses. Esta es la estructura WINDOW y, como indica su nombre, es usada para representar las ventanas que se creen. Casi todas las funciones de la librería tienen un puntero a WINDOW como parámetro.
Los componentes más usados de ncurses son las ventanas. Incluso si no crea sus propias ventanas, la pantalla es considerada como una ventana. Así como el descriptor FILE stdout de la librería estándar de E/S representa la pantalla (cuando no hay redirecciones), ncurses tiene el puntero de tipo WINDOW stdscr, otro puntero de tipo WINDOW llamado curscr también es definido en la librería. Mientras stdscr representa la pantalla, curscr representa la pantalla actual conocida por la librería. Aquí se preguntará: "¿Cuál es la diferencia?". Siga leyendo.
Para poder usar las funciones y variables de ncurses, primero tiene que llamar a la función initscr. Esta función asigna memoria para variables tales como stdscr o curscr y prepara la librería para ser usada. En otras palabras, todas las funciones de ncurses tienen que ir después de la llamada a initscr. Asímismo, debe llamar a endwin una vez que haya acabado con ncurses. Esto libera la memoria usada por ncurses. Después de llamar a endwin no podrá usar ninguna función de ncurses a menos que vuelva a llamar a initscr.
Entre las llamadas a initscr y endwin, asegúrese de no enviar la salida a pantalla usando las funciones de la librería estándar de E/S. Si no, es probable que la salida en pantalla se corrompa y no se parezca en nada a lo que quería. Cuando ncurses está activo, use únicamente sus funciones para enviar la salida a pantalla. Antes de llamar a initscr o después de llamar a endwin puede hacer lo que desee.
Actualizando la pantalla: refresh
La estructura WINDOW no solamente guarda la altura, anchura y posición de la ventana, sino que también almacena su contenido. Cuando usted escribe en una ventana, los contenidos de la ventana son cambiados, pero eso no significa que esos cambios aparezcan en la pantalla inmediatamente. Para que los cambios se muestren en pantalla hay que llamar a las funciones refresh o wrefresh.
Aquí está la diferencia entre stdscr y curscr. Mientras que curscr almacena el contenido de la pantalla actual, stdscr puede tener una información diferente después de las llamadas a las funciones de salida de ncurses. Si desea que los últimos cambios sobre stdscr sean volcados en curscr, entonces tendrá que llamar a la función refresh. En otras palabras, refresh es la única función que trata con con curscr. Es recomendable que no se líe con curscr y deje que sea la función refresh quien se encargue de actualizarlo.
refresh tiene un mecanismo para actualizar la pantalla lo más rápidamente posible. Cuando la función es llamada, solamente actualiza las líneas de la ventana que hayan sido cambiadas. Esto ahorra tiempo de CPU y evita al programa tener que volver a escribir la misma información en pantalla.. Este mecanismo es la razón por la que las funciones de ncurses y las funciones de E/S estándar pueden producir resultados erróneos cuando son usadas conjuntamente. Cuando las funciones de ncurses son llamadas éstas fijan un indicador que indica a refresh cuáles son las líneas que han cambiado, nada de ésto ocurre cuando se llama a las funciones de la librerías de E/S estándar.
refresh y wrefresh básicamente hacen lo mismo. wrefresh toma un puntero a WINDOW como parámetro y únicamente actualiza el contenido de ésta ventana. refresh() es equivalente a wrefresh(stdscr). Como se verá más tarde, al igual que wrefresh, la mayoría de las funciones de ncurses tienen macros que aplican estas funciones a stdscr.
Creando nuevas ventanas
Hablemos ahora un poco de subwin y newwin, las funciones para crear nuevas ventanas. Estas funciones toman la altura, el ancho y las coordenadas de la esquina superior izquierda de la nueva ventana como parámetros y devuelven un puntero de tipo WINDOW que apunta a su nueva ventana. Este puntero puede ser usado por wrefresh y otras funciones que se verán más adelante.
"¿Si hacen lo mismo, por qué duplicar las funciones?" se puede preguntar usted. Está en lo cierto, hay pequeñas diferencias, subwin crea una nueva ventana que es subventana de otra. Una ventana creada de esta forma hereda las propiedades de la ventana padre. Estas propiedades pueden ser cambiadas más adelante sin afectar a la ventana padre.
Aparte de esto, hay una cosa que las mantiene unidas. La matriz de caracteres que almacena los contenidos de la ventana son compartidos entre las ventanas padre e hijo. En otras palabras, los caracteres que estén en la intersección de las dos ventanas pueden ser cambiados por cualquiera de ellas. Si la ventana padre escribe en dicho área, el contenido de la ventana hija también cambia, y a también la inversa.
Al contrario que subwin, newwin crea una ventana totalmente nueva. Esa ventana, a menos que tenga sus propias subventanas, no compartirá su matriz de caracteres con ninguna otra ventana. La ventaja de usar subwin es que al usar una matriz de caracteres compartida el gasto de memoria es menor. Por otro lado, cuando las ventanas empiezan a escribirse unas sobre otras, el uso de newwin tiene sus propias ventajas.
Puede crear sus propias subventanas hasta cualquier profundidad. Cada subventana puede tener a su vez sus propias subventanas, pero entoces tiene que tener en cuenta que la matriz de caracteres será compartida por más de dos ventanas.
Cuando haya acabado con la ventana que ha creado, puede borrarla con la función delwin. Le aconsejo que consulte las páginas del man para ver la lista de parámetros de estás funciones.

Escribir a Ventanas, Leer de Ventanas
Hemos hablado acerca de stdscr, curscr, refrescar la pantalla y crear nuevas ventanas. ¿Pero que pasa cuando escribimos en una ventana? ¿O cuando leemos datos de una ventana?
Las funciones usadas para ello son similares a sus contrapartidas de la librería de E/S estándar. Entre estas funciones está printw en lugar de printf, scanw en lugar de scanf, addch en lugar de putc o putchar, getch en lugar de getc o getchar. Estas funciones se usan de la forma usual, sólo sus nombres son diferentes. De forma similar, addstr puede ser utilizada para escribir una cadena en una ventana y getstr para leer una cadena de una ventana. Todas esta funciones, con la letra 'w' al principio de su nombre y un puntero a WINDOW como primer parámetro hacen su trabajo en una ventana diferente a stdscr. Por ejemplo, printw (...) y wprintw(stdscr, ...) son equivalentes, así como refresh() y wrefresh(stdscr).
Entrar en detalles con estas funciones llevaría mucho tiempo. Las páginas del man son la mejor fuente de información para aprender acerca de sus descripciones, prototipos, valores de retorno y otras notas. Le aconsejo que las mire para cada función que use. Ofrecen detallada y valiosa información. La última sección de este artículo en la que expongo un programa de ejemplo también puede servir de tutorial sobre como usar estas funciones.
Cursores Físicos y Lógicos
Es necesario explicar como funcionan los cursores físicos y lógicos después de hablar acerca de cómo escribir y leer en ventanas. Lo que se entiende por cursor físico es el típico cursor parpadeante que se ve en pantalla, únicamente puede haber un cursor físico. Por otro lado, los cursores lógicos pertenecen a las ventanas de ncurses y cada ventana tiene el suyo propio. Así pues puede haber muchos cursores lógicos.
El cursor lógico está en la posición de la ventana donde el proceso de lectura o escritura va a comenzar. Por lo tanto, moviendo el cursor lógico podremos escribir en cualquier punto de la pantalla o ventana cuando queramos. Esta es una de las ventajas de ncurses sobre las librería de E/S estándar.
La función que se encarga de mover el cursor lógico es move o, como podrá deducir fácilmente, wmove. move es una macro de wmove, hecha para stdscr.
Otros asunto es la coordinación entre los cursores físicos y lógicos. La posición del cursor físico después de un proceso de escritura depende del flag _leave, presente en la estructura WINDOW. Si _leave está activo, el cursor lógico se moverá hasta la posición del cursor físico después de realizar la escritura (donde se escribió el último caracter). Si _leave no está activo, el cursor físico vuelve a la posición del cursor lógico después de realizar la escritura (donde se escribió el primer caracter). El flag _leave es controlado por la función leaveok.
La función que mueve el cursor físico es mvcur. Al contrario que otras, mvcur tiene efecto inmediatamente, antes incluso de la siguiente llamada a refresh. Si desea que el cursor físico sea invisible use la función curs_set. En las páginas del man encontrará más detalles.
También hay macros que combinan las funciones de movimiento y escritura descritas anteriormente en una simple llamada. Esto está bien explicado en las mismas páginas del man que las funciones addch, addstr, printw, getch, getstr, scanw, etc...
Borrando en Ventanas
Ya sabemos como se puede escribir en ventanas. ¿Pero ahora cómo borramos ventanas, líneas o caracteres?
Borrar, en ncurses, significa rellenar el carácter, la línea o el contenido de la ventana con espacios en blanco. Las funciones que voy a explicar más abajo rellenan los caracteres (posiciones en la pantalla en realidad) necesarios con espacios en blanco y así borran la pantalla.
Primero hablemos de las funciones que se refieren al borrado de un caracter o una línea. Las funciones delch y wdelch borran el caracter que está bajo el cursor lógico de la ventana y desplaza los caracteres que le siguen en la misma línea hacia la derecha. deleteln y wdeleteln borran la línea en la que está el cursor lógico y desplazan hacia arriba todas las líneas que estén más abajo.
Las funciones clroeol y wclroeol borrarán todos los caracteres de la misma línea que estén a la derecha del cursor lógico. clrobot y wclrobot primero llaman a wclrtoeol para borrar todos los caracteres a la derecha del cursor lógico y después borra todas las líneas que haya a continuación.
Aparte de estas, hay funciones que borran la pantalla entera o solamente una ventana. Hay dos métodos para borrar la pantalla entera. El primero es rellenar todas las posiciones con caracteres en blanco y después llamar a la función refresh y la otra es usar el codigo de control integrado en el terminal. El primer método es más lento porque requiere que todas las posiciones de la pantalla sean reescritas una a una mientras que el segundo borra toda la pantalla inmediatamente.
erase y werase rellenan la matriz de caracteres de una ventana con espacios en blanco. En la próxima llamada a refresh la ventana se borrará. Sin embargo, si la ventana que hay que borrar ocupa toda la pantalla, usar estas funciones es una solución poco elegante. Estas funciones usan el método descrito más arriba. Cuando la ventana que hay que borrar ocupa toda la pantalla, es mucho mejor utilizar las siguientes funciones.
Antes de entrar en estas funciones, habría que hablar del indicador _clear. Está en la estructura WINDOW y si está activado, pregunta a refresh para enviar el código de control al terminal cuando es llamado. Al ser llamado, refresh comprueba si la ventana ocupa toda la pantalla (usando el indicador _FULLWIN) y si es así, borra la pantalla con el método integrado en el terminal. Luego sólo tiene que escribir los caracteres y no los espacios en blanco en la pantalla. Esto hace que borrar la pantalla completa sea más rápido. La razón por la que este sistema sólo se usa para ventanas que ocupan toda la pantalla es que el código de control del terminal borra toda la pantalla y no sólo una ventana. El indicado _clear es controlado por la función clearok.
Las funciones clear y wclear son usadas para borrar ventanas que ocupan toda la pantalla. De hecho, estas funciones son equivalentes a hacer una llamada a werase y a clearok. Primero, rellenan la matriz de caracteres de la ventana con espacios en blanco. Y luego, activando el indicador _clear borra la pantalla usando el metodo integrado en el terminal si la ventana ocupa toda la pantalla y en caso contrario lo hace rellenando todas las posiciones con espacios en blanco.
En resumen, si sabe que la ventana a ser borrada ocupa toda la pantalla entonces use clear o wclear. Será más rápido. Si no, no hay ninguna diferencia entre el uso de wclear o werase.
Usando Colores
Los colores que ve en la pantalla se muestran a traves de pares de colores. Esto es así porque cada posición tiene un color de primer plano y otro de segundo plano. Para escribir en color con ncurses tienen que crear sus propios pares de colores y  usarlos para escribir en pantalla.
Al igual que initscr necesita ser llamado para poder utilizar ncurses, start_color tiene que ser llamado para poder usar colores. La función necesaria para crear sus propios pares de colores es init_pair. Cuando crea un par de colores con init_pair, éste es asociado con el número que se le pasa como primer parámetro a la función. Así, siempre que quiera usar un par, tiene que referirse a él con el número asignado a COLOR_PAIR.
Aparte de crear pares de colores, necesita algunas funciones para escribir con diferentes pares de colores. Esto se hace con las funciones attron y wattron. Estas funciones hacen que, desde el momento en que son llamadas, todo lo que se escriba en la ventana correspondiente se haga en el par de colores que ha elegido.
También tiene las funciones bkgd y wbkgd que cambia el par de colores asociado con una ventana completa. Cuando alguna de ellas es llamada cambia el color  tanto del primer como del segundo plano de todas las posiciones de la ventana. Esto significa que en la próximo refresco de pantalla, cada posición de la ventana se reescribirá con el nuevo par de colores.
Mire en las páginas del man para saber cuales son los colores disponibles y más detalles de las funciones que hemos mencionado.
Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog: