Die Antwort auf meine Frage lautet:
- Launcher.cpp, unityshell.cpp, DashController.cpp und HudController.cpp für Unity Version <7.4.0 und
- Launcher.cpp und UnitySettings.ccp für Unity Version 7.4.0
aus dem Unity-Quellpaket.
Aber ich beantworte mehr als das, da jeder, der nach der Antwort auf meine Frage sucht, auch interessiert sein wird, was mit diesen Quelldateien zu tun ist.
Inhalt:
A. Kompilieren Sie sich selbst oder
B. Holen Sie sich die Binärdatei
Haftungsausschluss: Ich habe überhaupt keine Ahnung und dies wurde nur am 12.04 mit der Einheit 5.20.2, am 14.04 mit der Einheit 7.2.6, am 15.10 mit der Einheit 7.3.2 und am 16.04 mit der Einheit 7.4.0 getestet
A. Kompilieren Sie Unity, um den Launcher nicht anzuzeigen
0. Für die Ungeduld
Dieses Skript sollte mindestens für 12.04, 14.04 und 15.10 funktionieren. Einfach nach Bedarf am Ende auskommentieren:
#!/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
Starten Sie dann Unity neu und Sie sind fertig.
1. Suchen Sie nach den richtigen Quelldateien
Nach einigem Ausprobieren habe ich herausgefunden, dass die Quelldateien geändert werden müssen
- Launcher.cpp -> füge eine Zeile hinzu, um den Launcher nicht mehr anzuzeigen
- unityshell.cpp, DashController.cpp und HudController.cpp -> setzen Sie die Breite des Launchers auf Null
Alle vier Dateien sind im Quellpaket "unity" enthalten.
2. Holen Sie sich die Quellen
Ich musste das Paket xserver-xorg-video-dummy-lts- {Ihre HWE-Version} manuell installieren, um einige Abhängigkeitsprobleme zu lösen, bevor ich die Build-Deps für Unity installieren konnte:
sudo apt-get install xserver-xorg-video-dummy-lts-{put your HWE name here}
Sie können den Namen (die Version) Ihres HWE mit diesem Befehl finden:
dpkg-query -l xserver*-lts-* | grep ^ii | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u
Danach funktionierte der Rest:
sudo apt-get build-dep unity
apt-get source unity
cd unity-*
3. Fügen Sie eine Zeile in Launcher.cpp ein
find . -iname launcher.cpp -exec gedit {} \;
Suchen Sie nach der Funktion "void Launcher :: DrawContent (nux :: GraphicsEngine & GfxContext, bool force_draw)" und geben Sie "return;" gerade an seinem Körper beginnt so:
void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
{
return; //dont show launcher anymore
...
Dies reicht aus, um den Launcher nicht mehr anzuzeigen. Aber der Bindestrich und das Geräusch lassen den Platz für den Starter auf der linken Seite des Bildschirms ungenutzt.
4. Setzen Sie die Launcher-Breite in unityshell.cpp, DashController.cpp und HudController.cpp / UnitySettings.cpp auf Null
Für die Einheit <7.4.0:
Verwenden Sie einen Editor, um alle Vorkommen von "launcher_width =" durch "launcher_width = 0; //" in unityshell.cpp, DashController.cpp und HudController.cpp zu ersetzen.
Oder verwenden Sie einfach diesen Befehl
for i in unityshell.cpp DashController.cpp HudController.cpp; do find . -iname $i -exec sed -i -e 's/launcher_width =/launcher_width =0; \/\//' {} \; ; done
Für die Einheit 7.4.0:
Suchen Sie die Datei UnitySettings.cpp und ersetzen Sie den Rückgabewert am Ende von LauncherSize wie folgt:
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];
}
Dies ist nur erforderlich, wenn der Bindestrich direkt links auf dem Bildschirm angezeigt werden soll, ohne dass der Launcher einen Rand verwendet hätte.
5. Stellen Sie im Changelog die richtige Version ein
In meinem Fall (12.04, Unity 5.20.2) musste ich die Version der Unity-Quelle von 5.20 auf 5.20.2 ändern
EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2)
vor dem Kompilieren, um beschädigte Abhängigkeiten bei der Installation zu vermeiden. Vergessen Sie nicht, die Datei zu speichern.
6. Kompilieren und installieren
Dann habe ich dies neu kompiliert:
dpkg-buildpackage -rfakeroot -d -us -uc -b
Installierte das neue Paket:
sudo dpkg -i ../unity_*.deb
(Soweit ich es sehen und testen kann, wird nur die Datei benötigt
find . -name libunityshell.so | grep unity/usr/lib/compiz/libunityshell.so
Das Ersetzen von /usr/lib/compiz/libunityshell.so durch dieses neue sollte ausreichen, aber wenn Sie sicher sein möchten, installieren Sie einfach das neue Unity-Paket wie oben beschrieben.)
7. Stellen Sie den Launcher auf Autohide
# 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
Das ist es. Einheit neu gestartet und der Launcher ging weg!
B. Falls Sie lieber vertrauen und nur die Binärdatei erhalten möchten
Wenn Sie es vorziehen, die Binärdatei und Ihre Kombination aus Unity-Version und PC-Architektur zu erhalten
unity --version
getconf LONG_BIT
finden Sie unten, laden Sie einfach das richtige Paket herunter
32bit
64bit
und überprüfen Sie die Deb-Datei nach dem Download
md5sum unity_*.deb
Das Ergebnis sollte eines davon sein
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
Dann installieren Sie das Paket
sudo dpkg -i unity_*.deb
Stellen Sie den Launcher so ein, dass Unity automatisch ausgeblendet und neu gestartet wird. Das ist es!
Falls etwas schief geht und die Einheit nicht beginnt:
sudo apt-get install --reinstall unity
Wenn alles funktioniert, möchten Sie möglicherweise verhindern, dass das neue Paket aktualisiert wird:
echo "unity hold" | sudo dpkg --set-selections
Auf meinem PC wurde nur die Datei "unity_5.20.2_i386_nolauncher.deb" übersetzt. Die anderen Deb-Dateien wurden auf sogenannten "Cloud-Computern" (weil Maschinenräume so stark wie Wolken aussehen ...) mit dieser Variation des Skripts erstellt:
#!/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/')