Port your application from GNOME 2 to GNOME 3
GNOME's developer technologies have been dramatically improved for version 3.0, making them faster, easier to use, and delivering enhanced user experiences. If you are responsible for an application which makes use of GNOME's developer technologies, it is recommended that you port to GNOME 3 in order to take advantage of these improvements.
The following guide is a checklist of the steps required to port a piece of GNOME 2 software to version 3.
Essential
The following procedures are essential parts of the porting process:
- Do not use deprecated libraries:
libglade: use GtkBuilder instead.
- libgnome, libgnomeui: use GTK+ features directly instead.
- libsexy: use GTK+ features directly instead.
Migration guide for SexyIconEntry and SexyUrlLabel
- gnome-vfs: use GIO instead.
Bonobo: use GTK+ features and GDBus (see below).
- Make your GTK+ 2 application GTK+ 3 compliant:
Only use toplevel Glib / GTK+ headers:
- Do not use deprecated GLib / GTK+ symbols:
- Compile your app with -DGSEAL_ENABLE:
- Use Cairo instead deprecated GDK api:
Port your GTK+ 2 application to GTK+ 3: migration guide
Fix your .desktop file: GNOME Goal
Use -symbolic icons in the cases specified in the GNOME HIG. More information:
- Include a high-resolution application icon. Sizes covered should include 16x16, 22x22 (24x24), 32x32, 48x48 and 256x256.
See the installation instructions and style guide.
If your application reads proxy configuration from GConf (such as the keys under /system/proxy), you will need to update your code to look at the new DConf proxy keys. See DevGnomeOrg/Gnome3PortingGuide/ProxyConfiguration.
Additional steps
While these are not essential, the following steps are advised. They will prevent you from having to do further porting work in the future, and will enable you to take advantage of the full range of the improvements in GNOME 3.
Port your application to GtkApplication, particularly if you are using libunique.
Use GSettings instead of GConf.
Use GDBus instead of dbus-glib.
Port your documentation to the new Mallard format.
Add GObject Introspection support to your library.
Use the correct icon names: GNOME Goal.
If you use Python, move to the new introspection-based PyGObject bindings.
Use the XDG Base Directory Specification.
If your module installs a panel applet, write a gnome-shell extension instead.
All the content of this page is under Creative Commons Attribution 3.0 License