Como hacer que las categorías de Whisker Menu aparezcan a la Izquierda

Ayer publiqué un post en donde les compartí un Wisker Menu modificado por mi, en el cual las categorías se muestran a la izquierda y las aplicaciones a la derecha (como en cualquier menú  tradicional), el caso es que a petición de Eduardo, hoy les mostraré como pueden realizar este cambio ustedes mismos.

Para empezar debo aclarar que no es nada del otro mundo (de hecho carece de ciencia), por lo tanto inclusive aquellos sin conocimientos en programación pueden hacerlo, eso sí, acatando mis instrucciones al pie de la letra.

Paso 1

Descargar e instalar las herramientas indispensables para compilar:


aptitude install build-essential checkinstall cmake libexo-1-dev libgarcon-1-0-dev libxfce4ui-1-dev libxfce4util-dev xfce4-panel-dev make git

Paso 2

Clonamos el repositorio de WiskerMenu desde la terminal con el siguiente comando.

git clone https://github.com/gottcode/xfce4-whiskermenu-plugin

Paso 3

 

Abrimos nuestro explorador de archivos (Thunar) y nos ubicamos en el directorio WiskerMenu dentro de nuestra carpeta /home, posteriormente ingresamos al subdirectorio /panel-plugin, una vez allí, abrimos el archivo window.cpp con nuestro editor favorito (gedit, leafpad, mousepad, geany) y en él identificamos las siguientes lineas.

Nota: Perdonen si la indentación en el blog no se muestra.

 

	// Create box for packing launcher pages
	m_panels_box = GTK_BOX(gtk_vbox_new(false, 0));
	gtk_box_pack_start(m_contents_box, GTK_WIDGET(m_panels_box), true, true, 0);
	gtk_box_pack_start(m_panels_box, m_favorites->get_widget(), true, true, 0);
	gtk_box_pack_start(m_panels_box, m_recent->get_widget(), true, true, 0);
	gtk_box_pack_start(m_panels_box, m_applications->get_widget(), true, true, 0);

	// Create box for packing sidebar
	m_sidebar_box = GTK_BOX(gtk_vbox_new(false, 0));
	gtk_box_pack_start(m_sidebar_box, GTK_WIDGET(m_favorites_button->get_button()), false, false, 0);
	gtk_box_pack_start(m_sidebar_box, GTK_WIDGET(m_recent_button->get_button()), false, false, 0);
	gtk_box_pack_start(m_sidebar_box, gtk_hseparator_new(), false, true, 0);

	m_sidebar = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL));
	gtk_box_pack_start(m_contents_box, GTK_WIDGET(m_sidebar), false, false, 0);
	gtk_scrolled_window_set_shadow_type(m_sidebar, GTK_SHADOW_NONE);
	gtk_scrolled_window_set_policy(m_sidebar, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);

	GtkWidget* viewport = gtk_viewport_new(gtk_scrolled_window_get_hadjustment(m_sidebar),
		gtk_scrolled_window_get_vadjustment(m_sidebar));
	gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
	gtk_container_add(GTK_CONTAINER(m_sidebar), viewport);
	gtk_container_add(GTK_CONTAINER(viewport), GTK_WIDGET(m_sidebar_box));

	GtkSizeGroup* sidebar_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
	gtk_size_group_add_widget(sidebar_size_group, GTK_WIDGET(m_sidebar));
	gtk_size_group_add_widget(sidebar_size_group, GTK_WIDGET(m_commands_align));

Lo anterior significa en palabras cristianas que, el primer elemento agregado al contenedor (digamos la ventana del menú) de izquierda a derecha,
sera el “panel_box” es decir, el área de aplicaciones, seguido del “sidebar” área de categorías, por lo tanto respetando el orden respectivo, la ventana mostrará primero las aplicaciones a la izquierda y luego las categorías a la derecha.

Por lo tanto lo único que debemos hacer para cambiar esto, es invertir el orden en el que son agregados los componentes, lo que naturalmente se logra cambiando de lugar el componente que se agregará de primero; de manera práctica, cortamos la parte que dice  // Create box for packing launcher pages  hasta antes de // Create box for packing sidebar y la pegamos debajo de esta. Nos quedará de la siguiente forma.

 

 

