Compile Unity sin lanzador

17

Me gustaría modificar la unidad para no mostrar el lanzador (barra lateral izquierda) en absoluto . No estoy buscando ninguna solución que permita que el iniciador sea visible en algunos casos. Realmente quiero que desaparezca por completo. Es un regalo para mi prometido y quiero lograr el Factor de aceptación de la mujer más alto posible para su computadora portátil Linux que está ejecutando un docky dock con iconos elegantes que hacen que parezca ser de esa conocida y afrutada compañía.

¿Alguna pista sobre qué paquetes y qué archivos fuente debo estudiar?

Espero que sea tan fácil como comentar la línea con "unity.launcher.show ()" y volver a compilar :-)

¡Gracias!

JLTD
fuente
¿Realmente necesitas unidad, si no hay distribuciones de Ubuntu que se parecen mucho a las manzanas, solo tienes que desmarcar: show-filesystem, -home, etc. desde el editor de configuración! y ya estas listo!
Ken Mollerup

Respuestas:

20

La respuesta a mi propia pregunta es:

  • Launcher.cpp, unityshell.cpp, DashController.cpp y HudController.cpp para la versión de la unidad <7.4.0 y
  • Launcher.cpp y UnitySettings.ccp para unity versión 7.4.0

del paquete fuente de la unidad.

Pero estoy respondiendo más que eso, ya que todos los que buscan la respuesta a mi pregunta también estarán interesados ​​en saber qué hacer con esos archivos fuente.

Contenido:
A. Compílate o
B. Obtén el binario

Descargo de responsabilidad: no tengo idea en absoluto y esto se probó solo en 12.04 con la unidad 5.20.2, en 14.04 con la unidad 7.2.6, en 15.10 con la unidad 7.3.2 y en 16.04 con la unidad 7.4.0

A. Compile Unity para no mostrar el lanzador

ingrese la descripción de la imagen aquí

0. Por la impaciencia

Este script debería funcionar al menos para 12.04, 14.04 y 15.10. Simplemente descomente al final según sea necesario:

#!/bin/bash
mkdir temp-build-dir; cd temp-build-dir
export HWE=$(dpkg-query -l xserver*-lts-* | grep ^ii  | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u)
sudo apt-get install unity xserver-xorg-video-dummy-lts-$HWE
sudo apt-get build-dep unity
sudo apt-get install apt-show-versions devscripts dpkg-dev fakeroot nano
apt-get source unity
cd unity-*
# you can leave the comment field in the changelog empty but dont forget to save the file
EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2) 
find . -iname Launcher.cpp -exec sed -i -e '1,/void Launcher::DrawContent(nux::GraphicsEngine/b' -e '0,/{/s//{\nreturn;/' {} \;
# for unity 7.4.0 comment out this for statement and read the explanation Nr. A.4
for i in unityshell.cpp DashController.cpp HudController.cpp; do  
    find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; 
done
dpkg-buildpackage -rfakeroot -d -us -uc -b
sudo dpkg -i ../unity_*.deb
# For 12.04 use:
# gconftool --type Integer --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 1
# For 14.04 use:
# dconf write "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode" 1

Luego reinicia la unidad y listo.

1. Busque los archivos fuente correctos

Después de una prueba y error, descubrí que los archivos de origen que se van a cambiar son

  • Launcher.cpp -> agrega una línea para no mostrar más el lanzador
  • unityshell.cpp, DashController.cpp y HudController.cpp -> establece el ancho del lanzador en cero

Los cuatro archivos están contenidos en el paquete fuente "unidad".

2. Obtenga las fuentes

Tuve que instalar el paquete xserver-xorg-video-dummy-lts- {su versión HWE} manualmente para resolver algunos problemas de dependencia antes de poder instalar los build-deps para la unidad:

sudo apt-get install xserver-xorg-video-dummy-lts-{put your HWE name here}

Puede encontrar el nombre (versión) de su HWE con este comando:

dpkg-query -l xserver*-lts-* | grep ^ii  | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u

Después de eso, el resto funcionó:

sudo apt-get build-dep unity
apt-get source unity
cd unity-*

3. Pon una línea en Launcher.cpp

find . -iname launcher.cpp -exec gedit {} \;

Busque la función "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" y ponga un "return;" justo en su cuerpo comienza así:

void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
{
  return; //dont show launcher anymore
  ...

Esto es suficiente para no mostrar más el lanzador. Pero el tablero y el hud todavía dejarán el lugar para el lanzador en el lado izquierdo de la pantalla sin usar.

4. Establezca el ancho del iniciador en cero en unityshell.cpp, DashController.cpp y HudController.cpp / UnitySettings.cpp

Para la unidad <7.4.0:

Use un editor para reemplazar todas las ocurrencias de "launcher_width =" con "launcher_width = 0; //" en unityshell.cpp, DashController.cpp y HudController.cpp.
O simplemente usa este comando

for i in unityshell.cpp DashController.cpp HudController.cpp; do find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; ; done

Para la unidad 7.4.0:

Busque el archivo UnitySettings.cpp y reemplace el valor de retorno al final de LauncherSize de esta manera:

int Settings::LauncherSize(int monitor) const
{
  if (monitor < 0 || monitor >= (int)monitors::MAX)
  {
    LOG_ERROR(logger) << "Invalid monitor index: " << monitor << ". Returning 0.";
    return 0;
  }

  return 0; // pimpl->launcher_sizes_[monitor];
}

Esto es necesario solo si desea que el guión se muestre justo en el lado izquierdo de la pantalla, sin ningún margen que hubiera sido utilizado por el iniciador.

5. Establezca la versión correcta en el registro de cambios

En mi caso (12.04, unity 5.20.2) tuve que cambiar la versión de la fuente de la unidad de 5.20 a 5.20.2 usando

EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2) 

