February 24, 2018

Creo que el título del artículo es suficientemente explícito para mostrar el entusiasmo con el que la Comunidad KDE está desarrollando la próxima versión de su escritorio. Y es que el Plasma 5.13 que viene nos proporcionará efectos de desenfoque en Plasma 5.13 para varios de sus componentes. Pequeños pasos y pequeñas mejoras que hacen todavía más personalizable al escritorio más personalizable del mundo del Software Libre (y del Software Privado)

Efectos de desenfoque en Plasma 5.13

El próximo 12 de junio de 2018 tiene previsto el lanzamiento de Plasma 5.13, y a 3 meses de esa fecha ya se están empezando a filtrar algunas de las novedades que nos ofrecerá el nuevo escritorio de la Comunidad KDE.

De momento, y espero que nos sean los últimos, me he encontrado con una serie de vídeos de baby WOGUE que nos muestra algunas mejoras visuales que permitirán tener un Plasma 5.13 todavía más espectacular. Son simples mejoras visuales, pero que configuradas correctamente pueden convertir tu Plasma es una delicia visual.

Efectos de desenfoque en Plasma 5.13

Para empezar podremos tener una Terminal o Konsole con efecto desenfocado (blur en inglés) que queda de fábula sobre nuestro escritorio y que interacciona incluso con los videos que se estén reproduciendo en ese momento. Para llegar a esta opción deberemos ir a las Preferencias del Sistema, abrir las Estilos de Aplicación y seleccionar Configurar del tema Breeze.

No obstante lo mejor es ver el siguiente vídeo:

Y el mismo baby WOGUE continua su personalización del escritorio Plasma 5.13 (versión del desarrollador) con otro efecto desenfocado aplicado esta vez a los menús y submenús de las aplicaciones. Una vez más lo mejor es ver el siguiente vídeo:

¿Qué os parece? Yo creo que si, me parece que es una forma muy acertada de tener más integrado la parte práctica y funcional de Plasma con una de las partes más importantes en el aspecto visual, el fondo de pantalla.

Do your app icons in Discover look ugly and pixellated? If so, you’re probably a Kubuntu user. Every user of a recent Kubuntu version unfortunately sees horrid low-resolution icons in Discover. It’s very unpleasant.

Today I helped drive an investigation and resolution for this issue. Here’s the good news: it’ll be fixed in the upcoming Kubuntu 18.04, and you can fix it for yourself, today! Here’s how.

  • Run the following terminal commands:
    sudo sed -i "s/hidpi/large/" /etc/apt/apt.conf.d/60plasma-discover
    sudo apt update
    sudo appstreamcli refresh-cache --force
  • Restart Discover, if it’s running

Ta-daa! Pretty, high-resolution icons:

This turned out to be a bug in how Discover was packaged in Debian. Ubuntu was re-using the Debian Appstream configuration packaging, and that packaging was erroneously downloading HiDPi versions of small icons instead of large icons. This illustrates an eternal principle in software: the price of 3rd-party and upstream dependencies is eternal communication. When every layer of software is built on top of another layer provided by someone else, communication is mandatory; when the people responsible for each layer don’t talk to one another regularly, bugs creep in. Once all parties were talking to one another in the same (virtual) room, a fix materialized literally within minutes.

Thankfully, this bug has been squashed, and Kubuntu users will once again see pretty app icons.

If my efforts seem useful and you’d like to see more of them, consider becoming a patron on Patreon, LiberaPay, or PayPal.

February 23, 2018

The quest to make Discover the most-loved Linux app store continues at Warp 9 speed! You may laugh, but it’s happening! Mark my words, in a year Discover will be a beloved crown jewel of the KDE experience. Here’s what this past week yielded for Discover:

New Features

Bugfixes

  • Fixed a bug where searching didn’t work when the main window is narrow and shows an app page (KDE bug 390191, fixed in KDE Plasma 5.12.3)
  • Fixed a bug that caused the app list to inappropriately re-order itself after clearing a search (KDE bug 390909, fixed in KDE Plasma 5.12.3)
  • Fixed a bug that could cause Discover to get stuck in the “Checking for Updates” state (KDE bug 389072, fixed in KDE Plasma 5.12.3)
  • Fixed a bug that could cause a crash when trying to remove a Flatpak app under certain circumstances (KDE bug 390805, fixed in KDE Plasma 5.13.3)
  • Fixed a bug that prevented Discover’s App page from being scrolled vertically when the cursor was positioned over the screenshots (KDE bug 389974, fixed in KDE Plasma 5.12.1)
  • Fixed a bug where Discover could only launch one version of an app when multiple Flatpak versions were installed (KDE bug 389079, fixed in KDE Plasma 5.12.3)
  • Fixed a bug that could cause Discover to crash while opening a .flatpakref file under certain circumstances (KDE bug 390907, fixed in KDE Plasma 5.12)
  • Fixed a bug that could cause certain Snap apps to appear to be installed when they weren’t actually installed (KDE bug 390482, fixed in KD Plasma 5.12.3)

UI improvements and polish

  • Discover’s sidebar is now has a more appropriate width (KDE bug 385992, fixed in KDE Plasma 5.12.3):
  • “Application Addons” section now only has application addons, and “Plasma Addons” category now only has Plasma addons (KDE bug 390594, fixed in KDE Plasma 5.12.2):
  • Discover’s Multimedia category now has sub-categories (KDE bug 388933, fixed in KDE Plasma 5.12.2):

    These categories are still a little rough and will display some things that shouldn’t be there, but we’re going to refine them over time.
  • The horizontal shadow in the screenshots view on Discover’s app page now looks good when using the Breeze Dark theme (KDE Phabricator revision D10701, fixed in KDE Plasma 5.12.3):
  • Discover no longer confusingly points users to non-existent documentation (KDE bug 390401, Fixed in KDE Plasma 5.12.3)
  • Discover’s Install and Remove buttons now have the same icon colors in Desktop view as they do in Mobile view (KDE bug 389481, fixed in KDE Plasma 5.13)
  • Discover’s “Check for Updates” button is now on the Updates page where it belongs (KDE bug 390347, fixed in KDE Plasma 5.13)

Like what you see? Be a part of it! Becoming a KDE contributor is easy as pie, and we’re working to streamline the process every day. Help us build something of enduring value during these tumultuous times.

If my efforts seem useful and you’d like to see more of them, consider becoming a patron on Patreon, LiberaPay, or PayPal.

Andre Heinecke did some patches [1][2][3][4][5] over the last few weeks that finally got landed this week.

With it we support recalculation of some fields based on others. An example that calculates sum, average, product, minimum and maximum of three numbers can be found in this youtube video.



This code will be available for the Okular version that will ship with KDE Applications 18.04

Este año estoy dejando de lado a los eventos que organiza los chicos de Barcelona Free Software. Se me pasa promocionar sus charlas, y eso que siempre creo que son muy interesantes. Espero que me perdonen y que vean mi buena voluntad promocionando la próxima charla en la que tenremos a Moodle en los meetups de Barcelona Free Software. Si pudiera, no me lo perdería.

Moodle en los meetups de Barcelona Free Software

Moodle en los meetups de Barcelona Free SoftwareSegún podemos leer en la página oficial, Moodle es una plataforma de aprendizaje diseñada para proporcionarle a educadores, administradores y estudiantes un sistema integrado único, robusto y seguro para crear ambientes de aprendizaje personalizados.

El éxito de su uso se puede justificar mediante números: utilizado en 229 por más de 125 millones de personas, ha sido traducido a 100 lenguajes y con casi mas de 1.500 plugins externos que ha sido desarrollado por más de 800 desarrolladores.

