web-dev-qa-db-fra.com

Compiler Unity sans lanceur

Je voudrais modifier l'unité pour ne pas montrer le lanceur (barre latérale gauche) du tout. Je ne cherche aucune solution qui permettrait au lanceur d'être visible dans certains cas. Je veux vraiment qu'il disparaisse complètement. C’est un cadeau pour mon fiancé et je souhaite obtenir le facteur d’acceptation de la femme le plus élevé possible pour son ordinateur portable Linux qui exécute un docky dock avec des icônes sophistiquées qui lui donnent l’impression de appartenir à cette société connue et fruitée.

Des astuces sur quels paquets et quels fichiers sources je devrais étudier?

J'espère que ce sera aussi simple que de commenter la ligne avec "unity.launcher.show ()" et de la recompiler :-)

Je vous remercie!

17
JLTD

La réponse à ma propre question est:

  • Launcher.cpp, Unityshell.cpp, DashController.cpp et HudController.cpp pour la version de l'unité <7.4.0 et
  • Launcher.cpp et UnitySettings.ccp pour Unity version 7.4.0

à partir du paquet source unit.

Mais je réponds plus que cela, car tout le monde à la recherche de la réponse à ma question voudra également savoir quoi faire avec ces fichiers sources.

Contenu:
A. Compilez-vous ou
B. Récupère le binaire

Disclaimer: Je n'ai aucune idée AT ALL et cela n'a été testé que le 12.04 avec l'unité 5.20.2, le 14.04 avec l'unité 7.2.6, le 15.10 avec l'unité 7.3.2, et le 16.04 avec l’unité 7.4.0

A. Compiler Unity pour ne pas montrer le lanceur

enter image description here

0. Pour l'impatience

Ce script devrait fonctionner au moins pour 12.04, 14.04 et 15.10. Juste commentez à la fin si nécessaire:

#!/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

Puis redémarrez l'unité et vous avez terminé.

1. Recherchez les bons fichiers source

Après quelques essais et erreurs, j'ai découvert que les fichiers source à modifier sont

  • Launcher.cpp -> ajoute une ligne pour ne plus afficher le lanceur
  • unityshell.cpp, DashController.cpp et HudController.cpp -> définir la largeur du lanceur à zéro

Les quatre fichiers sont contenus dans le paquet source "unit".

2. Obtenir les sources

J'ai dû installer le paquet xserver-xorg-video-dummy-lts- {votre version de HWE} manuellement afin de résoudre certains problèmes de dépendance avant de pouvoir installer les build-deps pour l'unité:

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

Vous pouvez trouver le nom (version) de votre HWE avec cette commande:

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

Après cela, le reste a fonctionné:

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

3. Mettez une ligne dans Launcher.cpp

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

Recherchez la fonction "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" et mettez un "return;" juste au début de son corps, comme ceci:

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

Cela suffit pour ne plus montrer le lanceur. Mais le tiret et le hud laisseront toujours la place inutilisée pour le lanceur sur le côté gauche de l'écran.

4. Définissez la largeur du lanceur sur zéro dans les fichiers unityshell.cpp, DashController.cpp et HudController.cpp/UnitySettings.cpp .

Pour l'unité <7.4.0:

Utilisez un éditeur pour remplacer toutes les occurrences de "launcher_width =" par "launcher_width = 0; //" dans unityshell.cpp, DashController.cpp et HudController.cpp.
Ou utilisez simplement cette commande

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

Pour l'unité 7.4.0:

Recherchez le fichier UnitySettings.cpp et remplacez la valeur de retour à la fin de LauncherSize comme ceci:

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];
}

Cela n’est nécessaire que si vous souhaitez que le tiret soit affiché à droite de l’écran, sans aucune marge qui aurait été utilisée par le lanceur.

5. Définir la bonne version dans le changelog

Dans mon cas (12.04, unité 5.20.2) je devais changer la version de la source de l’unité de 5.20 à 5.20.2 en utilisant

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

avant de compiler pour éviter d'avoir des dépendances brisées lors de l'installation. N'oubliez pas de sauvegarder le fichier.

6. Compiler et installer

Ensuite, j'ai recompilé en utilisant ceci:

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

Installé le nouveau paquet:

Sudo dpkg -i ../unity_*.deb

(D'après ce que je peux voir et tester, le seul fichier réellement nécessaire est

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

Remplacer /usr/lib/compiz/libunityshell.so par celui-ci devrait suffire, mais si vous voulez être sûr, installez simplement le nouveau paquet d'unité comme décrit ci-dessus.)

7. Définir le lanceur pour masquer automatiquement

# 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

C'est ça. Unité redémarrée et le lanceur est parti!


B. Si vous préférez faire confiance et obtenir le binaire

Si vous préférez obtenir le binaire et votre combinaison de version unitaire et d'architecture PC

unity --version
getconf LONG_BIT

peut être trouvé ci-dessous, il suffit de télécharger le bon package

32bit

64bit

et vérifiez le fichier deb après le téléchargement

md5sum unity_*.deb

Le résultat devrait être l'un de ces

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

Puis installez le paquet

Sudo dpkg -i unity_*.deb

définir le lanceur pour masquer automatiquement et redémarrer l'unité. C'est ça!

Au cas où quelque chose ne va pas et que l’unité ne commence pas:

Sudo apt-get install --reinstall unity

Mais si tout fonctionne, vous voudrez peut-être empêcher la mise à jour du nouveau package:

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


Seul le fichier "Unity_5.20.2_i386_nolauncher.deb" a été compilé sur mon PC. Les autres fichiers deb ont été créés sur des "ordinateurs en nuage" (car les salles des machines ressemblent tellement à des nuages ​​...) en utilisant cette variante du 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/')
20
JLTD