antes de compilar para evitar tener dependencias rotas al instalar. No olvides guardar el archivo.

6. Compilar e instalar

Luego recompilé usando esto:

dpkg-buildpackage -rfakeroot -d -us -uc -b

Instalado el nuevo paquete:

sudo dpkg -i ../unity_*.deb

(Por lo que puedo ver y probar, el único archivo realmente necesario es

find . -name libunityshell.so | grep unity/usr/lib/compiz/libunityshell.so

Reemplazar /usr/lib/compiz/libunityshell.so con el nuevo debería ser suficiente, pero si quiere estar seguro, simplemente instale el nuevo paquete de la unidad como se escribió anteriormente.

7. Configure el iniciador para que se oculte automáticamente

# For 12.04:
gconftool --type Integer --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 1
# For 14.04:
dconf write "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode" 1

Eso es. ¡Reinició la unidad y el lanzador se fue!


B. En caso de que prefieras confiar y solo obtener el binario

Si prefiere obtener el binario y su combinación de versión unit y arquitectura de PC

unity --version
getconf LONG_BIT

se puede encontrar a continuación, solo descargue el paquete correcto

32bit

64bit

y verifique el archivo deb después de la descarga

md5sum unity_*.deb

El resultado debería ser uno de estos

0a5f7fc9255262e5803656d83f84f7c5  unity_5.20.0-0ubuntu3_amd64_nolauncher.deb
717dc41f4cad6410c997e1014f5f3f1d  unity_5.20.0-0ubuntu3_i386_nolauncher.deb
594eb8b87f8a56697865c051c4db5073  unity_5.20.2_i386_nolauncher.deb
8ed070afa4d7d6da8222d03b8ad5ebf3  unity_7.2.6+14.04.20160408-0ubuntu1_amd64_nolauncher.deb
abd32e40e8a10bd603b9fc44014cb179  unity_7.2.6+14.04.20151021-0ubuntu1_i386_nolauncher.deb
43c56b889028bf368da01780c0a099b9  unity_7.3.2+15.10.20151016-0ubuntu1_amd64_nolauncher.deb
64474d1a8280ed4113d748a57422ddcc  unity_7.3.2+15.10.20151016-0ubuntu1_i386_nolauncher.deb
4fecdb9b4f590e00609baa3b98f55cc0  unity_7.4.0+16.04.20160715-0ubuntu1_amd64_nolauncher.deb

Luego instale el paquete

sudo dpkg -i unity_*.deb

configura el iniciador para que se oculte automáticamente y reinicie la unidad. ¡Eso es!

En caso de que algo salga mal y la unidad no comience:

sudo apt-get install --reinstall unity

Pero si todo funciona, es posible que desee evitar que se actualice el nuevo paquete:

echo "unity hold" | sudo dpkg --set-selections


Solo el archivo "unity_5.20.2_i386_nolauncher.deb" fue compilado en mi PC. Los otros archivos deb se crearon en las llamadas "computadoras en la nube" (porque las salas de máquinas se parecen mucho a las nubes ...) usando esta variación del script:

#!/bin/bash
sudo apt-get update
sudo apt-get -y dist-upgrade 
sudo apt-get -y build-dep unity
sudo apt-get -y install unity devscripts dpkg-dev fakeroot nano
mkdir temp-build-dir; cd temp-build-dir
rm -r unity-*
apt-get source unity
cd unity-*
find . -iname Launcher.cpp -exec sed -i -e '1,/void Launcher::DrawContent(nux::GraphicsEngine/b' -e '0,/{/s//{\nreturn;/' {} \;
# for unity 7.4.0 comment out this for statement and read the explanation Nr. A.4
for i in unityshell.cpp DashController.cpp HudController.cpp; do  
    find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; 
done
dpkg-buildpackage -rfakeroot -d -us -uc -j2 -b
cp ../unity_*.deb ../$(echo ../unity_*.deb | sed -e  's/.deb$/_nolauncher.deb/')
JLTD
fuente
1
Así es posible que desee mencionar que su compilado .so es de 32 bits por lo que cualquier usuarios interesados 64 bits no son mordidas por ELF equivocada
Doug
1
Buen trabajo JLTD, me gusta ver a los usuarios haciendo un esfuerzo para responder a su propia pregunta. La recompensa le dará más acceso al sitio. (Tengo que esperar 24h). Por cierto, ¿podría echar un vistazo a esta pregunta pendiente askubuntu.com/q/165888/26246 , solo necesita el HUD y creo que Unity podría construirse de forma independiente (no como complemento de compiz). Avíseme si tiene alguna idea, recaudaré una recompensa, no menos de 250 :)
user.dz
@JLTD Este archivo se elimina del servidor. ¿Puedes subirlo de nuevo? Soy una persona novata en Linux, por lo que me resulta difícil elegir la opción A
burhanuddin abbas