Así que si quieres saber más del proyecto Barcelona Free Software os invito a su próxima charla donde Martin Dougiamas (https://twitter.com/moodler)  creador de Moodle y CEO de Moodle HQ, la compañía que dirige les pasos de Moodel y que planea abrir una nueva oficina en Barcelona este mismo año.

Los datos importantes de Moodle en los meetups de Barcelona Free Software son los siguientes:

Además, recuerda que tendremos el usual “networking” con cerveza gratis incluida. Este meetup está organizado por KDE España, la asociación nacional de usuarios y desarrolladores de KDE, un proyecto de software libre que crea el Plasma Desktop y cientos de aplicaciones usando Qt y QML

No te lo pienses. ¡Te esperamos el miércoles 27 de febrero!

Más información: Barcelona Free Software

¿Qué es Meetup?

Las charlas de Barcelona Free Software se organizan mediante Meetup, una red social que tiene una diferencia básica respecto a otras redes sociales, ya que  promueve la formación de grupos en torno a intereses con el fin de que sus miembros se conozcan cara a cara.

Es decir, los usuarios establecen contacto a través de grupos digitales nuevos o ya creados, partiendo de intereses comunes como política, libros, juegos, películas, salud, mascotas,

Did you know you can install an AI personal assistant on your Plasma desktop?

Mycroft is running through the last 24 hours of the crowdfunding campaign for its Mark II assistant. The machine looks awesome and offers similar functionality to other proprietary alternatives, but with none of the spying and leaking of personal data.

The Mark 2 will be delivered to backers at the end of this year, but you can enjoy the pleasures of giving orders to an AI right now by installing the Mycroft widget on Plasma courtesy of KDE hacker Aditya Mehra.

As the widget is still experimental software, the installation is currently slightly cumbersome. The users have to build it from source and write to directories that should usually be accessible only to the administrator account. The widget also uses Python 2, which is a bit old at this stage.

However, a little dicky bird from openSUSE has told us that they are solving these issues, migrating the software to Python 3 and packaging RPMs. They said they will have packages for Tumbleweed *maybe* as early as next week.

Enjoy being an overlord to the AIs while you can.

People, ideas and data are moving all around the world nowadays, and so are your applications! Developing a UI in one language only, regardless of the platform is not an option anymore. Now if you are lucky enough to be using Qt, this is achievable with little effort, even when dealing with non-latin characters and “right to left” languages.

This tutorial will guide you towards this goal with your Qt Quick application and will hopefully give you some, useful tips!

Phase 1: Translation Files and Iupdate

1.1 Generate Your Translation File in Qt

The first thing to do is to translate your application. It means you have to take all the static strings in your application and replace them with the translated version at the right time.

In Qt, this is first done by declaring translations files and using translation methods (tr, qsTr, QT_TR_NOOP). Your application will require exactly one translation file per supported language.

This is how you have to modify your project file and QML files to enable extraction the strings to translate:

MyProject.pro

TRANSLATIONS += \
    translations/en-US.ts \
    translations/zh-CN.ts \
    translations/ar-MA.ts \

lupdate_only {
    SOURCES += \
         main.qml\
         MainPage.qml
}

main.qml
Windows {
    width: 800; height: 480
    title: qsTr ("My Application Title")
}

If you are wondering about the “en-US” notation, it corresponds to IETF language tags (https://en.wikipedia.org/wiki/IETF_language_tag). It is the juxtaposition of the language and country code and is often used to identify languages and locale.

Also, note we used ‘lupdate_only’ conditional in order to add our QML files to SOURCES only for the lupdate step. The SOURCES variables are used to compile your .cpp files, but they also happen to be used by lupdate to extract the translations.

At this point you can manually generate the translation files in QtCreator using “Tools > External > Linguist > Update translations (linguist)”. This will regenerate .ts files after parsing all files from the SOURCE variable of your project. You will end up with three .ts files (XML format) in your project, containing your new untranslated string “My Application Title”, its context (i.e. file) and its line number.

1.2 Now Apply Your Translation

You can then apply a translation.

Instantiate a QTranslator class, and use the QCoreApplication::installTranslator() method.

QTranslator *arabicTranslator = new QTranslator (":/translation/ar-MA.ts");
qApp ->installTranslator (arabicTranslator);

More than one translator can be installed at the same time. Qt will translate your strings using the last applied translator, and sequentially the next ones until it succeeds… or not. If not your original string will be displayed as it is written in your code.

Window {
    width: 800; height: 480
    title: qsTr ("My Application Title")
}

Phase 2: Translation at Runtime

Another common request is to dynamically retranslate the user interface. Changing the translator at runtime is quite simple, but updating the strings to reflect that modification may be a bit more challenging.

Fortunately, Qt provides QEvent::LanguageChange event for that purpose.

It is generated when you apply a new translator. This is what you will use for Widget based applications, along with the retranslateUi method for Designer generated UIs.

However, this is not very convenient and I found there is another simple solution.

  • Expose an empty QString property, trTrigger in our case
  • Bind your texts with this property like ‘text:qsTr(“My text”) + app.trTrigger
  • Emit trTrigger “changed”signal every time the language changes

You will get the full expression being re-evaluated (hence retranslated) while keeping the text unaffected.

main.qml
Window {
     width: 800; height: 480
     title: qsTr ("My Application Title") + app.trTrigger
}

Phase 3: Supporting Chinese, Arabic, and Others

This is where font and text encoding become important. You may already have stumbled upon related issues when copy-pasting special characters from another document, only to discover they were replaced by unreadable ones. The two usual suspects are the Font and the Encoding of your document.

  • An incorrect encoding won’t be able to store or translate the characters correctly
  • An incorrect font won’t be able to render the characters

For example, Ask Comic sans MS to tell you “你好!”, and it will just fail. If this happens (and it probably will), it simply means your system or software uses a different or fallback font. This fallback font is used to render Chinese, despite the fact the original font does not support Chinese characters. And this is exactly what Qt will do when possible, saving you some work!

That’s why for the best visual outcome you will need to include fonts that are compatible with the language you want to support. If you then package these fontswith your application, you can easily install them dynamically using the QFontDatabase, or FontLoader on QML side.

On Linux platform, just make sure you have a fontloader library installed and available otherwise it won’t work. The encoding is less explicit than the font. It applies to files and variables storing your text. As long as you stick with QString for display and Qt translation mechanism you should be fine. But when you manipulate non-ascii characters you will have to take a few precautions:

  1. In files, make sure that encoding supports the characters you use (UTF-8 is a good default choice)
  2. In variables, make sure that it supports such characters (e.g. std::wstring vs std::string).

As for classic Qt translation, you will have to provide the corresponding .ts file to the person in charge of translations (e.g. “translations/zh-CN.ts”), as well as the linguist application from your Qt folder (e.g. “C:\Qt\5.8\mingw53_32\bin”).

Yes, I used a Windows path as an example, because I doubt that people working on your translations will be able to run linguist from your custom Linux distribution Linguist is a standalone application, so translators won’t need to install Qt, don’t worry.

This standalone application allows loading and saving .ts files, once the translations are done.

Witekio Qt Linguist Chinese

Now ask your translator to send you the .ts file modified: you’re done!

Phase 4: Don’t Forget that Right to Left Is Not Only a Text Thing

User interface composing is where the biggest difference compared to Left-to-Right languages lies.

In Arabic and Hebrew, you read and write from the right side to the left, and this has a significant impact not only on the text but on your whole application including:

  • Text alignment (right aligned by default!)
  • Menus and components position
  • Writing direction
  • Lists direction

In a way, this is like flipping your entire UI layout horizontally. Qt will locally help you change text alignment based on the character set used, but you will have to anticipate and implement the global strategy.

At the application level, you have the “setLayoutDirection” method. It is typically set from the application language, but you can also do it manually with:

qApp->setLayoutDirection (Qt::RightToLeft);

Qt Quick application then provides different ways to deal with layout direction. QML Layouts have the layoutDirection property, Images have the mirror, and all Items have the very powerful LayoutMirroring attached property.

”LayoutMirroring” is a fast way to change the direction of layouts, positioners (Row, Grid, …), anchors and text alignments, of the item and its children with only two lines:

Page {
     LayoutMirroring.enabled: (Qt.application.layoutDirection === Qt.RightToLeft)
     LayoutMirroring.childrenInherit: true
     Row {
         // Row will use right-to-left order when LayoutMirror.enabled = true
         Text {
              id: songNumber
              text: "1."
              horizontalAlignment: Text.AlignLeft // Alignment will adjust too. But don't fail to mention it         
                                                  // or the text won't change its alignment
         Text {
              id: artistItem
              text: "Some Artist"
              horizontalAlignment: Text.AlignLeft
              // Manually change elide side
              elide: (Qt.application.layoutDirection === Qt.LeftToRight) ? 
Text.ElideRight : Text.ElideLeft
         }
    }
}

LayoutMirroring.childrenInherit will apply the mirroring to all the children, making it a very efficient way to apply it. However be careful as it will very likely break some parts of your UI if you have not built it from the beginning with “Right-to-Left” and “Left-to-Right” in mind.

The example below shows the difference between standard English version and Arabic right-to-left version. Note that not only the text alignment is changed, but also the layout and the “+” and “-” buttons. This may look odd to some of you, but remember that right-to-left languages are not only about the text, but also the way eyes scan the content of the application.

Witekio | qt-application-english et qt-application-arabic-rtl

 

How Can You Make Chinese, Arabic, and Left-To-Right Integration as Easy as Possible? Wrap Up!

  • Use Qt Linguist and QTranslators for translations
  • Pack the fonts you want to use in your application for Chinese, Arabic, etc and install them with QFontDatabase or Fontloader
  • Do not use absolute positioning (the default “x:O” does count as such!)
  • Do use Layouts and positioners
  • Do use anchors and anchors margins
  • Do set Text.horizontal Alignment property

Qt provides you with a good start for integrating a lot of languages. With a bit of work and anticipation, your application will be understood all over the world. The key to an efficient integration of Right to Left languages is simply to plan and test it early during application development, to ensure it is fully compatible.

On embedded devices, don’t forget that Chinese, Russian and Arabic, only to name a few, need more than a simple keyboard layout, but also a way to “compose” different words based on what was typed. This is critical if you created your own virtual keyboard.

People will not be able to write in these languages simply with a different keyboard layout. Hopefully, the Qt Virtual Keyboard (Commercial or LGPLv3 license) does provide such specific input method, if you are not willing to redevelop it for yourself.

Another way is to use a carefully selected iconography. Symbols may not have exactly the same meaning in all countries, but if carefully picked up, they can help you keep your UI simple and clear.

And guess what? Resources (like images), paths and names can be translated too!

website: www.witekio.com  –  blog: www.witek.io

The post Qt Internationalization – Create Your UI Using Non-Latin Characters appeared first on Qt Blog.

February 22, 2018

This year, for the first time, the Qt Project will be participating in the Google Summer of Code initiative.
This is an awesome opportunity for students who are interested in or are already involved with Qt development, and who want to flip bits and not burgers during their summer break!
What this means in practice is that by submitting a strong project proposal to the initiative, you as a student have a good chance to get a nicely paid summer job working on new features or improvements to Qt!

How to participate

For students, the recommended approach to participate in this initiative with the Qt Project is to start off by reading up how the whole thing works. Then, come up with a project idea (or choose one of the suggested ideas in the Qt Project’s wiki page), and reach out to mentors as soon as possible in our dedicated channels (in #qt-gsoc IRC channel on the Freenode network, or through the development mailing list).

In these channels you can discuss your idea with mentors (and the community), then get started, with the help of the mentors, to write down your project proposal and finally submitting it. The deadline for the submission of your proposal is the 27th of March.

Hope this sounds like an interesting opportunity and we hope that you will participate in making Qt even better!

The post The Qt Project and Google Summer of Code 2018 appeared first on Qt Blog.

Como estaba previsto en el calendario de los desarrolladores, el pasado martes 20 de febrero la Comunidad KDE ha comunicado que ha sido lanzada la segunda actualización de Plasma 5.12 LTS. Una noticia que aunque es esperada y previsible es la demostración palpable del alto grado de implicación de la Comunidad en la mejora continua de este gran pedazo de Software Libre.

Lanzada la segunda actualización de Plasma 5.12 LTS

No existe Software creado por la humanidad que no contenga errores. Es un hecho incontestable y cuya única solución son las actualizaciones. Es por ello que en el ciclo de desarrollo del software creado por la Comunidad KDE se incluye siempre las fechas de las actualizaciones.

De esta forma, el martes 20 de febrero se lanzó la segunda actualización de Plasma 5.12, la cual solo trae (que no es poco) soluciones a los bugs encontrados en estas dos semanas de vida del escritorio y mejoras en las traducciones.

Es por tanto, una actualización 100% recomendable que todo el mundo con Plasma 5.12 se debería hacer.

Más información: KDE.org

Las novedades de Plasma 5.12 LTS

Muchas y variadas son las novedades que nos presenta Plasma 5.12, lo cual hace que sea una jugosa tentación aquellos que todavía no confían en el proyecto de la Comunidad KDE y una ilusionante vuelta de tuerca para aquellos que llevamos tiempo disfrutando de sus bondades.Lanzada la segunda actualización de Plasma 5.12 LTS

Una de las más importante, como no podía ser de otra forma en una LTS, es la mejora general del entorno, lo cual se materializa en mejoras de velocidad y en la optimización en el uso de la memoria. En otras palabras, cuando ejecutamos Plasma, ahora se usa menos CPU y menos memoria que en versiones previas. Por ejemplo, el tiempo que tarda en iniciarse un escritorio Plasma ha reducido drásticamente.

En cuanto a pequeñas mejoras tenemos:

  • Nueva funcionalidad “Color de noche” para reducir la exposición a la luz azul en las horas nocturnas.
  • Mejora de la usabilidad del menú global: al añadir una panel de menú global o un botón de decoración de ventana activa sin necesidad de ningún paso extra de configuración.Lanzada la segunda actualización de Plasma 5.12 LTS
  • Mejoras de accesibilidad en el KRunner: ahora se puede utilizar completamente con los lectores en pantalla, como Orca
  • La miniaplicación de iconos ahora usa el icono de web del sitio web
  • Vuelve a poderse seleccionar el texto de notificación, incluyendo una funcionalidad de copia de enlace
  • La disposición del menú de aplicaciones del Kickoff se ha simplificado.
  • La miniaplicación meteorológica ahora puede mostrar opcionalmente la temperatura junto al icono del estado del tiempo en el panel.
  • La actividad del sistema y el Controlador del sistema ahora muestran las gráficas para proceso del uso de la CPU.
  • El texto del widget Reloj ahora tiene un tamaño más adecuado.
  • Las sombras de las ventanas ahora están centradas horizontalmente y son más grandes
  • El diálogo de propiedades ahora muestra los metadatos del archivo.

Discover

Capítulo aparte merece Discover, el gestor de aplicaciones, temas, plasmoides y de cualquier cosa instalable de Plasma. Y es que son muchas las facetas que han mejorado y que lo convierten en un pieza básica del entorno Plasma.

Lanzada la segunda actualización de Plasma 5.12 LTS

Discover, pieza clave en el desarrollo del escritorio Plasma sigue mejorando.

De esta forma tenemos:

  • Mucha más estabilidad (quizás la más necesaria)
  • Mejoras en la implementación del Snap y el Flatpak (básica para la revolución que se está gestando para la instalación de aplicaciones)
  • Implementación de los URL apt: //
  • Las distribuciones pueden activar actualizaciones desconectado
  • Mejor usabilidad en factores de forma de teléfono: usa la acción principal del Kirigami, que tiene una vista específica para buscar
  • Integra las señales globales del PackageKit a las notificaciones
    • Actualización de distribución para los lanzamientos nuevos
    • Notificación de reinicio cuando el Discover instala o actualiza paquetes que requieren un reincio
  • Mejoras en la interfaz de usuario
    • Se han rediseñado las páginas de las aplicaciones para mostrar un software destacado.
    • Cabeceras más simples en secciones de no visualización
    • Vistas de navegación más compactas, con el fin de ver más aplicaciones de golpe
    • Las capturas de pantalla para aplicaciones son más grandes y tienen navegación por teclado
    • La lista de aplicaciones instaladas ordena alfabéticamente
    • IU más completa para configurar orígenes

Wayland avanza a pasos agigantados

Lo moderno se debe imponer poco a poco a lo obsoleto. Está claro que Wayland es el futuro y su integración en Plasma mejor en cada versión. De esta forma, por primera vez, se añade Wayland en el mantenimiento a largo plazo, así que se irán solucionando los errores en la series 5.12.x LTS.

Lanzada la segunda actualización de Plasma 5.12 LTS

Wayland y su ventana de configuración de pantallas. Cada día más cerca de reemplazar el veterano X.org

Para los más curiosos, estas son las nuevas funcionalidades de Wayland:

  • La resolución de la salida se puede definir desde el KScreen
  • Activación y Desactivación de las salidas desde el KScreen
  • Posibilidad de rotación de la pantalla
  • Rotación automática de pantalla a partir del sensor de orientación
  • Calibración automática de la pantalla táctil
  • Ya no se requiere más la implementación del XWayland; las aplicaciones que solo permitan las X todavía harán uso
  • Las ventanas del Wayland se pueden establecer a pantalla completa
  • Usa una política de planificación en tiempo real para mantener la fluidez de la entrada
  • Selección automática del Compositor en base a la plataforma usada
  • Comienza la implementación de las reglas de ventana
  • Color de noche para eliminar la luz azul de la pantalla en horario nocturno; esto es una sustitución solo por Wayland de la gran aplicación Redshift a las X

Wayland viene a Plasma y está a punto de ser el motor de visualización por defecto.

En resumen, un gran anuncio para una gran Comunidad que sigue apostando por el denostado escritorio y demostrando versión tras versión que Plasma es lo mejor que le puede pasar a tu ordenador.

¡KDE Rocks! ¡Larga vida a Plasma!

February 21, 2018

Just in case someone is interested: two days ago a very good article about cmake popped up, called It’s Time to do CMake Right. There also is a discussion about it on reddit/r/cpp. happy reading ��

We’ve just rolled out a significant and welcome policy change to KDE’s Bugzilla bug tracker: Everyone with an account may now edit any bug without prior permission. This means that every KDE Bugzilla user can now be a bug triager anytime they want!

So get out there and triage some bugs! Our documentation can be found here. This is one of the easiest and most impactful ways to contribute to KDE, and it doesn’t require a significant time commitment. Most bugs can be triaged in a minute or two, and boring downtime is a perfect opportunity for some bug triaging! It’s also a great way to ease into development; bug triagers will become familiar with KDE’s codebase and encounter small easy-to-fix issues that are the perfect entry points for submitting patches.

If my efforts seem useful and you’d like to see more of them, consider supporting me on Patreon, LiberaPay, or PayPal.

KDAB is sponsoring ACCU, the foremost annual conference in the UK for people interested primarily, but not just, in C++ and C. See the program here.

We're offering registrants to ACCU 10% off any KDAB training in 2018. Sign up!

and Meet us there.


Find out more about KDAB's C++ services, C++ modernization and C++ Training.

continue reading

The post KDAB at ACCU appeared first on KDAB.

KDAB is sponsoring this annual Embedded C++ conference and KDAB's Marc Mutz is speaking:
12-03 Midday, Views, views everywhere:

"There's a revolution coming.......`string_view` from C++17, `span` from the Guideline Support Library and `array_view` (targeted at C++2a) are just the beginning..."

Attend and find out more.

Check out KDAB Training for Modern C++ and much more.

 

KDAB is proud to be sponsoring emBO++, the only event in Europe dedicated to Embedded C++ users. continue reading

The post emBO++, Bochum, Germany appeared first on KDAB.

https://youtu.be/swP3GWd1Zzc?rel=0&showinfo=0

The City Lights demo is an example of Qt 3D being put to novel use to implement a deferred rendering pipeline.

With OpenGL, the number of lights you can show on a screen, also affecting objects in a scene, is limited by the need to use a forward renderer. Using Qt 3D, the geometry considerations can be separated out from the lighting ones, which massively reduces the complexity. This enables the scene in this demo to run on fairly mediocre hardware at 60 frames a second, even though it contains approximately 1500 real time lights.

KDAB Director, Dr Sean Harmer, maintainer of the Qt 3D project, explains.

 

  continue reading

The post KDAB’s City Lights Display with Qt 3D appeared first on KDAB.

At the heart of every 3D application is geometry. Qt 3D-based 3D applications are no different and require the user to either generate geometry or provide asset files for Qt 3D to load. This blog post demonstrates how Blender and its Python API could be used to write an exporter that generates geometry for Qt 3D.

For those of you not yet too familiar with Qt 3D, let me remind you that Qt 3D is based on an Entity Component System.
A given Entity gets its behavior defined by the various components it aggregates.

Assuming you want to render some 3D content, a renderable entity would be composed like so:

[sourcecode lang="cpp"]
Entity {
components: [
GeometryRenderer {
geometry: ...
},
Material {}
]
}
[/sourcecode]

 

Loading Geometries with Qt 3D

There are currently 3 ways to incorporate geometry in a Qt 3D application:

Using the default meshes provided by Qt 3D Extras

QConeMesh, QCuboidMesh, QCylinderMesh, QPlaneMesh, QSphereMesh, QTorusMesh

These are all QGeometryRenderer subclasses which take care of generating geometry based on configurable properties. It's up to you to provide a Material that will shade your geometry.

[sourcecode lang="javascript"]
Entity {
components: [
ConeMesh {
rings: 16
slices: 16
topRadius: 0.1
bottomRadius: 1.0
},
Material {...}
]
}
[/sourcecode]

 

Using QMesh component to load a geometry file

Several backend plugins are available for .obj, .fbx and gltf version 1. The list of plugins will likely grow in the future (work on a gltf version 2 importer is currently ongoing). QMesh is also a QGeometryRenderer subclass, you also need to provide a Material.

[code language="javascript"]
Entity {
components: [
Mesh {
source: "path/to/my/file.obj"
},
Material {...}
]
}
[/code]

 

Using QSceneLoader component to load a scene file

QSceneLoader is also plugin based. At the time of writing, one such plugin is based on the Open Asset Importer Library (Assimp) which supports the following formats.

There's also another plugin which supports gltf version 1.

[code language="javascript"]
Entity {
components: [
SceneLoader {
source: "path/to/my/scene.obj"
}
]
}
[/code]

The subtelty between QMesh and QSceneLoader is that QMesh loads only a single mesh whereas QSceneLoader will load an entire scene. Essentially QSceneLoader will generate a subtree of QEntity with QGeometryRenderer and QMaterial components. The nice thing is that QSceneLoader will also instantiate matching Materials to go with each mesh.

In most cases you'll either use QSceneLoader to load a rather complex scene or, if you know how the scene content is structured, decide yourself on which parts you need and use several QMesh components.

Issues

Now this is all fine but you'll often end up with one of these issues:

  • Geometry is generated at run-time which can be costly
  • Many 3D formats are text-based (takes up space on disk, slow parsing at run time)
  • Loading a scene subtree requires traversing said subtree to retrieve entities composed of components of interest
  • QSceneLoader may duplicate materials, effects, attributes depending on the scene file
  • Declaring several QEntity with QMesh components can be tedious
  • Import plugins for QMesh/QSceneLoader are not available on all platforms and may not cover all formats.

 

From a general perspective, the current mechanisms make it tedious for the developer to control a complex scene. They either completely hide away the structure of a loaded subtree or, on the contrary, force you to know exactly what composes your scene and let you do the heavy lifting of deciding which meshes you care about.

If you are after performance, you need to know how your scene is structured, which materials are in use and how large your geometries are. With this information you can decide if you need to:

  • rework you geometry to reduce the number of vertices to be drawn
  • group several parts together so that they can all be drawn at once
  • reduce the amount of materials required.

So what if instead of loading something blindly, we generated Qt 3D content in advance, as part of our tooling or asset conditioning work?

 

Blender

Blender is a free and opensource 3D creation suite. I wouldn't go as far as saying that it's intuitive to use for a newcomer, but it's a really powerful tool. In addition, it provides a powerful Python API which can be used to write importers, exporters or simply automate processes (importing and exporting geometries offline). The nice thing is that the API is documented, the bad thing is that the documentation is mostly a list of methods and members...

How could Blender solve any of the issues we have?

Instead of generating or loading geometry at runtime, I therefore decided I would try to experiment and write an exporter plugin for Blender.
The goal for it would be to generate the QML content for an application (though we could easily extend it to cover C++ as well) and export the geometry buffers to binary files that just need to be read at runtime without requiring any parsing.

This could solve the issues of slow startup caused by parsing text-based files and possibly duplicating effects and materials. This also solves the case of import plugins deployment (as we are now performing this offline) and only shipping binary files that can be read with the readBinaryFile functions on the QML Buffer element. Finally this also gives us the complete structure of our scene.

[sourcecode lang="javascript"]
Buffer {
type: Buffer.VertexBuffer
data: readBinaryFile("qrc:/assets/binaries/bufferdata.bin")
}
[/sourcecode]

 

Creating a Blender Exporter Addon

A blender addon can be easily created by subclassing bpy.types.Operator and optionally bpy_extras.io_utils.ExporterHelper which provides convenience helpers as well as a default UI layout.

Overview of an exporter class

  1. Define members from bpy.types.Operator and ExporterHelper
    • bl_idname
      • The addon will be accessible in the Blender API though bpy.ops.bl_idname
    • bl_label
      • The name used on the export button UI
    • filename_ext
      • The name of our format extension if we have one
  2. Set UI properties and export options
    • Blender provides default property types
    • In the Qt3DExporter cases, properties were added to control:
      • whether to export only the selected objects or the whole scene
      • whether to export only the visible objects in the scene
      • whether we want meshes to be grouped in a collection
      • whether we want materials to be grouped in a collection
      • whether we want to export a full Qt3D application or just the
  3. Implement the draw method to lay out our properties
    • Retrieve the operator's layout and add rows and columns
      • We can add labels and reference properties you have previously created
  4. Define the execute method which will be the entry point of our exporter

[sourcecode lang="python"]
class Qt3DExporter(bpy.types.Operator, ExportHelper, OrientationHelper):
"""Qt3D Exporter"""
bl_idname = "export_scene.qt3d_exporter";
bl_label = "Qt3DExporter";
filename_ext = ""

# We set up exporter UI here
use_mesh_modifiers = BoolProperty(
name="Apply Modifiers",
description="Apply modifiers (preview resolution)",
default=True,
)

use_selection_only = BoolProperty(
name="Selection Only",
description="Only export selected objects",
default=False,
)

def draw(self, context):
layout = self.layout
col = layout.box().column(align=True)
col.label("Nodes", icon="OBJECT_DATA")
col.prop(self, "use_selection_only")
col.prop(self, "use_visible_only")

def execute(self, context):
# Actual exporting work to be done here

def createBlenderMenu(self, context):
self.layout.operator(Qt3DExporter.bl_idname, text="Qt3D (.qml)")

# Register against Blender
def register():
bpy.utils.register_class(Qt3DExporter)
bpy.types.INFO_MT_file_export.append(createBlenderMenu)

def unregister():
bpy.utils.unregister_class(Qt3DExporter)
bpy.types.INFO_MT_file_export.remove(createBlenderMenu)

[/sourcecode]

Most of the work will be done in the execute method. When reaching that point you'll want to:

  1. check which options have been selected by the user
  2. retrieve the export path selected
  3. gather data from the blender scene
  4. perform any post processing or conversion
  5. write the exporter data in whichever format you're interested

 

Parsing Blender Data

Collections

We can do a lot of things with the Blender API, the hard part is really finding out what you need

In our particular case we only care (for a first version) about:

  • Objects (bpy.data.objects)
    • Collections of objects that reference a datablock
      • name
      • data (reference to a datablock)
      • type (type of datablock being referenced)
      • matrix_local
      • matrix_world
      • select (whether we are selected or not)
      • parent (reference to a parent object)
  • Meshes (bpy.data.meshes)
    • Collection of datablocks containing information about a mesh
      • name
      • material slots (references to materials used by the mesh)
      • uv_layers
      • vertex_colors
      • vertices (list of position)
      • edges (an edge references 2 vertices)
      • loops (collection of loops, a loop references a vertex and an edge)
      • polygons (a list of loops forming a polygon)
  • Materials (bpy.data.materials)
    • Collection of datablocks containing information about a materials
      • name
      • ambient
      • diffuse_color
      • specular_color
  • Modifiers (object.modifiers)
    • Collection of modifiers an object can reference
    • A modifier is a visual transformation applied to a mesh
      • Mirror
      • Array
      • Solidify
      • Subsurface...
    • An object referencing a Mesh datablock that has modifiers can be transformed into a Mesh with the modifiers applied by calling object.to_mesh()
  • Lamps (bpy.data.lamps)
    • Collection of datablocks containing information about lamps
      • type (POINT, SPOT, SUN)
      • color
      • intensity
      • SPOT
        • spot_size (cut off angle)
        • constant_coefficient (constant attenuation)
        • linear attenuation
        • quadation attenuation
      • POINT
        • constant_coefficient (constant attenuation)
        • linear attenuation
        • quadation attenuation
  • Scene (bpy.context.scene)
    • References objects and render settings for the scene

Now that we know what we care about, the next part is traversing these collections and converting them to Qt 3D content.

Meshes

First we need to go over all the meshes in the scene and gather information required to convert these to QGeometryRenderers, QGeometry, QAttributes and QBuffers.

The idea is to go over each Blender mesh and process then as follows:

  1. Triangulate
  2. Apply the modifiers it references
  3. Retrieve vertex data (position, normals, texture coordinates, colors)
    1. Write data into a binary file
    2. Record description of attributes
  4. Compute the indices
    1. For each material being referenced by the blender mesh
      1. Create a submesh (basically a QGeometryRenderer in Qt3D)
      2. For each polygon referenced by the submesh
        1. compute list of indices based on  the loops of the polygon
      3. generate and record the IndexAttribute for the submesh
    2. Generate the IndexBuffer based on the sub meshes
    3. Write data into a binary file.

We keep the data we have produced here for later.

Materials

Next, we need to gather information about each instance of Material of the scene to later on create and instantiate QMaterial subclasses.

For now the exporter is only recording the name, ambient, diffuse and specular color. Later on I'd like to extend that to either export a shader directly or switch to PBR materials.

Objects

Once we've created an intermediary representation for our mesh data and material data, we can proceed with the actual exporting of the scene.

The idea is to retrieve all the objects references by the BlenderScene. Then, from these objects, we can create a hierarchy.

Finally it's just a matter of traversing the tree.

For each object:

What type of object we are dealing with?

 

All of the above work has been implemented in a dedicated Exporter class. It is instantiated and called in the execute function of our addon which looks like below:

[sourcecode lang="python"]
def execute(self, context):
exportSettings = self.as_keywords()
exportSettings["global_matrix"] = axis_conversion(to_forward=self.axis_forward, to_up=self.axis_up).to_4x4()

self.binaryDirectoryName = "assets/binaries/"
self.shadersDirectoryName = "assets/shaders/"
self.qmlDirectoryName = "qml"

self.userpath = self.properties.filepath
if not os.path.isdir(self.userpath):
self.userpath = os.path.dirname(self.userpath)
msg = "Selecting directory: " + self.userpath
self.report({"INFO"}, msg)

# switch to work dir and create directories
os.chdir(self.userpath)
if not os.path.exists(self.binaryDirectoryName):
os.makedirs(self.binaryDirectoryName)
if not os.path.exists(self.shadersDirectoryName):
os.makedirs(self.shadersDirectoryName)
if not os.path.exists(self.qmlDirectoryName):
os.makedirs(self.qmlDirectoryName)

# Save scene into scene
scene = bpy.context.scene

exporter = Exporter(scene, exportSettings)
exporter.export()

# Create QML Files
exporter.createQMLNodeTree()

# Create .qrc file
exporter.generateQRCFiles()

# Create main.cpp
exporter.generateMainCppFile()

# Create .pro
exporter.generateProjectFile(self.userpath)

[/sourcecode]

Does it work?

Well actually it does.

As a test sample I've used a mesh from blendswap

Where to get it?

Here. Usage instructions are provided on the repository. It should work with pretty much any blender scene. Just make sure you have assigned a material to the elements you want to export.

Next steps

  • Export Animations
  • Export Armatures
  • Better Material support
    • export textures
    • generate shader when possible
    • investigate if the QShaderProgramBuilder could be used to export node trees from blender
  • Use instancing for Array modifiers
  • C++ support

continue reading

The post Exporting 3D content for Qt 3D with Blender appeared first on KDAB.

Get your free ticket to Embedded World Nuremberg, courtesy of KDAB. Register here with code B377411.
Meet us on the Qt stand, Hall 4-258.

This year we've a training info point where you can find out about our on-site or scheduled, Introductory or Advanced courses in Qt, Modern C++, Qt 3D, OpenGL, Profiling and Debugging and more.

Or you can Ask the Experts if you have technical questions about any of these technologies, and get our latest publications, including a paper on C++ Modernization.

At Embedded World this year we will show the Qt Quick Software Renderer in action on the very competitively priced NXP i.MX6 ULL platform.

It's challenging to provide a fluid 60fps touch UI and H.264 video decoding on such hardware, with no GPU or hardware video decoding acceleration. Yet it's very much possible, having the full feature set of Qt at your disposal, even with as little as 64MB of RAM and/or Flash memory. We'll be giving you the full story in a blog post soon:

Qt Quick Software Renderer

  • NXP i.MX6 ULL (no GPU/VPU/IPU)
  • 64MB RAM/Flash
  • Fluid 60fps touch UI
  • H.264 video decoding using PxP acceleration
  • Full Qt feature set available

Other demos on display:

CCI 1200 Agricultural Machinery Terminal

  • intelligent control where the driver needs it

Qi - Cellular Tissue Imaging in Qt 3D

  • using pictures to help profile and diagnose disease

Qt Automotive Suite

  • a comprehensive package for automotive IVI systems

KDAB GammaRay

  • letting you see your Qt code live at runtime

Clazy Static Code Analyzer

  • the Qt-oriented code checker and clang plug-in

KDAB Hotspot Profiler for C++

  • a GUI making Linux Perf accessible

See more on our demos here.

Get your free ticket here with code B377411 and meet us on the Qt stand, Hall 4-258. continue reading

The post KDAB at Embedded World Nuremberg appeared first on KDAB.

It’s a bird! It’s a plane! No, it’s a shiny stable-yet-bleeding-edge KDE Plasma distro!

Since Calamares has to run all over the place, and is used in derivatives of all of the “Big Five” Linux distributions, I regularly switch distro’s as a development platform. Also because I inevitably blow up the VM while running Calamares, or because an update renders the system useless. At FOSDEM I had the pleasure of chatting with the folks from the SUSE stand about OpenQA and OBS.

(Note, when I originally wrote this I was going to just fiddle around a bit and then return to my Manjaro dev VM; instead it’s turned into a week and Krypton is likely to stay lodged on my VMs and spare machines for the foreseeable future.)

Last week I spent the day with openSUSE Krypton, which is a almost-bleeding-edge KDE Plasma desktop (today’s version has Plasma 5.11.5) on top of openSUSE’s rolling-release, Tumbleweed. Most of my Linux systems (e.g. the kids gaming boxes) run openSUSE of some sort, as did all my work systems at my previous job, but I have not yet used it as a development platform for Calamares. Here’s some usage notes.

Day 1 First day with a distro is usually roughly the same: install it, copy some stuff over, install tools, checkout and build Calamares. With Krypton, it’s no different.

  1. Installation looks a little wonky here and there. The installer could use a careful go-over by a designer to smooth out lines, reduce drawing glitches, etc. It may have been an artifact of installing in an 800×600 VirtualBox window, but it didn’t seem very polished, even if the installer procedure was.
  2. Install basic development tools: zypper in git cmake make gcc gcc-c++. Huh, kdevelop is already installed, that’s a good sign (except it seems like it’s broken, and can’t find the plugin KDevWelcomePage, but see below). Shame Linux systems are otherwise so poorly prepared for being development systems.
  3. Run deploycala.py on the installed system (there’s big fat warnings saying never to do that, but I’m the developer and this is a fresh VM, so nyah nyah). Fall over backwards when it turns out that apt-get exists on this system (and invokes zypper via aptitude) so that the deploy script thinks it’s on Debian and is going to do all of the wrong things. Debug the script. Figure out dependency names (e.g. it’s gcc-c++ on openSUSE, g++ on Debian and just gcc on Arch).
  4. Find there’s no PythonQt packaged; while this is a strictly optional dependency, I would like to find a distro that actually ships something usable for PythonQt (seems Arch does, and KaOS).
  5. Build Calamares.
  6. Profit!

So where does that last, profit, step come in? Well, openSUSE has Secure Boot support, while distro’s using Calamares generally don’t — for the simple reason that Calamares doesn’t support it yet. So I’ll be peeking at what, and how, openSUSE does it and massaging that into Calamares.

Day 2 Ran an update, hoping that KDevelop would be fixed by now. That’s a nice thing about rolling- and bleeding-edge distro’s, stuff gets fixed and/or broken on a daily basis. With Krypton, the underlying rolling base is touted as stable while the KDE bits are bleeding-edge. It wasn’t, but a quick question in the right IRC channel (#opensuse-kde for Krypton) got me sorted and a fix scheduled for the next build. Well done, Kryptonites.

Spent the day hacking on Calamares, mostly fiddling with other bits-and-pieces rather than doing what I intended to do, which was examine secure boot.

Day 3 Still stable. Today’s bleeding-edge update is 112MB, as KDE Plasma is updated to 5.12. I decide to do some ARM development today as well. This is obviously not ideal, since I’m then cross-compiling to aarch64 in a Linux VM running on FreeBSD, but hey. After installing cross-aarch64-gcc7 and adjusting some build instructions that assume Debian naming (e.g. CROSS_COMPILE=aarch64-suse-linux- instead of CROSS_COMPILE=aarch64-linux-gnu-), spent a thoroughly frustrating morning building U-Boot and watching it panic. That’s the downside to using very new hardware which isn’t supported by anything yet except the OEM’s binary-blob package.

Day 4 (after the weekend) A total of 733 package updates today, 810MB to download. They’re not kidding about bleeding-edge and up-to-date. In the meantime I’ve learned that my deploycala script could be much simplified by using the package-manager. Since Calamares is packaged for openSUSE, I could have done zypper mr --enable repo-source ; zypper source-install -d calamares to get the build dependencies for it.

Anyway, after a week I’ve I have not yet broken the system, it’s fast and up-to-date. I’ll be keeping this one around. (And if I was looking for something between Krypton and Leap, I’d probably go for GeckoLinux, which uses Calamares — a bit of dogfooding, as it were).

The next OpenStack Summit takes place again in Vancouver (BC, Canada), May 21-25, 2018. The "Vote for Presentations" period started. All proposals are up for community votes. The deadline for your vote is will end February 25 at 11:59pm PST (February 26th at 8:59am CET)

I've submitted two talks this time:
As always: every vote is highly welcome! And don't forget to search for other interesting proposals around Ceph, NFV and OpenStack as e.g. the as always expected to be excellent presentations from Florian Haas [1][2][3].

Users of Kubuntu 17.10 Artful Aardvark can now upgrade via our backports PPA to the 2nd bugfix release (5.12.2) of the Plasma 5.12 LTS release series from KDE.

Likewise, testers of our development release 18.04 Bionic Beaver will receive the update imminently.

The full changelog of fixes for 5.12.2 can be found here.

Users of 17.10:

To update add the following repository to your software sources list:

ppa:kubuntu-ppa/backports

or if it is already added, the updates should become available via your preferred update method.

The PPA can be added manually in the Konsole terminal with the command:

sudo add-apt-repository ppa:kubuntu-ppa/backports

and packages then updated with

sudo apt update
sudo apt full-upgrade

18.04 testers:

Will receive this via normal updates in the ubuntu main archive

 

PPA upgrade notes:

~ The Kubuntu backports PPA includes various other backported applications, and KDE Frameworks 5.43, so please be aware that enabling the backports PPA for the 1st time and doing a full upgrade will result in a substantial amount of upgraded packages in addition to Plasma 5.12.

~ The PPA will also continue to receive bugfix updates to Plasma 5.12 when they become available, and further updated KDE applications.

~ While we believe that these packages represent a beneficial and stable update, please bear in mind that they have not been tested as comprehensively as those in the main Ubuntu archive, and are supported only on a limited and informal basis. Should any issues occur, please provide feedback on our mailing list [1], IRC [2], and/or file a bug against our PPA packages [3].

1. Kubuntu-devel mailing list: https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel
2. Kubuntu IRC channels: #kubuntu & #kubuntu-devel on irc.freenode.net
3. Kubuntu ppa bugs: https://bugs.launchpad.net/kubuntu-ppa

February 20, 2018

Apper the package/apps manager based on PackageKit has got it’s 1.0.0 version on it’s 10th birthday!

Screenshot_20180220_173026

Following the PackageKit-Qt 1.0.1 I’m now doing an Apper release to match it’s API, Apper source code got ported to Qt5/KF5 but not completed and using some kfsupport classes, now it’s code got modernized to C++11, new Qt connect syntax and no code depends on kfsupport, it is also properly using AppStream now, some performance improvements on the package model.

It’s now a stand alone application (no longer integrated in system settings), this was due 99% of it’s usage being by calling the apper executable and this helped fix a crash due it being a KCM module.

Feature wise I plan to add support to fwupd allowing users to update firmwares with a native tool, but time is short and Cutelyst 2 with HTTP 2 support is my top priority now, but help is welcome!

Download https://download.kde.org/stable/apper/1.0.0/apper-1.0.0.tar.xz.mirrorlist

Accessibility technology encompasses assistive tools such as screen readers, magnifiers and braille displays, as well as APIs and frameworks that allow applications to expose elements of their UI to such tools.

While some UI widgets provided by the operating system may already be prepared to provide content and metadata to assistive tools, Qt renders UI elements itself. This approach requires a way to expose information about these elements to accessibility frameworks, which would otherwise perceive the applications as sets of empty windows.

To expose information about UI elements on Windows, Qt relied on the legacy Microsoft Active Accessibility framework (MSAA), until Qt 5.10. However, proper framework support was lacking in some areas, and nowadays MSAA has been superseded by a new framework and its use is no longer recommended for new applications.

With release 5.11 we will replace the MSAA accessibility backend with a new implementation based on the more modern Microsoft UI Automation, which superseded MSAA as the de facto standard for accessibility on the Windows platform. UI Automation has been available in all Windows releases since RTM versions of Windows 7 and Server 2008, as well as provided with system updates on Windows XP, Vista and Server 2003.

Since the accessibility changes in Qt 5.11 are internal, existing accessible applications are not expected to require any changes to utilize the improved functionality provided by UI Automation. Compatibility with MSAA-only assistive tools is maintained by bridge components built in the UI Automation framework itself.

One area where immediate improvement resulting from the new approach can be perceived is in the control of Qt-based applications using the built-in virtual keyboard in touchscreen-based Windows computers, like the Microsoft Surface line. In Qt 5.10, compatibility with some UI widgets was limited and events like the automatic showing and hiding of the virtual keyboard were not supported. With Qt 5.11, the same level of functionality available to applications based on native Windows widgets should be expected.

Also, the new UI Automation support in Qt may become useful for application testing, since it can provide metadata and programmatic control of UI elements, which can be leveraged by automated test suites and other tools.

We invite users to test the new accessibility functionality, and to give us feedback by writing to the mailing lists and reporting bugs.

 

The post Qt 5.11 Brings New Accessibility Backend on Windows appeared first on Qt Blog.

The last months for Kdenlive have been very quiet from the outside – we were not very active on the bugtracker, did not make a lot of announcements, and the 17.12.x release cycle only contained very few minor bugfixes.

The main reason for this was the huge work that went behind the scenes for a major code refactoring that was required to allow further developments. So after more than a year working on it, we hope to get ready for the 18.04 release!

Tonight we will announce the first public testing beta release for the upcoming 18.04 version. There are some rough edges, it’s not ready for production yet as compatibility with older project files is not finalized and a lot of work is still required to fix the many remaining quirks, but we are on good tracks to bring you a modern, stable and enjoyable open source editor.

So if you are interested and want to have a look at our roadmap or try the latest development code in an AppImage, join us tonight at 9pm (CET time – UTC+1) for our 26th Kdenlive Café.

Qt 5.11 Alpha is released today. As usual the official Alpha is a source code delivery only, but later we will offer development snapshots of Qt 5.11 regularly via the online installer.

Please check Qt 5.11 New Features wiki to see what new is coming with Qt 5.11 release. Please note that the feature list is still in progress and not to be considered final before the first Beta release.

Next milestone in our way to final Qt 5.11 release (which is planned to happen in May) will be first Beta release. We are targeting to get it out as soon as possible soon after the Alpha. We will release several Beta releases in similar manner as before, available via the online installer.

Please download the Qt 5.11 Alpha source packages from your Qt Account or from download.qt.io.

Most importantly, remember to give us feedback by writing to the mailing lists and reporting bugs.

The post Qt 5.11 Alpha Released appeared first on Qt Blog.

February 19, 2018

WireGuard is participating in Google Summer of Code 2018. If you're a student — bachelors, masters, PhD, or otherwise — who would like to be funded this summer for writing interesting kernel code, studying cryptography, building networks, making mobile apps, contributing to the larger open source ecosystem, doing web development, writing documentation, or working on a wide variety of interesting problems, then this may be appealing. You'll be mentored by world-class experts, and the summer will certainly boost your skills. Details are on this page — simply contact the WireGuard team to get a proposal into the pipeline.

Could you tell us something about yourself?

I’m 35 years old from Shropshire in Britain. I like comfy socks and tea.

I did Archaeology in University and I love history, mythology, folklore and nature. I’ve always been drawing from an early age. I graduated in 2003 with an archaeology degree. I taught myself digital art and web coding skills for fun and practical reasons. I used to do self-employed web design and admin type jobs, but in 2013 I became disillusioned with my life and had depression. I took a Foundation art course in 2013 deciding to pursue my artistic passions instead.

Since 2014 I’ve been practising art like crazy and building up a portfolio of illustration work.

Do you paint professionally, as a hobby artist, or both?

Both. I use digital painting to make studies for my illustration work and as a way to experiment. I would love to do paid freelance illustration work should the right opportunity come along. I am happy making my own projects as well, it helps me learn and get better.

What genre(s) do you work in?

I’ve found I like to draw and paint themes from nature and animals. I read about myths and folklore. I’ve been working on personal projects about mermaids and river goddesses. It’s still in the early stages. I’m developing my style to incorporate more fantasy subjects in the future and mix in my pattern work.

Whose work inspires you most — who are your role models as an artist?

I look at archaeology, art history and graphic design for inspiration. I don’t have a favourite artist at the moment. There are lots of styles I’m inspired by it’s difficult to choose one. I’ve been looking at folk art more and trying to loosen up with my painting.

How and when did you get to try digital painting for the first time?

I tried digital painting for the first time in 2004 when I wanted to texture my own skins for the Maxis Sims game I used to play. I learnt web coding as well so i could share my efforts with people. My sister had a copy of Photoshop 6 which I used, and I had a tiny non-sensitive drawing tablet my mum had given me. My first job as a data entry clerk in a bank (yawn) enabled me to save up and get my first proper Wacom tablet around 2005. I wished I could do something with my Archaeology instead but there were no paid local jobs. From looking on the Internet I saw people made amazing works of art with digital software. I got obsessed with concept art and fantasy art and tried to get better. I used to haunt the CGSociety and GFXArtist and I bought ImagineFX magazine to try and learn all I could on my own. There were not the resources back then that there are now, but it was fun and a good distraction from the rest of my life.

What makes you choose digital over traditional painting?

Digital painting is a versatile medium. When I was starting out it saved me money on buying expensive art materials, and I didn’t have any room for doing traditional painting in my small bedroom. I bought a student version of Corel Painter to start with, which was one of my only options back in 2005. This enabled me to try lots of different types of art styles without the mess. Now I have my own house, I have more room and I’ve collected more art materials I tend to mix using traditional and digital mediums depending on the effect I want. If I want to have the texture of coloured pencils for example, I’ve found it is easier to do it with coloured pencils first. Over the years I’ve tried a lot of different digital painting programs and learnt how to do vector art as well.

How did you find out about Krita?

I found out about Krita from surfing on the Internet around 2011. I’d been using MyPaint and heard about Krita from my geeky research. I’m a bit of a geek when it comes to digital art so I like trying different softwares.

What was your first impression?

The first time I tried it I was still a heavy Corel Painter user, but I bookmarked it for future reference seeing it had potential. I tried it again around 2013 and fell in love with it over using Corel Painter. The interface was great, it was much nicer and easier to use than Corel Painter, and it had lovely practical brushes out of the box.

What do you love about Krita?

I love the layer system and the way the brushes work. They are as sensitive as any in more expensive programs, and are as customisable. The mirror tool is fun and I like the seamless pattern feature. I’ve been so busy I haven’t gotten around to trying animation yet, which is a cool feature.

What do you think needs improvement in Krita? Is there anything that really annoys you?

I can’t think of anything which annoys me about Krita, unless it’s a fault of my own hardware setup. Sometimes I’ll have to minimise and maximise Krita to get pressure sensitivity back after using different programs while painting. It’s probably because I have an Ugee 2150 and I use Windows 10 which keeps doing annoying creator updates. Because I use other software as well (Photoshop CS3, Affinity Designer, Affinity Photo) any weaknesses in Krita can be overcome using those and vice versa.

What sets Krita apart from the other tools that you use?

I like the default brushes which come with Krita. In all the other programs I’ve used I have had to customise and make new brushes or buy brushes to get what I want. There is also a strong community feel about Krita and growing resources. I wrote a long article about why Krita is great for beginners to digital painting on Medium.

If you had to pick one favourite of all your work done in Krita so far, what would it be, and why?

The gold fish studies, because they were fun to do and turned out pretty well. I want to do more work in the same style.

What techniques and brushes did you use in it?

I used the default brushes. Most of them are by David Revoy. The digital sketch brush is one of my favourites, and the alchemy brush is useful for blocking in areas. First I blocked in the silhouette of the goldfish with an opaque round brush. Then I tool advantage of layer clipping masks to paint within the shape of the goldfish blocking in areas of colour with alchemy brush and the magnetic lasso tool. I also used gradient fills in the early stages to get nice base colour blending for painting the details into. I used different layer styles for shadows (multiply) and highlights (screen / overlay). Start with blocking in, big brushes and go smaller for the details.

Where can people see more of your work?

I have a website at https://thimblefolio.com.

I’m also on the following websites:

Behance: https://www.behance.net/chrisgarnerart
Dribbble: https://dribbble.com/chrisgarnerart
Instagram: https://www.instagram.com/thimblefoliopress/
Tumblr: https://thimblefolio.tumblr.com/
YouTube: https://www.youtube.com/user/cribbyGart/featured
Medium: https://medium.com/@thimblefolio
Society 6: https://society6.com/thimblefoliopress
Curioos: https://www.curioos.com/thimblefolio
Spoonflower: https://www.spoonflower.com/profiles/thimblefolio

Anything else you’d like to share?

Thank you very much to all the people who work on developing and improving Krita, and to everyone who creates tutorials and resources. Its great digital art is accessible for as many people as possible, learning digital painting is a positive and fun thing to do.

KDE e.V. is announcing today it has received a donation of 200,000 USD from the Pineapple Fund.

With this donation, the Pineapple Fund recognizes that KDE as a community creates software which benefits the general public, advances the use of Free Software on all kinds of platforms, and protects users' privacy by putting first-class and easy to use tools in the hands of the people at zero cost. KDE joins a long list of prestigious charities, organizations and communities that the Pineapple Fund has so generously donated to.

"KDE is immensely grateful for this donation. We would like to express our deeply felt appreciation towards the Pineapple Fund for their generosity" said Lydia Pintscher, President of KDE e.V.. "We will use the funds to further our cause to make Free Software accessible to everyone and on all platforms. The money will help us realize our vision of creating a world in which everyone has control over their digital life and enjoys freedom and privacy".

"KDE is a vibrant community that has been developing a number of awesome products like Plasma that empower the user's freedom." said a spokesperson for the Pineapple Fund. "I especially admire the UX and design of KDE's products, as they are approachable to new audiences who are not Linux geeks. I hope this donation can power further KDE development!".

This donation will allow KDE to organize events that bring the community together; sponsor development sprints to improve the usability and performance of existing tools; pay expenses for contributors traveling from distant locations; attract more contributors and build a more inclusive community; create new and safer programs; and carry out research for future generations of KDE's environments and applications.

February 18, 2018

It’s been another big week in Usability & Productivity! We’ve got usability improvements, performance improvements, and bugfixes galore! Have a look:

  • Plasma is now a full second faster to start (KDE Phabricator revision D10536, Improved in Plasma 5.13)
  • Fixed a severe freeze in Discover 5.12 (KDE bug 390123, available in KDE Plasma 5.12.1)
  • Apps whose desktop files contain spaces can once again be pinned and stay where they’re supposed to be on the panel (KDE bug 385942, fixed in KDE Plasma 5.13)
  • Creating a new file using Dolphin is now instantaneous (KDE bug 388887, fixed in KDE Applications 18.04)
  • The Open With panel received a UI redesign that yields significant usability and productivity boosts, in addition to fixing some bugs (KDE bug 359233, implemented in KDE Frameworks 5.44):
  • Fixed Drag-and-drop from Spectacle to Chromium (KDE bug 369404, available in KDE Applications 18.04)
  • Dolphin’s Edit menu now has menu icons for Select All and Invert Selection, making it a 100% icon-complete menu (KDE Phabricator revision D10503, implemented in KDE Applications 17.12.3):
  • All KDE Apps using the Deselect and Replace KStandardActions now get menu icons for them (KDE Phabricator revision D10508, implemented in KDE Frameworks 5.44):
  • Apps on the touchscreen-friendly Application Dashboard can now actually be launched with touchscreen taps (KDE bug 366527, fixed in KDE Plasma 5.12.2)
  • Gwenview can now be configured to not show the image action buttons that appear over thumbnails when you hover over them with the mouse (KDE bug 164847, implemented in KDE Applications 18.04)

  • The Web Browser Widget has been overhauled and now works much better, regaining the features it lost in the KDE4 -> Plasma 5 transition (KDE bugs 361939 and 371023)
  • Icons in Dolphin’s Information Panel now look good in HiDPI (KDE Phabricator revision D10532, fixed in KDE Applications 18.04)
  • The Toggle Touchpad shortcut actually toggles the touchpad now (KDE bug 370588, fixed in KDE Plasma 5.12.1)

I’ve noticed a significant influx of new contributors recently, so what we’re doing seems to be resonating with the community. It’s a great time to get involved. Our documentation and new contributor pipeline are getting better all the time. You don’t need to be a programmer to start submitting patches! Most of my first patches were simple one-liners and string changes. Once you’ve got your development environment set up, submitting trivial patches like these is as easy as pie, and will familiarize you with the codebase so you feel comfortable tackling slightly larger challenges.

If my efforts seem useful and you’d like to see more of them, consider supporting me on Patreon, LiberaPay, or PayPal.

The Machine

The Raspberry Pi3 is a small single board computer that costs around $35 (USD). It comes with a network port, wifi , bt , 4 usb ports , gpio pins , camera port , a display out, hdmi, a TRRS for analog A/V out. 1GB of ran and 4 ~1GHz armv8 cores Inside small SOC. Its storage is a microSd card they are a low cost and low power device. The Touchscreen kit is an 800×480 display that hooks to the Gpio for touch and dsi port for video. To hold our hardware is the standard touch screen enclosure that often comes with the screen if you buy it in a kit.

Raspian?

Most of the time it is sufficient to run Raspian the official distro that is made for the raspberry pi. raspian is a fork of debian as much like debian it has some old packages. In order to build AtCore (with the gui) you need at least qt5.8 raspian comes with 5.7. This is not a show stopper but compiling qt does take quite some time and can easily take a week if we were to build it on the rpi itself. Setting up a cross complier will save you a lot of time but even on my fastest machine it will still take some hours to build qt for the pi. I decided it would instead be faster to install a completely unsupported OS on the device. I was going to install install arch linux on the rpi. Arch is a rolling distro that ships with qt 5.10.

Doubly Unsupported

Arch linux on the raspberry pi is what you might call “doubly unsupported” That is that the raspberry pi foundation does not support running arch on the pi. You only get support from the arch community. Arch Linux is not officially supported on platforms other then x86_64 the rpi running on arm.  Worry not for the Arch community has some forks such as archlinux-arm this is what we will be installing. Like most things arch you get some instructions. After getting the os installed its still arch so you only get a cli interface on your first boot and are left to set up the rest of the system.

Post Install

For my system I installed plasma-meta , xf86-video-fbturbo-git and sddm. With those I was able to have a working plasma shell. I also installed dolphin, kate and konsole as well as the few atcore dependencies. I then added my user to the uucp group so I was able to r/w to serial devices and restarted. When all the dependencies are installed you can proceed to build atcore. Since this is arch we can simplify the building part just by using atcore-git from the aur. Im Happy to say it took only minutes and 48 seconds to build atcore-git on the rpi. I then used pacman to install the atcore-git package and it was time to see how our gui was looking on such a small screen.

The Result

At first the contents of the atcore-gui spill off the screen due to the way our docks are tabbed, however since they are docks you can just adjust them to make a quick usable interface. After adjusting the gui AtCore worked exactly the same as it does on other systems. Below you can see a picture and video.

IMG_20180217_110445

Can do better

There is lots of room for improvement. Atcore-gui does not save any settings. You’ll need to move the docks around each time you launch the program. Atcore-gui can not automatically connect to a device on launch. Again for reasons of not saving settings This gui is of course not really made for use on a touch screen and it does seam to work good enough to use. Some non atcore changes on the system itself would be nice. A few services running on the pi would improve this over all. Mjpeg streamer or another method of streaming video from the attached camera on my printers extruder. Uploads are done via stfp that’s not always easy for everyone. The pi does not launch atcore-gui on start up . Small stuff like this could easily be adjusted. I was really just playing around to see how atcore ran on the rpi. I was very happy when this worked well.

February 17, 2018

Howdy everyone! So many folks have asked me to set up a Patreon page that I’ve gone and done it: https://www.patreon.com/ngraham

By supporting me on Patreon, you’re helping me provide the focus, direction, support, and technical contributions that work to turn the KDE software suite into a lean, mean, bug-free productivity machine, and get it distributed well so that our users have great options for getting our software.

Of course, I’m only one man; what really matters is not me, but rather you! KDE’s greatest strength is its passionate community of developers and users, who work tirelessly to develop, improve, polish, promote, and use KDE software. I truly couldn’t do this without all of you, and in fact, I wouldn’t even want to! All of you are the reason why I work so hard on KDE software. Thank you, so very much.

Become a patron

We’ve been focusing like crazy on the Krita 4 release. We managed to close some 150 bugs in the past month, and Krita 4 is getting stable enough for many people to use day in, day out. There’s still more to be done, of course! So we’ll continue fixing issues and applying polish for at least another four weeks.

One of the things we’re doing as well is redesigning the set of default brush presets and brush tips that come with Krita. Brush tips are the little images one can paint with, and brush presets are the brushes you can select in the brush palette or brush popup. The combination of a tip, some settings and a smart bit of coding!

Our old set was fine, but it was based on David Revoy‘s earliest Krita brush bundles, and for Krita 4 we are revamping the entire set. We’ve added many new options to the brushes since then! So, many artists are working together to create a good-looking, useful and interesting brushes for Krita 4.

It’s still work in progress! But we want your feedback. So… Download the new Krita 4 development builds, and start doodling, sketching, painting, rendering… And then tell us what you think:

Do the brush preset survey!

Apart from the new brushes, and the bug fixes, there’s also news for Linux users: we updated our AppImage build scripts, and the new appimage includes Python scripting and the Touch UI docker. Note: by default all scripts are disabled, so you need to go to Settings/Configure Krita/Python scripts and enable the scripts you want to use.

Help with the release!

We’re having our hands full with tasks like coding, bug fixing, manual updating… More than full! One task that looks like it’s going to slip is creating a cool what-new-in-4 release video. So: if you’re good at creating videos and want to help the team, please join us on #krita on irc.freenode.net and help us out!

Windows

Note for Windows users: if you encounter crashes, please follow these instructions to use the debug symbols so we can figure out where Krita crashes. On Windows, gmic-qt is included.

Linux

On Linux, you need to download the gmic-qt appimage separately. You can configure the location of gmic-qt in Krita’s settings. Krita requires the “XDG_DATA_DIRS” environment variable to be set. Most distributions do this, but if yours doesn’t, set “XDG_DATA_DIRS” to “/usr/local/share/:/usr/share/” as a workaround. Next build Krita will do this by itself.

(If, for some reason, Firefox thinks it needs to load this as text: to download, right-click on the link.)

OSX/macOS

The minimum version of OSX/macOS is 10.11

Note: the python, gmic-qt and pdf plugins are not available on OSX.

md5sums

For all downloads:

Support Krita

Krita is a free and open source project. Please consider supporting the project with donations or by buying training videos or the artbook! With your support, we can keep the core team working on Krita full-time.


Older blog entries

 

 


Planet KDE is made from the blogs of KDE's contributors. The opinions it contains are those of the contributor. This site is powered by Rawdog and Rawdog RSS. Feed readers can read Planet KDE with RSS, FOAF or OPML.