Servo GTK

I just checked and it seems that it has been 9 years since my last post in this blog :O

As part of my job at Amazon I started working in a GTK widget which will allow embedding a Servo Webview inside a GTK application. This was mostly a research project just to understand the current state of Servo and whether it was at a good enough state to migrate from WebkitGTK to it. I have to admit that it is always a pleasure to work with Rust and the great gtk-rs bindings. Instead, Servo while it is not yet ready for production, or at least not for what we need in our product, it was simple to embed and to get something running in just a few days. The community is also amazing, I had some problems along the way and they were providing good suggestions to get me unblocked in no time.

This project can be found in the following git repo: https://github.com/nacho/servo-gtk

I also created some Issues with some tasks that can be done to improve the project in case that anyone is interested.

Finally I leave you here a the usual mandatory screenshot:

Posted in Uncategorized | 5 Comments

Wing

Wing is a library which provides GLib-like API to some Windows API.

The goal of this library is twofold:

  • provide GLib-friendly integration points with Windows specific concepts
  • be a testing ground for API that may be included in GLib/GIO/Gtk+ once they are proven to be generally useful

Currently it already provides api for:

  • Named pipes
  • Windows services
  • A GSource to poll from windows handles
  • Utilities to get the type of operating system and the version.

You can find the git repository in: https://git.gnome.org/browse/wing

As usual if you are interested in this library, patches are very welcomed.

 

Posted in Uncategorized | 3 Comments

Visual Studio/gtk-win32 status

As you may know gtk-win32 is our build system that makes it easy to build all the GTK+ stack with Visual Studio. This blog will try to sum up some of the changes and updates that happened during the last few months:

  • gettext has been updated to the version 0.19.7. It is still a bit of a pain to get it updated but Fan provided the new visual studio projects and the downstream patches required for it to build properly. He also told me that things are changing upstream so soon we will probably be able to build it directly from an upstream tarball.
  • We have added the possibility to build Debug or Release versions of the projects. Before only release versions were built, but as you may know Visual Studio will use different runtimes depending on whether you have release or debug so to avoid problems it is suggested to always use the same runtime for all the dependencies of your project.
  • cairo, pixman, libxml2, harfbuzz, libpng are now using the upstream build system. This makes our life easier to update them.
  • We have updated to the last version all the projects.
  • Added support for Git projects. This allows to build from a clone instead of from a tarball.
  • Created a new library called Wing. It provides utilities that are windows specific. To highlight some of them, Named pipes or Windows services.
  • New projects have been added: json-glib, grpc, json-c, leveldb, libmicrohttpd, libssh, libssh2, protobuf, protobuf-c, x264, FFmpeg, lz4, adwaita-icon-theme, cogl, clutter, gtksourceview, libjpeg-turbo, libcurl, libuv, libyuv, libzip.

Feel free to give it a try and make a pull request if there is any library or application that you are missing on gtk-win32. Specially I would really like to see there GStreamer.

Posted in Uncategorized | 3 Comments

We are hiring

In march, NICE was acquired by Amazon, as part of that I became an Amazon employee and since then with my colleagues we kept improving our High Performance Computing and remote visualization technologies. If you would like to get an opportunity developing one of the most innovative and performant remote desktop solutions in the market and help us to make 3D applications first class citizens in the Cloud, please have a look at our offers and please do not hesitate to contact me or Paolo if you need more information.

Our current offers can be found here: https://www.amazon.jobs/it/locations/asti-italy

In addition to the skills listed in the announcements, a deep knowledge of the Linux graphic stack (X, OpenGL, Wayland, etc.) will be very appreciated.

Posted in Uncategorized | Leave a comment

gitg 3.20.0 for Windows

gitgApart from the release of gedit introduced on the previous post. Here you can see the last release of gitg running on Windows. There are still some minor problems with it but it is already working good enough for a daily usage. Also, it integrates with the context menu so you can right click on a folder and open it with gitg which will open the repository if it is a repository or fallback to the dash if it is not.

Download the the installer of gitg from this link.

Posted in Uncategorized | Leave a comment

gedit 3.20.1 for Windows

It wasn’t without time but I am finally proud to say that we have a new version of gedit for Windows. This was a long road getting GTK+ 3 and all the dependencies properly working and there are a lot of people behind this, so thanks to all of them for the hard work.

To download the new installer follow up this link.

Posted in Uncategorized | 14 Comments

Visual Studio status for GTK+ builds

