lunes, 17 de octubre de 2016

Como crear un Tema Splash Screen KDE para nuestro Kubuntu 10.04


Hoy me he dado a la tarea de crear un Splash Screen para mi Kubuntu 10.04, no es el mejor splash el que al final ha quedado, pero creo que para empezar está bien, y lo más importante he logrado darle un toque de personalización a mi KDE 8).

Antes que nada advierto que no soy especialista en estos lares, por lo que si alguno de los pasos parecen empíricos, realmente lo son jajaja .

Sin más preámbulo, aquí va el proceso seguido para crear el Tema IknaxioSplash :D:

En nuestro directorio favorito, creamos la estructura de carpetas para nuestro Splash Screen Theme:

Como podemos observar he creado la carpeta IknaxioSplash y dentro de ella los archivos principales son:
  • Theme.rc
  • main.qml
Theme.rc contiene la información de mi tema:
[KSplash Theme: IknaxioSplash]
Name = Iknaxio Splash Screen for KDE
Description = My first splash screen theme
Version = 0.1
Author = Iknaxio Marx 
Homepage = http://www.ecualug.org/blog/iknaxio

# Theme behaviour settings.
Engine = KSplashQML
Según entendí, el KSplash Theme coincide con el nombre de la carpeta de nuestro tema, de allí las siguientes líneas son informativas Name, Description, Version, Author, Homepage. El Engine se refiere propiamente al motor que se va a usar para renderizar el tema, como voy a usar QML, el engine es KSplashQML.

main.qml contiene en sí la "animación" del splash:
import QtQuick 1.0

Rectangle {
    id: main
    width: screenSize.width
    height: screenSize.height
    anchors.fill: parent

    Image {
        id: splashImage
        fillMode: Image.PreserveAspectCrop
        source: "images/background.jpg"
        anchors.fill: parent

        Image {
            id: iknaxio
            width: 732
            height: 98
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.verticalCenter: parent.verticalCenter
            source: "images/iknaxio.png"
            opacity: 0
        }
        
        Image {
            id: bob
            width: 550
            height: 550
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.verticalCenter: parent.verticalCenter
            source: "images/bob.jpg"
            opacity: 0
        }
    }

    SequentialAnimation {
        id:splashanimation
        NumberAnimation { 
            target: bob; 
            property: "opacity"; 
            duration: 4000;
            to: 1; 
            easing.type: Easing.InOutQuad 
        }
        NumberAnimation { 
            target: bob; 
            property: "opacity"; 
            duration: 4000; 
            to: 0.05; 
            easing.type: Easing.InOutQuad
        }
        NumberAnimation { 
            target: iknaxio; 
            property: "opacity"; 
            duration: 4000; 
            to: 1; 
            easing.type: Easing.InOutQuad
        }
    }

    Component.onCompleted: splashanimation.start()
}
En la primera parte se declaran los elementos gráficos y se les asigna un id, realizamos algo así como la declaración de las variables que más adelante vamos a usar.

Para el caso del elemento Rectangle le asigno el ancho y alto de la pantalla. Para los Image (fondo de pantalla, la estampa de Bob Marley y las letras que dicen IKNAXIO) es necesario declarar el ancho y alto real de esos elementos, sino los sabemos basta con dar clic derecho sobre la imagen para averiguarlo.

Centro las imágenes a la pantalla y declaro los source, es decir la ruta en la que se encuentran almacenadas, en este caso es la carpeta images. Opacity: 0, significa que el elemento no es visible, opacity puede variar entre 1 y 0, si le asignamos uno el elemento se muestra totalmente.

De allí viene la animación ;)

Se han definido tres etapas en la animación, las mismas que están representadas por cada una de las líneas NumberAnimation:
  1. En 4 segundos mostrar poco a poco la estampa de Bob Marley, para lo cual se incrementa gradualmente la propiedad opacity hasta llegar a 1.
  2. En los siguientes 4 segundos ocultar gradualmente a Bob, pero no del todo, ya que lo dejamos con un opacity de 0.05.
  3. Finalmente en los últimos 4 segundos mostrar la leyenda "IKNAXIO".
Para poner en "producción" nuestro recién creado tema, copiamos toda la carpeta IknaxioSplash hacia la ruta:
~/.kde/share/apps/ksplash/Themes/
Y de allí vamos a activar nuestro tema a System Settings->Workspace Appearance->Splash Screen:
Con esta mega explicación, espero que les despertara la curiosidad de intentar realizar su propio Splash Screen.

Adjunto encontrarán el archivo IknaxioSplash.txt, el cual contiene el tema al que se hace referencia en este Como. Para poder usarlo tienen que renombrarlo de tal manera que luego de quitar la extensión .txt quede asi IknaxioSplash.zip 

Saludos y una excelente semana para todos ;)  

Referencias:

"Transporta un puñado de tierra todos los días y construirás una montaña" - Confucio