Dock Plank con efecto zoom en Fedora

Fedora tiene disponible desde sus repositorios “Plank”, un dock muy útil y simple que nos facilita la vida al estilo Mac xD, pero le falta un elemento para que sea sencillamente perfecto, el efecto de zoom. Aunque Plank lo trae por defecto en Ubuntu por ejemplo, en Fedora debido a un “problema de patentes” se optó por parcharlo y eliminarlo (gracias Apple).

Y pues como un dock sin zoom no es un buen dock, opté por compilar el código sin el parche que pusieron en Fedora y listo, el dock de Plank con zoom sin problemas.

Empaquete todo el código en un RPM para que lo puedas instalar sin tener que compilarlo, si es que no quieres batallar, o si eres un paranoico y no quieres instalar un rpm, puedes compilarlo tu mismo, no es que sea tampoco muy difícil compilarlo.

Descargar RPM de Plank con Zoom

Para descargar el paquete rpm de Plank con el efecto zoom incluido, puedes obtenerlo desde el siguiente enlace

RPM: https://alk.mx/download/rpm-plank-0-11-3-efecto-zoom/

Código fuente: https://launchpad.net/plank

Error al iniciar Docky: Could not load type ‘SessionManager.SystemManager+IUPowerProxy’

Cuando actualicé de Fedora 22 a 23 tuve un problema al iniciar Docky, me daba el siguiente error:

[SystemService] Could not initialize needed dbus service: 'Could not load type 'SessionManager.SystemManager+IUPowerProxy' from assembly 'DBus.Proxies, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' because it is implements the inaccessible interface 'SessionManager.SystemManager+IUPower'.'
[Info  11:18:46.227] [SystemService]   at System.Reflection.Emit.TypeBuilder.CreateTypeInfo () [0x00000] in :0 
  at System.Reflection.Emit.TypeBuilder.CreateType () [0x00000] in :0 
  at DBus.TypeImplementer.GetImplementation (System.Type declType) [0x00000] in :0 
  at DBus.BusObject.GetObject (DBus.Connection conn, System.String bus_name, DBus.ObjectPath object_path, System.Type declType) [0x00000] in :0 
  at DBus.Connection.GetObject (System.Type type, System.String bus_name, DBus.ObjectPath path) [0x00000] in :0 
  at DBus.Connection.GetObject[IUPower] (System.String bus_name, DBus.ObjectPath path) [0x00000] in :0 
  at SessionManager.SystemManager.Initialize () [0x00000] in :0 
Error while getting object for node in path '/Docky/ItemProvider'.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IndexOutOfRangeException: Array index is out of range.
  at Docky.Items.ProxyDockItem.ItemChanged () [0x00000] in :0 
  at Docky.Items.ProxyDockItem..ctor (Docky.Items.AbstractDockItemProvider provider, IPreferences prefs) [0x00000] in :0 
  at SessionManager.SessionManagerItem..ctor () [0x00000] in :0 
  at SessionManager.SessionManagerItemProvider..ctor () [0x00000] in :0 
  at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00000] in :0 
  --- End of inner exception stack trace ---
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00000] in :0 
  at System.Activator.CreateInstance (System.Type type, Boolean nonPublic) [0x00000] in :0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in :0 
  at Mono.Addins.TypeExtensionNode.CreateInstance () [0x00000] in :0 
  at Mono.Addins.InstanceExtensionNode.GetInstance () [0x00000] in :0 
  at Mono.Addins.InstanceExtensionNode.GetInstance (System.Type expectedType) [0x00000] in :0 
  at Mono.Addins.ExtensionNode.GetChildObjectsInternal (System.Type arrayElementType, Boolean reuseCachedInstance) [0x00000] in :0 
Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.NullReferenceException: Object reference not set to an instance of an object
  at Docky.Items.ProxyDockItem.get_Square () [0x00000] in :0 
  at Docky.Items.AbstractDockItem.m__0 () [0x00000] in :0 
  at GLib.Idle+IdleProxy.Handler () [0x00000] in :0 
   at GLib.ExceptionManager.RaiseUnhandledException(System.Exception e, Boolean is_terminal)
   at GLib.Idle+IdleProxy.Handler()
   at Gtk.Application.gtk_main()
   at Gtk.Application.Run()
   at Docky.Docky.Main(System.String[] args)

El problema con esto es que con Fedora 23 (no se con que otra distro pase también) Docky ya no puede manejar el “docklet” de “Manejo de sesión” (Session Manager), lo que nos permitía apagar o reinicar la máquina desde el dock, así que, por el momento, NO USES ESE DOCKLET.docky_funciona-no-usar-sesion-manager

Para corregir esto solo hay que eliminar los archivos de configuración de tu home y listo, en mi caso con las siguientes carpetas fue suficiente:

/home/tu_usuario/.cache/docky/
/home/tu_usuario/.local/share/docky/

docky_error_al_iniciarDespués inicias Docky y listo.