// Create box for packing sidebar
	m_sidebar_box = GTK_BOX(gtk_vbox_new(false, 0));
	gtk_box_pack_start(m_sidebar_box, GTK_WIDGET(m_favorites_button->get_button()), false, false, 0);
	gtk_box_pack_start(m_sidebar_box, GTK_WIDGET(m_recent_button->get_button()), false, false, 0);
	gtk_box_pack_start(m_sidebar_box, gtk_hseparator_new(), false, true, 0);

	m_sidebar = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL));
	gtk_box_pack_start(m_contents_box, GTK_WIDGET(m_sidebar), false, false, 0);
	gtk_scrolled_window_set_shadow_type(m_sidebar, GTK_SHADOW_NONE);
	gtk_scrolled_window_set_policy(m_sidebar, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);

	GtkWidget* viewport = gtk_viewport_new(gtk_scrolled_window_get_hadjustment(m_sidebar),
		gtk_scrolled_window_get_vadjustment(m_sidebar));
	gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
	gtk_container_add(GTK_CONTAINER(m_sidebar), viewport);
	gtk_container_add(GTK_CONTAINER(viewport), GTK_WIDGET(m_sidebar_box));

	GtkSizeGroup* sidebar_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
	gtk_size_group_add_widget(sidebar_size_group, GTK_WIDGET(m_sidebar));
	gtk_size_group_add_widget(sidebar_size_group, GTK_WIDGET(m_commands_align));

	// Create box for packing launcher pages
	m_panels_box = GTK_BOX(gtk_vbox_new(false, 0));
	gtk_box_pack_start(m_contents_box, GTK_WIDGET(m_panels_box), true, true, 0);
	gtk_box_pack_start(m_panels_box, m_favorites->get_widget(), true, true, 0);
	gtk_box_pack_start(m_panels_box, m_recent->get_widget(), true, true, 0);
	gtk_box_pack_start(m_panels_box, m_applications->get_widget(), true, true, 0);

Bien con esto ya hemos cambiado las categorías a la izquierda y las aplicaciones a la derecha, sin embargo, si cambiamos el menú de posición a una que no sea tradicional, es decir en el borde derecho de la pantalla tendremos problemas con el re posicionamiento de los elementos del menú, les ilustro.

Por defecto WiskerMenu  ubica las aplicaciones a la izquierda y las categorías a la derecha (ya aburro con esa hablada jeje) pero esto sólo es así, cuando el menú se encuentra en las esquinas superior e inferior izquierda de la pantalla. Si por el contrario se encuentra en las esquinas derechas, el menú cambia a nuestra posición deseada (categorías izquierda; aplicaciones derecha) es ilógico lo sé, pero así lo pensaron los desarrolladores, entonces con nuestra siguiente modificación, vamos a alterar dicho reordenamiento para que sea inverso y lógico.

Paso 4

Ubicamos está linea  y en la sección else,  cambiamos m_panels_box, 2 por un 1 y m_sidebar, 1 por un 2.

if ((layout_left && !wm_settings->position_categories_alternate)
            || (!layout_left && wm_settings->position_categories_alternate))
    {
        gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_panels_box), 1);
        gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_sidebar), 2);
    }
    else
    {
        gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_panels_box), 2);
        gtk_box_reorder_child(m_contents_box, GTK_WIDGET(m_sidebar), 1);
    }

Paso 5

 

Ahora sí, guardamos nuestros cambios y procedemos a compilar, para ello abrimos una terminal en el directorio
~/xfce4-whiskermenu-plugin/panel-plugin/ y ejecutamos lo siguiente:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
make

y como súper usuario

checkinstall

Paso 6

Por último, reiniciamos panel.

xfce4-panel --restart

Paso 7

Disfruten!!!
Cualquier duda o crítica pueden dejar un comentario, saludos.

Anuncios

WhiskerMenú con categorias a la izquierda

Cuando probé por primera vez Whisker Menu no me agrado para nada que tuviera las categorías del lado derecho y las aplicaciones a la izquierda; de plano me pareció incómodo  y pensé para mi, en que pensaría el desarrollador cuando colocó las opciones de tal forma, esa vez no le di mayor importancia y desinstalé el plugin.

Ayer por la mañana decidí probar Xubuntu 14.04 y para mi sorpresa vi que traía por defecto el tan famoso Menu alternativo, lo estuve traveseando y vi que en efecto, a pesar de las maravillas que posee, era imposible colocar las categorías a la izquierda y las aplicaciones a la derecha como en los menús tradicionales (Linux Mint o KDE), por lo que me di a la tarea de remediar tal situación.

Hoy temprano bajé el código fuente (Bendito Software Libre)  lo modifiqué hasta conseguir un acomodo a mi gusto, luego, con el espíritu que caracteriza a la comunidad comparto esa modificación con ustedes, pero antes les muestro el “antes y después”

Antes

Con Categorías a la izquierda y las aplicaciones a la derecha
Con Categorías a la derecha y las aplicaciones a la izquierda

Después

Con Categorías a la izquierda y aplicaciones a la derecha
Con Categorías a la izquierda y aplicaciones a la derecha

 

https://dl.dropboxusercontent.com/u/68911480/xfce4-whiskermenu-plugin-1.3.2.gz

Una vez que bajen el archivo y los descompriman, pueden ejecutar el .deb que coloqué dentro o compilar el código.  Si les apetece lo segundo, sigan mis instrucciones.

Instalen lo siguiente:

 aptitude install build-essential checkinstall cmake libexo-1-dev libgarcon-1-0-dev libxfce4ui-1-dev libxfce4util-dev xfce4-panel-dev

Abran una terminal en donde descomprimieron el archivo, en mi caso  /home/cooper15/Descargas/xfce4-whiskermenu-plugin-1.3.2 y luego ejecuten lo siguiente.

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
make

Luego, como superusuarios escriban el siguiente comando y sigan las opciones recomendadas.

checkinstall

Por último solo queda que reinicien el panel así:

xfce4-panel --restart

Ahora espero que disfruten del Wisker Menú tanto como yo, si tienen algún inconveniente comenten. Saludos