Compiler Unity sans lanceur

17

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 veux atteindre le facteur d'acceptation de la femme le plus élevé possible pour son ordinateur portable Linux qui exécute un dock docky avec des icônes de fantaisie qui donnent l'impression d'être de cette entreprise connue et fruitée.

Des conseils sur les packages et les fichiers source que je devrais étudier?

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

Je vous remercie!

JLTD
la source
Avez-vous vraiment besoin d'unité, sinon il existe des distributions Ubuntu ressemblant beaucoup à des pommes, il vous suffit de décocher: show-filesystem, -home etc. de l'éditeur de paramètres !! et vous êtes prêt à partir!
Ken Mollerup

Réponses:

20

La réponse à ma propre question est:

  • Launcher.cpp, UnityShell.cpp, DashController.cpp et HudController.cpp pour la version Unit <7.4.0 et
  • Launcher.cpp et UnitySettings.ccp pour Unit version 7.4.0

à partir du package source de l'unité.

Mais je réponds plus que cela, car tous ceux qui recherchent la réponse à ma question seront également intéressés à savoir quoi faire avec ces fichiers source.

Contenu:
A. Compilez-vous ou
B. Obtenez le binaire

Avis de non-responsabilité: je n'ai aucune idée du tout 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

entrez la description de l'image ici

0. Pour l'impatience

Ce script devrait fonctionner au moins pour 12.04, 14.04 et 15.10. Décommentez simplement à 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

Ensuite, 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 -> ajouter 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 "Unity".

2. Obtenez les sources

J'ai dû installer manuellement le paquet xserver-xorg-video-dummy-lts- {votre version HWE} pour 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 resteront inutilisés pour le lanceur sur le côté gauche de l'écran.

4. Définissez la largeur du lanceur sur zéro dans 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 voulez que le tiret soit affiché juste à gauche de l'écran, sans aucune marge qui aurait été utilisée par le lanceur.

5. Définissez la bonne version dans le journal des modifications

Dans mon cas (12.04, unité 5.20.2), j'ai dû changer la version de la source d'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 cassées lors de l'installation. N'oubliez pas d'enregistrer le fichier.

6. Compilez et installez

Ensuite, j'ai recompilé en utilisant ceci:

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

Installation du nouveau package:

sudo dpkg -i ../unity_*.deb

(Pour autant que je puisse le voir et le tester, le seul fichier réellement nécessaire est

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

Le remplacement de /usr/lib/compiz/libunityshell.so par ce nouveau devrait être suffisant, mais si vous voulez en être sûr, installez simplement le nouveau paquet d'unité comme écrit ci-dessus.)

7. Réglez 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. L'unité a redémarré et le lanceur est parti!


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

Si vous préférez obtenir le binaire et votre combinaison de version d'unité 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

Installez ensuite le package

sudo dpkg -i unity_*.deb

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

Au cas où quelque chose se passe mal et que l'unité ne démarre pas:

sudo apt-get install --reinstall unity

Mais si tout fonctionne, vous souhaiterez 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 ce que l'on appelle des "ordinateurs cloud" (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/')
JLTD
la source
1
Eh bien, vous voudrez peut-être mentionner que votre fichier .so compilé est de 32 bits afin que tous les utilisateurs 64 bits intéressés ne soient pas mordus par le mauvais ELF
doug
1
Beau travail JLTD, j'aime voir les utilisateurs faire des efforts pour répondre à leur propre question. La prime vous donnera plus d'accès au site. (Je dois attendre 24h). BTW, pourriez-vous jeter un coup d'œil sur cette question en suspens askubuntu.com/q/165888/26246 , il n'a besoin que du HUD, et je crois que Unity pourrait être construit de manière autonome (pas en tant que plugin compiz). Faites-moi savoir si vous avez une idée, je lèverai une prime, pas moins de 250 :)
lèverai user.dz
@JLTD Ce fichier est supprimé du serveur. pouvez-vous le télécharger à nouveau. Je suis une personne débutante à Linux, donc il devient difficile pour moi de choisir l'option A
Burhanuddin Abbas