Following up with Emmanuele’s blog posts about GTK+ being “dead” or “dying” I wanted to point out about the status of the MSVC builds for the GTK+ stack. Refer to my previous post to understand how to build it. During this cycle quite a few things have been done in order to further improve the status of the Visual Studio builds.

  • The packages have been updated in order to build GTK+ 3.18. This took longer than expected since we actually had to stick with 3.14 until we are finally able to build libepoxy which was the missing dependency in order to build GTK+ > 3.14
  • The builder is slowly starting to get support for VS 2015. This is not so easy since we had to fix glib to not use constructors but to use a DllMain. We added a patch to this bug to finally support this properly.
  • GTK+ 3.18 depends on an unreleased version of cairo. This means that we had to put some patches downstream in order to be able to build this last version of GTK+. We hope to have a new version of cairo soon though.
  • libsoup has got support for msvc projects as well as gsettings-desktop-schemas. A release is needed in order to get them into the builder.
  • glib-networking has a wip branch that adds support for msvc projects as well as TLS support for windows using openssl. For more details on this you can refer to my previous post about this.
  • libepoxy was fixed upstream in order to build with msvc, although there are still no msvc projects upstream so we had to add them to the builder.
  • We are still using an old version of harfbuzz but we are working in order to get new projects that will build the last version. This should also improve the situation for other projects depending on it, like mozilla projects or libreoffice.
  • librsvg got support for msvc projects and Federico already made a new release. Now it is just a matter of integrating it in the builder.
  • libdb and cyrus-sasl have been added to the builder.
  • libffi is now up to date on the builder.
  • gobject-introspection got also support for msvc. This is a bit more problematic to get integrated in the builder but we hope to get it done soon.

As usual Chun-wei Fan is the one to thank for keeping the msvc projects up to day and for adding the new ones.

Posted in Uncategorized | 6 Comments

Openssl backend for glib

I would like to officially announce that at NICE we have been working on a TLS backend for glib using Openssl. This still lives on the wip/openssl branch of glib-networking but hopefully next cycle we will manage to merge it to master.

Why are we not using the gnutls that is already implemented? There are a few reasons for it:

  • We needed TLS support on Windows. You may say, but gnutls is built on windows with mingw! Well, we are using Visual Studio and it does not build with it.
  • Our product has to run at least on RHEL 6, which means, we would have needed to port the current gnutls backend to the old version shipped there, it would have been possible but at the end of the day we wanted to have the same code base on both platforms.
  • We depend also on cyrus-sasl which already depends on openssl, so we didn’t want to ship two TLS backends and have twice the bugs.

During the time that I spent implemented this backend I came to the conclusion that TLS is really hard! And it would have been harder if glib-networking didn’t have all those great unit tests. Thanks to all the people that wrote them.

Posted in Uncategorized | 10 Comments

Minimap for gedit

minimap

As you may know Christian Hergert introduced a first version of the minimap for gnome-builder. During the last few days we were working on getting it merged into GtkSourceView and it was pushed to it a few days ago. Now as a final step I added it to gedit. This was one of those features that were requested for a long time so we hope that you will enjoy it!

 

Posted in Uncategorized | 10 Comments

More about Nuntius

On Friday Paolo Borelli introduced Nuntius, the small project we’ve been working on to display android notifications on a GNOME desktop.

The feedback we got in these days has been great and it is energizing to receive comments, suggestions, bug reports and even patches! Thank you!
It is probably a good idea to clarify some things and reply to some frequent questions we received.

First of all we want to stress again that what is available today is basically a prototype: as soon as we had something able to connect and show the notifications we went ahead and published it because we think “release early, release often” is the best strategy when it comes to free software. Until yesterday it was not even set up to be translated, thought that is now fixed (hint hint!).

  • Scope: we think better integration between GNOME and smartphone is a very interesting area where a lot of features could be added. People suggested being able to send SMS from your desktop application, being able to answer phone calls through a headset connected to the PC, being able to send notifications to the phone when some events occur, etc. These are all things which I would love to see in GNOME, but I am not sure they belong in Nuntius: for now we think we should focus on one thing: showing phone notifications. Should these other features be part of Nuntius? Should they be programs that complement Nuntius? Should they be part of a larger effort that supersedes Nuntius? Just jump in and help us out to shape the answer to these questions!
  • Bluetooth: we selected bluetooth instead of wifi because it seemed a natural fit for the task: it gives us discovery and pairing of devices out of the box, it gives us a meaningful concept of “proximity” and in our understanding it uses way less power (we do not have hard data, but we keep Nuntius running on our phone and we do not see it show up among the top apps using the battery). The fact that wearables like smart watches use bluetooth seemed to validate our choice. With that said, we have not ruled out also using wifi and help in that direction is more than welcome: for instance we also hit a technical snag in our initial test using plain TCP: the communication would be interrupted once the phone suspends… I am pretty sure this is solvable, but we did not investigate.
  • Why not KDE-connect? the very simple answer is that we did not know about it… Nuntius is a fun project born in front of the coffee machine because we wanted to learn something about android and at the same time do something that we would use every day. We did not spend much time researching existing things, we just went ahead, fired up an editor and started a prototype. Now that we do know about it, we will surely check it out… that’s the beauty of free software!
  • Why not a standard protocol? Once again we did not research much, so I would not be surprised if we missed something and if you have any pointers they are very welcome… Our understanding is that there is a Bluetooth profile for notifications, but glancing at the spec, it is much more limited than what we need (e.g. it tells you how many notifications you have, but not the content)
  • What about iOS? Once again the answer is surprisingly simple: we do not have an iOS device, but if someone wants to start a nuntius-ios project, we would love to integrate it
Posted in Uncategorized | 24 Comments